from datatypes.epc.construction_age_band import EpcConstructionAgeBand from datatypes.epc.walls import EpcWallDescriptions def map_cavity_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1976: return EpcWallDescriptions.cavity_no_insulation_assumed if age_band == EpcConstructionAgeBand.from_1976_to_1982: return EpcWallDescriptions.cavity_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.cavity_insulated_assumed raise NotImplementedError(f"Age band {age_band} not handled for cavity wall as built insulation mapping") def map_solid_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1976: return EpcWallDescriptions.solid_brick_no_insulation_assumed if age_band == EpcConstructionAgeBand.from_1976_to_1982: return EpcWallDescriptions.solid_brick_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.solid_brick_insulated_assumed raise NotImplementedError( f"Age band {age_band.value} not handled for solid wall insulation mapping" ) def map_timber_frame_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1950: return EpcWallDescriptions.timber_frame_no_insulation_assumed if age_band.start_year() < 1976: return EpcWallDescriptions.timber_frame_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1976): return EpcWallDescriptions.timber_frame_insulated_assumed raise NotImplementedError( f"Age band {age_band.value} not handled for timber frame wall insulation mapping" ) def map_system_build_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1976: return EpcWallDescriptions.system_no_insulation_assumed if age_band == EpcConstructionAgeBand.from_1976_to_1982: return EpcWallDescriptions.system_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.system_insulated_assumed raise NotImplementedError( f"Age band {age_band.value} not handled for system build wall insulation mapping" ) def map_granite_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1976: return EpcWallDescriptions.granite_whinstone_no_insulation_assumed if age_band == EpcConstructionAgeBand.from_1976_to_1982: return EpcWallDescriptions.granite_whinstone_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.granite_whinestone_insulated_assumed raise NotImplementedError( f"Age band {age_band.value} not handled for granite wall insulation mapping" ) def map_sandstone_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1976: return EpcWallDescriptions.sandstone_limestone_no_insulation_assumed if age_band == EpcConstructionAgeBand.from_1976_to_1982: return EpcWallDescriptions.sandstone_limestone_partial_insulated_assumed if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.sandstone_limestone_insulated_assumed raise NotImplementedError( f"Age band {age_band.value} not handled for sandstone wall insulation mapping" ) def map_cob_wall_insulation(age_band: EpcConstructionAgeBand): if age_band.start_year() < 1983: return EpcWallDescriptions.cob_as_built_average if age_band in EpcConstructionAgeBand.from_year_onwards(1983): return EpcWallDescriptions.cob_as_built_good raise NotImplementedError( f"Age band {age_band.value} not handled for cob wall insulation mapping" ) as_built_wall_classifiers = { "Cavity": map_cavity_wall_insulation, "Solid Brick": map_solid_wall_insulation, "Timber Frame": map_timber_frame_wall_insulation, "System": map_system_build_wall_insulation, "Granite": map_granite_wall_insulation, "Sandstone": map_sandstone_wall_insulation, "Cob": map_cob_wall_insulation, }