diff --git a/datatypes/epc/domain/dwelling.py b/datatypes/epc/domain/dwelling.py index b60cec35..d7faff50 100644 --- a/datatypes/epc/domain/dwelling.py +++ b/datatypes/epc/domain/dwelling.py @@ -1,12 +1,12 @@ -from dataclasses import dataclass, field +from dataclasses import dataclass from typing import List, Optional @dataclass class PropertyDetails: - property_type: str # e.g. "House", "Flat" - built_form: str # e.g. "Mid-terrace", "Detached" - tenure: str # e.g. "Owner-occupied", "Rented Social" + property_type: str # e.g. "House", "Flat" + built_form: str # e.g. "Mid-terrace", "Detached" + tenure: str # e.g. "Owner-occupied", "Rented Social" number_of_storeys: int construction_age_band: Optional[str] = None # e.g. "1950-1966", "I: 1996 - 2002" transaction_type: Optional[str] = None @@ -19,6 +19,7 @@ class PropertyDetails: @dataclass class FloorDimensions: """Floor area and geometry for one storey of one building part.""" + total_floor_area_m2: float height_m: float heat_loss_perimeter_m: Optional[float] = None @@ -27,29 +28,29 @@ class FloorDimensions: @dataclass class WallDetails: - construction_type: str # e.g. "Cavity", "Solid masonry" - insulation_type: str # e.g. "As built", "Filled cavity", "External" + construction_type: str # e.g. "Cavity", "Solid masonry" + insulation_type: str # e.g. "As built", "Filled cavity", "External" thickness_mm: Optional[int] = None party_wall_construction_type: Optional[str] = None @dataclass class RoofDetails: - construction_type: str # e.g. "Pitched, access to loft", "Flat" - insulation_at: Optional[str] = None # e.g. "Joists", "Rafters" + construction_type: str # e.g. "Pitched, access to loft", "Flat" + insulation_at: Optional[str] = None # e.g. "Joists", "Rafters" insulation_thickness_mm: Optional[int] = None has_rooms_in_roof: bool = False @dataclass class FloorDetails: - construction_type: str # e.g. "Solid", "Suspended timber" - insulation_type: Optional[str] = None # e.g. "As built", "Insulated" + construction_type: str # e.g. "Solid", "Suspended timber" + insulation_type: Optional[str] = None # e.g. "As built", "Insulated" @dataclass class WindowDetails: - glazing_type: str # e.g. "Double glazing", "Triple glazing" + glazing_type: str # e.g. "Double glazing", "Triple glazing" orientation: Optional[str] = None frame_type: Optional[str] = None glazing_gap: Optional[str] = None @@ -60,21 +61,21 @@ class WindowDetails: @dataclass class MainHeatingSystem: - fuel: str # e.g. "Mains gas", "Oil", "Electricity" - system_type: str # e.g. "Boiler with radiators or underfloor heating" - boiler_type: Optional[str] = None # e.g. "Regular", "Combi" + fuel: str # e.g. "Mains gas", "Oil", "Electricity" + system_type: str # e.g. "Boiler with radiators or underfloor heating" + boiler_type: Optional[str] = None # e.g. "Regular", "Combi" manufacturer: Optional[str] = None model: Optional[str] = None condensing: Optional[bool] = None controls: Optional[str] = None flue_gas_heat_recovery: bool = False weather_compensator: bool = False - emitter: Optional[str] = None # e.g. "Radiators", "Underfloor" + emitter: Optional[str] = None # e.g. "Radiators", "Underfloor" @dataclass class HotWaterSystem: - source: str # e.g. "From main heating 1", "Immersion heater" + source: str # e.g. "From main heating 1", "Immersion heater" cylinder_size: Optional[str] = None insulation_type: Optional[str] = None insulation_thickness_mm: Optional[int] = None @@ -83,12 +84,12 @@ class HotWaterSystem: @dataclass class SecondaryHeatingSystem: - fuel: str # e.g. "Wood logs", "Electricity" + fuel: str # e.g. "Wood logs", "Electricity" @dataclass class VentilationDetails: - ventilation_type: str # e.g. "Natural", "Mechanical Extract - Decentralised" + ventilation_type: str # e.g. "Natural", "Mechanical Extract - Decentralised" number_of_open_flues: int = 0 number_of_closed_flues: int = 0 number_of_boiler_flues: int = 0