mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
86 lines
4.2 KiB
Python
86 lines
4.2 KiB
Python
from enum import Enum
|
|
from typing import List
|
|
|
|
|
|
class EpcRoofDescriptions(Enum):
|
|
# Loft
|
|
# Assumed options
|
|
pitched_insulated_assumed: str = "Pitched, insulated (assumed)"
|
|
pitched_no_insulation: str = "Pitched, no insulation"
|
|
# Insulation thickness options
|
|
loft_12mm_insulation: str = "Pitched, 12 mm loft insulation"
|
|
loft_25mm_insulation: str = "Pitched, 25 mm loft insulation"
|
|
loft_50mm_insulation: str = "Pitched, 50 mm loft insulation"
|
|
loft_75mm_insulation: str = "Pitched, 75 mm loft insulation"
|
|
loft_100mm_insulation: str = "Pitched, 100 mm loft insulation"
|
|
loft_125mm_insulation: str = "Pitched, 125 mm loft insulation"
|
|
loft_150mm_insulation: str = "Pitched, 150 mm loft insulation"
|
|
loft_175mm_insulation: str = "Pitched, 175 mm loft insulation"
|
|
loft_200mm_insulation: str = "Pitched, 200 mm loft insulation"
|
|
loft_250mm_insulation: str = "Pitched, 250 mm loft insulation"
|
|
loft_270mm_insulation: str = "Pitched, 270 mm loft insulation"
|
|
loft_300mm_insulation: str = "Pitched, 300 mm loft insulation"
|
|
loft_350mm_insulation: str = "Pitched, 350 mm loft insulation"
|
|
loft_400mm_plus_insulation: str = "Pitched, 400+ mm loft insulation"
|
|
# Insulated at rafters "Pitched, insulated at rafters"
|
|
# Rafters
|
|
# 400mm, 350mm = very good
|
|
# 200-300mm = good
|
|
# 125-175 = average
|
|
# 50-100 = poor
|
|
# 25 and below= very poor
|
|
loft_insulated_at_rafters: str = "Pitched, insulated at rafters"
|
|
# another dwelling above
|
|
another_dwelling_above: str = "(another dwelling above)"
|
|
# flat roof, which if there is observed insulation is just "flat, insulated", however there is a
|
|
# different efficiency rating depending on insulation thickness
|
|
# categories:
|
|
# 12mm = very poor & has limited insulation description
|
|
# 25, 50 = poor & has limited insulation description
|
|
# 75, 100, 125mm = average (Flat, insulated)
|
|
# 150, 175, 200, 225, 250mm = good (Flat, insulated)
|
|
# 270mm+ = very good (Flat, insulated)
|
|
# As built 2023 = Flat, insulated, Very good
|
|
# 2003 - 2006, up to 2012-2022 = Flat insulated, Good
|
|
# 1983-1990, 1996-2002 = Flat, insulated, Average
|
|
# 1976-1982 = Flat, limited insulation, poor
|
|
# 1967 - 1975 = Flat, limited insulation, Very Poor
|
|
# 1950-1966 and earlier bands = flat, no insulation, very poor
|
|
|
|
flat_insulated: str = "Flat, insulated"
|
|
flat_limited_insulation: str = "Flat, limited insulation"
|
|
flat_no_insulation: str = "Flat, no insulation"
|
|
|
|
# Thatched roof descriptions
|
|
# With Loft insulation at joists
|
|
# Thatched + 12mm = thatched, with additional insulation, average
|
|
# Thatched + 25, 50, 100, 150mm = thatched, with additional insulation, good
|
|
# Thatched + 175mm+ = thatched, with additional insulation, very good
|
|
# With loft insulation at rafters [out of scope atm]
|
|
# Unknown insulation
|
|
# Pre 1900, 1930-1949, 1967-1975, 1983-1990, 1996-2002 = "Thatched", Average
|
|
# 2003-2006, 2012-2022 = "Thatched", Good
|
|
# 2023 onwards = "Thatched", Very Good
|
|
thatched: str = "Thatched" # We see this for no insulation, has average performance
|
|
thatched_with_additional_insulation: str = "Thatched, with additional insulation"
|
|
|
|
# Sloping ceiling
|
|
# For sloping ceiling tags, we don't use any (assumed) tags so that it's unambiguous that the roof is sloped
|
|
sloping_pitched_no_insulation: str = "Pitched, no insulation"
|
|
sloping_pitched_limited_insulation: str = "Pitched, limited insulation"
|
|
sloping_pitched_insulated: str = "Pitched, insulated"
|
|
|
|
# Unknown descriptions which may get mapped later or handled via fallback
|
|
flat_as_built_unknown: str = "Flat, as built, unknown insulation"
|
|
loft_as_built_unknown: str = "Loft, as built, unknown insulation"
|
|
thatched_as_built_unknown: str = "Thatched, as built, unknown insulation"
|
|
sloping_pitched_as_built_unknown: str = "Pitched, as built, unknown insulation"
|
|
|
|
@property
|
|
def unknown_descriptions(self) -> List["EpcRoofDescriptions"]:
|
|
return [
|
|
EpcRoofDescriptions.flat_as_built_unknown,
|
|
EpcRoofDescriptions.loft_as_built_unknown,
|
|
EpcRoofDescriptions.thatched_as_built_unknown,
|
|
EpcRoofDescriptions.sloping_pitched_as_built_unknown,
|
|
]
|