Added floor class documentation

This commit is contained in:
Khalim Conn-Kowlessar 2023-06-08 18:41:15 +01:00
parent 3cfa878912
commit bb5241b695

View file

@ -1,27 +1,35 @@
from typing import Dict, Union from typing import Dict, Union, Optional
from epc_data.cleaning.cleaning_utils import extract_thermal_transmittence, search_split_description from epc_data.cleaning.cleaning_utils import extract_thermal_transmittence, search_split_description
class CleanFloor: class CleanFloor:
def __init__(self, description): def __init__(self, description: str):
"""
Constructor for CleanFloor class.
:param description: Description to be cleaned.
"""
self.description: str = description self.description: str = description
def clean(self) -> Dict[str, Union[str, bool, int, None]]: def clean(self) -> Dict[str, Union[str, bool, int, None]]:
""" """
Cleans the given description based on predefined rules.
:return: :return: Cleaned data in a dictionary format.
""" """
description_lower = self.description.lower().strip() description_lower = self.description.lower().strip()
assumed = "assumed" in description_lower assumed: bool = "assumed" in description_lower
to_unheated_space = "to unheated space" in description_lower to_unheated_space: bool = "to unheated space" in description_lower
to_external_air = "to external air" in description_lower to_external_air: bool = "to external air" in description_lower
is_suspended = "suspended" in description_lower is_suspended: bool = "suspended" in description_lower
is_solid = "solid" in description_lower is_solid: bool = "solid" in description_lower
thermal_transmittence, thermal_transmittence_unit, insulation_thickness = None, None, None thermal_transmittence: Optional[float] = None
is_valid = "invalid" not in description_lower thermal_transmittence_unit: Optional[str] = None
insulation_thickness: Optional[str] = None
is_valid: bool = "invalid" not in description_lower
if "another dwelling below" in description_lower or "other premises below" in description_lower: if "another dwelling below" in description_lower or "other premises below" in description_lower:
return self._make_clean_output( return self._make_clean_output(
@ -58,8 +66,24 @@ class CleanFloor:
) )
@classmethod @classmethod
def _find_insulation_thickness(cls, description_lower, to_unheated_space, to_external_air, is_suspended, is_solid): def _find_insulation_thickness(
cls,
description_lower: str,
to_unheated_space: bool,
to_external_air: bool,
is_suspended: bool,
is_solid: bool
) -> str:
"""
Method to find the insulation thickness from the description.
:param description_lower: Description of the floor in lower case.
:param to_unheated_space: Boolean indicating if there's an unheated space below.
:param to_external_air: Boolean indicating if the floor is exposed to external air.
:param is_suspended: Boolean indicating if the floor is suspended.
:param is_solid: Boolean indicating if the floor is solid.
:return: Insulation thickness as a string.
"""
if to_unheated_space | to_external_air | is_suspended | is_solid: if to_unheated_space | to_external_air | is_suspended | is_solid:
if to_unheated_space: if to_unheated_space:
split_on = "to unheated space," split_on = "to unheated space,"
@ -78,30 +102,31 @@ class CleanFloor:
@staticmethod @staticmethod
def _make_clean_output( def _make_clean_output(
is_valid, is_valid: bool,
has_dwelling_below, has_dwelling_below: bool,
thermal_transmittence, thermal_transmittence: Optional[float],
thermal_transmittence_unit, thermal_transmittence_unit: Optional[str],
to_unheated_space, to_unheated_space: bool,
to_external_air, to_external_air: bool,
is_suspended, is_suspended: bool,
is_solid, is_solid: bool,
assumed, assumed: bool,
insulation_thickness insulation_thickness: Optional[str]
) -> Dict[str, Union[str, bool, int, None]]: ) -> Dict[str, Union[str, bool, int, None]]:
""" """
Creates a dictionary with the cleaned data.
:param is_valid: :param is_valid: Boolean indicating if the description is valid.
:param has_dwelling_below: :param has_dwelling_below: Boolean indicating if there's a dwelling below.
:param thermal_transmittence: :param thermal_transmittence: Thermal transmittence value.
:param thermal_transmittence_unit: :param thermal_transmittence_unit: Unit of thermal transmittence.
:param to_unheated_space: :param to_unheated_space: Boolean indicating if there's an unheated space below.
:param to_external_air: :param to_external_air: Boolean indicating if the floor is exposed to external air.
:param is_suspended: :param is_suspended: Boolean indicating if the floor is suspended.
:param is_solid: :param is_solid: Boolean indicating if the floor is solid.
:param assumed: :param assumed: Boolean indicating if the data was assumed.
:param insulation_thickness: :param insulation_thickness: Insulation thickness as a string.
:return: :return: Dictionary with cleaned data.
""" """
return { return {
"is_valid": is_valid, "is_valid": is_valid,