import datetime
import base64
from lxml import etree
from copy import deepcopy

class _Base():
    ""
    def __repr__(self):
        ""
        return f'<{self.__class__.__name__} {self.tag}>'


    def copy(self):
        ""
        # get root and path to element
        path = []
        element = self
        while True:
            parent = element.getparent()
            if parent is None:
                break
            position = list(parent).index(element)
            path.insert(0,position)
            element = parent
            #break
        path
        root = element

        copy_root = deepcopy(root)  # only works for the root element...

        # get copied element

        copy_element = copy_root
        for i in path:
            copy_element = copy_element[i]

        copy_self = copy_element

        return copy_self


    def display(self, show_values = True):
        ""

        copy_self = self.copy()

        if show_values:

            for element in copy_self.iter():

                if not element.map_codes is None:

                    value = element.map_codes.get(element.text)

                    if not value is None:

                        element.text = f"{element.text} ['{value}']"

        return etree.tostring(copy_self, pretty_print=True).decode()
    
    
    @property
    def sap_xml_properties(self):
        ""
        return ['code', 'value', 'sap_xml_codes'] + self.subclass_method_names


    @property
    def sap_xml_methods(self):
        ""
        return (
            ['copy', 'display'] 
            + [f'add_{x}' for x in self.sap_xml_properties if not x in ['code', 'value', 'sap_xml_codes']]
            )


    @property
    def sap_xml_codes(self):
        ""
        return self.map_codes


class SAP_Compliance_Report(_Base, etree.ElementBase):
    ""
    element_name = "SAP-Compliance-Report"
    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
    element_type = "Compliance-Report"
    class_name = "SAP_Compliance_Report"
    documentation = None
    type_documentation = None
    has_text_node = False
    min_occurs = 1
    max_occurs = 1
    python_type_convertor = None
    map_codes = None
    map_values = None
    parent_class_name = None
    parent_method_name = None
    subclass_class_names = ["SAP_Report", "Client_Name", "Client_Company", "Client_Address", "Is_Multiple_Compliance"]
    subclass_method_names = ["sap_report", "client_name", "client_company", "client_address", "is_multiple_compliance"]

    @property
    def sap_report(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Report")

    def add_sap_report(self):
        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Report")

    @property
    def client_name(self): return self.find(f"{{{self.__class__.namespace}}}Client-Name")

    def add_client_name(self):
        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Client-Name")

    @property
    def client_company(self): return self.find(f"{{{self.__class__.namespace}}}Client-Company")

    def add_client_company(self):
        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Client-Company")

    @property
    def client_address(self): return self.find(f"{{{self.__class__.namespace}}}Client-Address")

    def add_client_address(self):
        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Client-Address")

    @property
    def is_multiple_compliance(self): return self.find(f"{{{self.__class__.namespace}}}Is-Multiple-Compliance")

    def add_is_multiple_compliance(self):
        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Multiple-Compliance")

    class SAP_Report(_Base, etree.ElementBase):
        ""
        element_name = "SAP-Report"
        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
        element_type = "Energy-Performance-Certificate"
        class_name = "SAP_Report"
        documentation = """The SAP report corresponding to the compliance report."""
        type_documentation = None
        has_text_node = False
        min_occurs = 1
        max_occurs = 1
        python_type_convertor = None
        map_codes = None
        map_values = None
        parent_class_name = "SAP_Compliance_Report"
        parent_method_name ="sap_compliance_report"
        subclass_class_names = ["Schema_Version_Original", "Schema_Version_Current", "SAP_Version", "SAP_Data_Version", "PCDF_Revision_Number", "Calculation_Software_Name", "Calculation_Software_Version", "User_Interface_Name", "User_Interface_Version", "Report_Header", "Energy_Assessment", "SAP10_Data", "PDF", "Insurance_Details", "ExternalDefinitions_Revision_Number"]
        subclass_method_names = ["schema_version_original", "schema_version_current", "sap_version", "sap_data_version", "pcdf_revision_number", "calculation_software_name", "calculation_software_version", "user_interface_name", "user_interface_version", "report_header", "energy_assessment", "sap10_data", "pdf", "insurance_details", "externaldefinitions_revision_number"]
    
        @property
        def sap_compliance_report(self): return self.getparent()
    
        @property
        def schema_version_original(self): return self.find(f"{{{self.__class__.namespace}}}Schema-Version-Original")
    
        def add_schema_version_original(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Schema-Version-Original")
    
        @property
        def schema_version_current(self): return self.find(f"{{{self.__class__.namespace}}}Schema-Version-Current")
    
        def add_schema_version_current(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Schema-Version-Current")
    
        @property
        def sap_version(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Version")
    
        def add_sap_version(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Version")
    
        @property
        def sap_data_version(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Data-Version")
    
        def add_sap_data_version(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Data-Version")
    
        @property
        def pcdf_revision_number(self): return self.find(f"{{{self.__class__.namespace}}}PCDF-Revision-Number")
    
        def add_pcdf_revision_number(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}PCDF-Revision-Number")
    
        @property
        def calculation_software_name(self): return self.find(f"{{{self.__class__.namespace}}}Calculation-Software-Name")
    
        def add_calculation_software_name(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Calculation-Software-Name")
    
        @property
        def calculation_software_version(self): return self.find(f"{{{self.__class__.namespace}}}Calculation-Software-Version")
    
        def add_calculation_software_version(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Calculation-Software-Version")
    
        @property
        def user_interface_name(self): return self.find(f"{{{self.__class__.namespace}}}User-Interface-Name")
    
        def add_user_interface_name(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}User-Interface-Name")
    
        @property
        def user_interface_version(self): return self.find(f"{{{self.__class__.namespace}}}User-Interface-Version")
    
        def add_user_interface_version(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}User-Interface-Version")
    
        @property
        def report_header(self): return self.find(f"{{{self.__class__.namespace}}}Report-Header")
    
        def add_report_header(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Report-Header")
    
        @property
        def energy_assessment(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Assessment")
    
        def add_energy_assessment(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Assessment")
    
        @property
        def sap10_data(self): return self.find(f"{{{self.__class__.namespace}}}SAP10-Data")
    
        def add_sap10_data(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP10-Data")
    
        @property
        def pdf(self): return self.find(f"{{{self.__class__.namespace}}}PDF")
    
        def add_pdf(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}PDF")
    
        @property
        def insurance_details(self): return self.find(f"{{{self.__class__.namespace}}}Insurance-Details")
    
        def add_insurance_details(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Insurance-Details")
    
        @property
        def externaldefinitions_revision_number(self): return self.find(f"{{{self.__class__.namespace}}}ExternalDefinitions-Revision-Number")
    
        def add_externaldefinitions_revision_number(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}ExternalDefinitions-Revision-Number")
    
        class Schema_Version_Original(_Base, etree.ElementBase):
            ""
            element_name = "Schema-Version-Original"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Schema_Version_Original"
            documentation = """The schema version that the data conformed to when it was lodged."""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Schema_Version_Current(_Base, etree.ElementBase):
            ""
            element_name = "Schema-Version-Current"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Schema_Version_Current"
            documentation = """The schema version to which the data conforms. This node is inserted by the register when a retrieval is requested. It must not be present in a lodgement being sent to the register."""
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class SAP_Version(_Base, etree.ElementBase):
            ""
            element_name = "SAP-Version"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "SAP-VersionCode"
            class_name = "SAP_Version"
            documentation = """SAP version that was used for the calculation."""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = {'9.80': 'SAP 2005 version 9.80, dated October 2005', '9.81': 'SAP version 9.81, dated January 2008', '9.82': 'SAP version 9.82, dated Jun 2008', '9.83': 'SAP version 9.83, dated Jun 2009', '9.90': 'SAP version 9.90, dated Mar 2010', '9.91': 'SAP version 9.91, dated Jan 2012', '9.92': 'SAP version 9.92, dated Oct 2013', '10.2': 'SAP version 10.2, dated Oct 2020'}
            map_values = {'SAP 2005 version 9.80, dated October 2005': '9.80', 'SAP version 9.81, dated January 2008': '9.81', 'SAP version 9.82, dated Jun 2008': '9.82', 'SAP version 9.83, dated Jun 2009': '9.83', 'SAP version 9.90, dated Mar 2010': '9.90', 'SAP version 9.91, dated Jan 2012': '9.91', 'SAP version 9.92, dated Oct 2013': '9.92', 'SAP version 10.2, dated Oct 2020': '10.2'}
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.__class__.map_codes[self.text]
        
            @value.setter
            def value(self, value):
                if value in self.__class__.map_values:
                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                else:
                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code):
                if code in self.__class__.map_codes:
                    self.text = str(code)
                else:
                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
        
        class SAP_Data_Version(_Base, etree.ElementBase):
            ""
            element_name = "SAP-Data-Version"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "SAP-VersionCode"
            class_name = "SAP_Data_Version"
            documentation = """Version of SAP that was used to define the input data for the calculation."""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = {'9.80': 'SAP 2005 version 9.80, dated October 2005', '9.81': 'SAP version 9.81, dated January 2008', '9.82': 'SAP version 9.82, dated Jun 2008', '9.83': 'SAP version 9.83, dated Jun 2009', '9.90': 'SAP version 9.90, dated Mar 2010', '9.91': 'SAP version 9.91, dated Jan 2012', '9.92': 'SAP version 9.92, dated Oct 2013', '10.2': 'SAP version 10.2, dated Oct 2020'}
            map_values = {'SAP 2005 version 9.80, dated October 2005': '9.80', 'SAP version 9.81, dated January 2008': '9.81', 'SAP version 9.82, dated Jun 2008': '9.82', 'SAP version 9.83, dated Jun 2009': '9.83', 'SAP version 9.90, dated Mar 2010': '9.90', 'SAP version 9.91, dated Jan 2012': '9.91', 'SAP version 9.92, dated Oct 2013': '9.92', 'SAP version 10.2, dated Oct 2020': '10.2'}
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.__class__.map_codes[self.text]
        
            @value.setter
            def value(self, value):
                if value in self.__class__.map_values:
                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                else:
                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code):
                if code in self.__class__.map_codes:
                    self.text = str(code)
                else:
                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
        
        class PCDF_Revision_Number(_Base, etree.ElementBase):
            ""
            element_name = "PCDF-Revision-Number"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:nonNegativeInteger"
            class_name = "PCDF_Revision_Number"
            documentation = """Revision Number of the PCDF file used for the calculations."""
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = int
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.__class__.python_type_convertor(self.text)
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Calculation_Software_Name(_Base, etree.ElementBase):
            ""
            element_name = "Calculation-Software-Name"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Calculation_Software_Name"
            documentation = """Name of the software used to perform the SAP calculation."""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Calculation_Software_Version(_Base, etree.ElementBase):
            ""
            element_name = "Calculation-Software-Version"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Calculation_Software_Version"
            documentation = """Version of the software used to perform the SAP calculation."""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class User_Interface_Name(_Base, etree.ElementBase):
            ""
            element_name = "User-Interface-Name"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "User_Interface_Name"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class User_Interface_Version(_Base, etree.ElementBase):
            ""
            element_name = "User-Interface-Version"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "User_Interface_Version"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Report_Header(_Base, etree.ElementBase):
            ""
            element_name = "Report-Header"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "Report-Header"
            class_name = "Report_Header"
            documentation = None
            type_documentation = """Report Header contains all the identification and searchable details for the Report."""
            has_text_node = False
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = None
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = ["RRN", "Inspection_Date", "Report_Type", "Completion_Date", "Registration_Date", "Status", "Language_Code", "Tenure", "Transaction_Type", "Seller_Commission_Report", "Property_Type", "Home_Inspector", "Property", "Region_Code", "Country_Code", "Related_Party_Disclosure"]
            subclass_method_names = ["rrn", "inspection_date", "report_type", "completion_date", "registration_date", "status", "language_code", "tenure", "transaction_type", "seller_commission_report", "property_type", "home_inspector", "property", "region_code", "country_code", "related_party_disclosure"]
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def rrn(self): return self.find(f"{{{self.__class__.namespace}}}RRN")
        
            def add_rrn(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}RRN")
        
            @property
            def inspection_date(self): return self.find(f"{{{self.__class__.namespace}}}Inspection-Date")
        
            def add_inspection_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Inspection-Date")
        
            @property
            def report_type(self): return self.find(f"{{{self.__class__.namespace}}}Report-Type")
        
            def add_report_type(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Report-Type")
        
            @property
            def completion_date(self): return self.find(f"{{{self.__class__.namespace}}}Completion-Date")
        
            def add_completion_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Completion-Date")
        
            @property
            def registration_date(self): return self.find(f"{{{self.__class__.namespace}}}Registration-Date")
        
            def add_registration_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Registration-Date")
        
            @property
            def status(self): return self.find(f"{{{self.__class__.namespace}}}Status")
        
            def add_status(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Status")
        
            @property
            def language_code(self): return self.find(f"{{{self.__class__.namespace}}}Language-Code")
        
            def add_language_code(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Language-Code")
        
            @property
            def tenure(self): return self.find(f"{{{self.__class__.namespace}}}Tenure")
        
            def add_tenure(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Tenure")
        
            @property
            def transaction_type(self): return self.find(f"{{{self.__class__.namespace}}}Transaction-Type")
        
            def add_transaction_type(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Transaction-Type")
        
            @property
            def seller_commission_report(self): return self.find(f"{{{self.__class__.namespace}}}Seller-Commission-Report")
        
            def add_seller_commission_report(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Seller-Commission-Report")
        
            @property
            def property_type(self): return self.find(f"{{{self.__class__.namespace}}}Property-Type")
        
            def add_property_type(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Property-Type")
        
            @property
            def home_inspector(self): return self.find(f"{{{self.__class__.namespace}}}Home-Inspector")
        
            def add_home_inspector(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Home-Inspector")
        
            @property
            def property_(self): return self.find(f"{{{self.__class__.namespace}}}Property")
        
            def add_property_(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Property")
        
            @property
            def region_code(self): return self.find(f"{{{self.__class__.namespace}}}Region-Code")
        
            def add_region_code(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Region-Code")
        
            @property
            def country_code(self): return self.find(f"{{{self.__class__.namespace}}}Country-Code")
        
            def add_country_code(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Country-Code")
        
            @property
            def related_party_disclosure(self): return self.find(f"{{{self.__class__.namespace}}}Related-Party-Disclosure")
        
            def add_related_party_disclosure(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Related-Party-Disclosure")
        
            class RRN(_Base, etree.ElementBase):
                ""
                element_name = "RRN"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "RRNType"
                class_name = "RRN"
                documentation = """Report Reference Number is the unique report Identifier that the report will be publicly known by. The RRN is allocated to the Report at the point that it is registered and will be algorithmically derived from the natural key characteristics of the Home Condition Report i.e. The Unique Property Reference Number (UPRN) and Inspection Date."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.text
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Inspection_Date(_Base, etree.ElementBase):
                ""
                element_name = "Inspection-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Inspection_Date"
                documentation = """The date that the inspection was actually carried out by the Home Inspector."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Report_Type(_Base, etree.ElementBase):
                ""
                element_name = "Report-Type"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "ReportTypeCode"
                class_name = "Report_Type"
                documentation = """The type of Home Inspection that was carried out. Initially the only allowed type will be a Home Condition Report inspection but this may be extended in the future to cover Energy Assessment Only inspections."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'Home Condition Report', '2': 'RdSAP Energy Performance Certificate', '3': 'SAP Energy Performance Certificate', '4': 'Interim RdSAP Energy Performance Certificate (to be superseded by SAP EPC)'}
                map_values = {'Home Condition Report': '1', 'RdSAP Energy Performance Certificate': '2', 'SAP Energy Performance Certificate': '3', 'Interim RdSAP Energy Performance Certificate (to be superseded by SAP EPC)': '4'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Completion_Date(_Base, etree.ElementBase):
                ""
                element_name = "Completion-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Completion_Date"
                documentation = """The date that the Home Inspector completed the report. This will be after the Inspection Date but generally before the Registration Date."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Registration_Date(_Base, etree.ElementBase):
                ""
                element_name = "Registration-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Registration_Date"
                documentation = """The date that the report was submitted to the HCR Registration Organisation for lodging in the HCR Register."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Status(_Base, etree.ElementBase):
                ""
                element_name = "Status"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "ReportStatusCode"
                class_name = "Status"
                documentation = """The Status of the Report. A Home Condition Report can have a number of distinct states depending on whereabouts in its overall lifecycle the HCR is - see Home Condition Report Statechart for more details."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'cancelled': 'Cancelled', 'entered': 'entered on the register', 'appeal': 'under appeal', 'removed': 'removed', 'rejected': 'rejected', 'under investigation': 'under investigation', 'not for issue': 'not for issue'}
                map_values = {'Cancelled': 'cancelled', 'entered on the register': 'entered', 'under appeal': 'appeal', 'removed': 'removed', 'rejected': 'rejected', 'under investigation': 'under investigation', 'not for issue': 'not for issue'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Language_Code(_Base, etree.ElementBase):
                ""
                element_name = "Language-Code"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "LanguageCode"
                class_name = "Language_Code"
                documentation = """The language that the report is written in."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'English', '2': 'Welsh'}
                map_values = {'English': '1', 'Welsh': '2'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Tenure(_Base, etree.ElementBase):
                ""
                element_name = "Tenure"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "TenureCode"
                class_name = "Tenure"
                documentation = None
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'owner-occupied', '2': 'rented (social)', '3': 'rented (private)', 'ND': 'unknown'}
                map_values = {'owner-occupied': '1', 'rented (social)': '2', 'rented (private)': '3', 'unknown': 'ND'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Transaction_Type(_Base, etree.ElementBase):
                ""
                element_name = "Transaction-Type"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "TransactionType"
                class_name = "Transaction_Type"
                documentation = None
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'marketed sale', '2': 'non marketed sale', '3': 'rental (social) - this is for backwards compatibility only and should not be used', '4': 'rental (private) - this is for backwards compatibility only and should not be used', '5': 'none of the above', '6': 'new dwelling', '7': 'not recorded - this is for backwards compatibility only and should not be used', '8': 'rental', '9': 'assessment for green deal', '10': 'following green deal', '11': 'FiT application'}
                map_values = {'marketed sale': '1', 'non marketed sale': '2', 'rental (social) - this is for backwards compatibility only and should not be used': '3', 'rental (private) - this is for backwards compatibility only and should not be used': '4', 'none of the above': '5', 'new dwelling': '6', 'not recorded - this is for backwards compatibility only and should not be used': '7', 'rental': '8', 'assessment for green deal': '9', 'following green deal': '10', 'FiT application': '11'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Seller_Commission_Report(_Base, etree.ElementBase):
                ""
                element_name = "Seller-Commission-Report"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Flag"
                class_name = "Seller_Commission_Report"
                documentation = """Indicates that the HCR was commissioned by the Seller of the Property or their Agent. This is required in order to differentiate these reports from Buyer commisioned reports which are not eligible for inclusion in a Home Information Pack"""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'Y': 'Yes', 'N': 'No'}
                map_values = {'Yes': 'Y', 'No': 'N'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Property_Type(_Base, etree.ElementBase):
                ""
                element_name = "Property-Type"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "PropertyTypeCode"
                class_name = "Property_Type"
                documentation = """Describes the type of Property that is being inspected. This should be the same as the Property-Type recorded in the Property-Details section."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'0': 'House', '1': 'Bungalow', '2': 'Flat', '3': 'Maisonette', '4': 'Park home'}
                map_values = {'House': '0', 'Bungalow': '1', 'Flat': '2', 'Maisonette': '3', 'Park home': '4'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Home_Inspector(_Base, etree.ElementBase):
                ""
                element_name = "Home-Inspector"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Home-Inspector"
                class_name = "Home_Inspector"
                documentation = None
                type_documentation = """A Certified Home Inspector is a person certified by a Certification Scheme - that is they exist on the Home Inspector Register - as being qualified to carry out a Home Inspection and produce a Home Condition Report. The exact criteria for fit + proper are laid down in regulations and the Business Standards and it is the responsibility of the Certification Scheme to carry out sufficient checks to ensure those criteria are adhered to. Although covered by a different regulatory regime a Home Inspector and Energy Assessor serve synonymous roles in the product of a Home Condition Report or Energy Performance Certificate respectively."""
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = ["Name", "Notify_Lodgement", "Contact_Address", "Web_Site", "E_Mail", "Fax", "Telephone", "Company_Name", "Scheme_Name", "Scheme_Web_Site", "Identification_Number"]
                subclass_method_names = ["name", "notify_lodgement", "contact_address", "web_site", "e_mail", "fax", "telephone", "company_name", "scheme_name", "scheme_web_site", "identification_number"]
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
            
                def add_name(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
            
                @property
                def notify_lodgement(self): return self.find(f"{{{self.__class__.namespace}}}Notify-Lodgement")
            
                def add_notify_lodgement(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Notify-Lodgement")
            
                @property
                def contact_address(self): return self.find(f"{{{self.__class__.namespace}}}Contact-Address")
            
                def add_contact_address(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Contact-Address")
            
                @property
                def web_site(self): return self.find(f"{{{self.__class__.namespace}}}Web-Site")
            
                def add_web_site(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Web-Site")
            
                @property
                def e_mail(self): return self.find(f"{{{self.__class__.namespace}}}E-Mail")
            
                def add_e_mail(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}E-Mail")
            
                @property
                def fax(self): return self.find(f"{{{self.__class__.namespace}}}Fax")
            
                def add_fax(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Fax")
            
                @property
                def telephone(self): return self.find(f"{{{self.__class__.namespace}}}Telephone")
            
                def add_telephone(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Telephone")
            
                @property
                def company_name(self): return self.find(f"{{{self.__class__.namespace}}}Company-Name")
            
                def add_company_name(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Company-Name")
            
                @property
                def scheme_name(self): return self.find(f"{{{self.__class__.namespace}}}Scheme-Name")
            
                def add_scheme_name(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Scheme-Name")
            
                @property
                def scheme_web_site(self): return self.find(f"{{{self.__class__.namespace}}}Scheme-Web-Site")
            
                def add_scheme_web_site(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Scheme-Web-Site")
            
                @property
                def identification_number(self): return self.find(f"{{{self.__class__.namespace}}}Identification-Number")
            
                def add_identification_number(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Identification-Number")
            
                class Name(_Base, etree.ElementBase):
                    ""
                    element_name = "Name"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Name"
                    documentation = """The name by which the Home Inspector is registered. This is a structured name containing prefix, first name + surname."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Notify_Lodgement(_Base, etree.ElementBase):
                    ""
                    element_name = "Notify-Lodgement"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Flag"
                    class_name = "Notify_Lodgement"
                    documentation = """Indicates whether the assessor wants to be notified that a the report has been lodged in the register"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'Y': 'Yes', 'N': 'No'}
                    map_values = {'Yes': 'Y', 'No': 'N'}
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Contact_Address(_Base, etree.ElementBase):
                    ""
                    element_name = "Contact-Address"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "AddressType"
                    class_name = "Contact_Address"
                    documentation = """The address that any written correspondence can be sent to. This is not the same as the Registered Address because it may, of course, be a Post Office Box."""
                    type_documentation = """An address is composed of a number of structured elements such as Postcode, Post-Town, Street etc."""
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = ["Address_Line_1", "Address_Line_2", "Address_Line_3", "Post_Town", "Postcode"]
                    subclass_method_names = ["address_line_1", "address_line_2", "address_line_3", "post_town", "postcode"]
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def address_line_1(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-1")
                
                    def add_address_line_1(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-1")
                
                    @property
                    def address_line_2(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-2")
                
                    def add_address_line_2(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-2")
                
                    @property
                    def address_line_3(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-3")
                
                    def add_address_line_3(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-3")
                
                    @property
                    def post_town(self): return self.find(f"{{{self.__class__.namespace}}}Post-Town")
                
                    def add_post_town(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Post-Town")
                
                    @property
                    def postcode(self): return self.find(f"{{{self.__class__.namespace}}}Postcode")
                
                    def add_postcode(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Postcode")
                
                    class Address_Line_1(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-1"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_1"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Contact_Address"
                        parent_method_name ="contact_address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def contact_address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Address_Line_2(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-2"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_2"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Contact_Address"
                        parent_method_name ="contact_address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def contact_address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Address_Line_3(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-3"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_3"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Contact_Address"
                        parent_method_name ="contact_address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def contact_address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Post_Town(_Base, etree.ElementBase):
                        ""
                        element_name = "Post-Town"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Post_Town"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Contact_Address"
                        parent_method_name ="contact_address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def contact_address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Postcode(_Base, etree.ElementBase):
                        ""
                        element_name = "Postcode"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "PostcodeType"
                        class_name = "Postcode"
                        documentation = """The Postcode for the Address"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Contact_Address"
                        parent_method_name ="contact_address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def contact_address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class Web_Site(_Base, etree.ElementBase):
                    ""
                    element_name = "Web-Site"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Web_Site"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class E_Mail(_Base, etree.ElementBase):
                    ""
                    element_name = "E-Mail"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "E_Mail"
                    documentation = """the E-Mail address that the Authorised User can be contacted at."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Fax(_Base, etree.ElementBase):
                    ""
                    element_name = "Fax"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PhoneNumberType"
                    class_name = "Fax"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Telephone(_Base, etree.ElementBase):
                    ""
                    element_name = "Telephone"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PhoneNumberType"
                    class_name = "Telephone"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Company_Name(_Base, etree.ElementBase):
                    ""
                    element_name = "Company-Name"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Company_Name"
                    documentation = """The Name of the Company that the assessor is employed by."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Scheme_Name(_Base, etree.ElementBase):
                    ""
                    element_name = "Scheme-Name"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Scheme_Name"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Scheme_Web_Site(_Base, etree.ElementBase):
                    ""
                    element_name = "Scheme-Web-Site"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Scheme_Web_Site"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Identification_Number(_Base, etree.ElementBase):
                    ""
                    element_name = "Identification-Number"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "None"
                    class_name = "Identification_Number"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Home_Inspector"
                    parent_method_name ="home_inspector"
                    subclass_class_names = ["Certificate_Number", "Membership_Number"]
                    subclass_method_names = ["certificate_number", "membership_number"]
                
                    @property
                    def home_inspector(self): return self.getparent()
                
                    @property
                    def certificate_number(self): return self.find(f"{{{self.__class__.namespace}}}Certificate-Number")
                
                    def add_certificate_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Certificate-Number")
                
                    @property
                    def membership_number(self): return self.find(f"{{{self.__class__.namespace}}}Membership-Number")
                
                    def add_membership_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Membership-Number")
                
                    class Certificate_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Certificate-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "CertificateNumberType"
                        class_name = "Certificate_Number"
                        documentation = """The unique identifier assigned to the assessor by the scheme by which they can be identified throughout their membership of the scheme."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Identification_Number"
                        parent_method_name ="identification_number"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def identification_number(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Membership_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Membership-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Membership_Number"
                        documentation = """For Scottish DEAs only"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Identification_Number"
                        parent_method_name ="identification_number"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def identification_number(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
            class Property(_Base, etree.ElementBase):
                ""
                element_name = "Property"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Property"
                class_name = "Property"
                documentation = None
                type_documentation = """A discrete identifiable possession, such as a piece of real-estate, to which its owner has legal title. For the Home Information Pack legislation the types of property are restricted to residential properties. It should be observed that "a property is a property is a property" and all real-estate properties, whether residential or commercial or whether being sold for the first or the nth time will have a very similar conceptual structure and similar rules and constraints. As such the broad description of a Property can be regarded as a framework, containing a set of extension points, that can be expanded as necessary to cover additional detail."""
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = ["Address", "UPRN", "Site_Reference", "Plot_Reference"]
                subclass_method_names = ["address", "uprn", "site_reference", "plot_reference"]
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def address(self): return self.find(f"{{{self.__class__.namespace}}}Address")
            
                def add_address(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address")
            
                @property
                def uprn(self): return self.find(f"{{{self.__class__.namespace}}}UPRN")
            
                def add_uprn(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}UPRN")
            
                @property
                def site_reference(self): return self.find(f"{{{self.__class__.namespace}}}Site-Reference")
            
                def add_site_reference(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Site-Reference")
            
                @property
                def plot_reference(self): return self.find(f"{{{self.__class__.namespace}}}Plot-Reference")
            
                def add_plot_reference(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Plot-Reference")
            
                class Address(_Base, etree.ElementBase):
                    ""
                    element_name = "Address"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "AddressType"
                    class_name = "Address"
                    documentation = """Address for the property."""
                    type_documentation = """An address is composed of a number of structured elements such as Postcode, Post-Town, Street etc."""
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property"
                    parent_method_name ="property_"
                    subclass_class_names = ["Address_Line_1", "Address_Line_2", "Address_Line_3", "Post_Town", "Postcode"]
                    subclass_method_names = ["address_line_1", "address_line_2", "address_line_3", "post_town", "postcode"]
                
                    @property
                    def property_(self): return self.getparent()
                
                    @property
                    def address_line_1(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-1")
                
                    def add_address_line_1(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-1")
                
                    @property
                    def address_line_2(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-2")
                
                    def add_address_line_2(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-2")
                
                    @property
                    def address_line_3(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-3")
                
                    def add_address_line_3(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-3")
                
                    @property
                    def post_town(self): return self.find(f"{{{self.__class__.namespace}}}Post-Town")
                
                    def add_post_town(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Post-Town")
                
                    @property
                    def postcode(self): return self.find(f"{{{self.__class__.namespace}}}Postcode")
                
                    def add_postcode(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Postcode")
                
                    class Address_Line_1(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-1"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_1"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Address"
                        parent_method_name ="address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Address_Line_2(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-2"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_2"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Address"
                        parent_method_name ="address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Address_Line_3(_Base, etree.ElementBase):
                        ""
                        element_name = "Address-Line-3"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Address_Line_3"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Address"
                        parent_method_name ="address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Post_Town(_Base, etree.ElementBase):
                        ""
                        element_name = "Post-Town"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Post_Town"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Address"
                        parent_method_name ="address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Postcode(_Base, etree.ElementBase):
                        ""
                        element_name = "Postcode"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "PostcodeType"
                        class_name = "Postcode"
                        documentation = """The Postcode for the Address"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Address"
                        parent_method_name ="address"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def address(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class UPRN(_Base, etree.ElementBase):
                    ""
                    element_name = "UPRN"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "UPRNType"
                    class_name = "UPRN"
                    documentation = """Unique Property Reference Number"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property"
                    parent_method_name ="property_"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Site_Reference(_Base, etree.ElementBase):
                    ""
                    element_name = "Site-Reference"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Site_Reference"
                    documentation = """A site reference"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property"
                    parent_method_name ="property_"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Plot_Reference(_Base, etree.ElementBase):
                    ""
                    element_name = "Plot-Reference"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Plot_Reference"
                    documentation = """A plot reference"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property"
                    parent_method_name ="property_"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
            class Region_Code(_Base, etree.ElementBase):
                ""
                element_name = "Region-Code"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "UKRegionCode"
                class_name = "Region_Code"
                documentation = """Region within the UK."""
                type_documentation = None
                has_text_node = True
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'Borders', '2': 'East Anglia', '3': 'East Pennines', '4': 'East Scotland', '5': 'Highland', '6': 'Midlands', '7': 'North East England', '8': 'North East Scotland', '9': 'North West England / South West Scotland', '10': 'Northern Ireland', '11': 'Orkney', '12': 'Severn Valley', '13': 'Shetland', '14': 'South East England', '15': 'South West England', '16': 'Southern England', '17': 'Thames Valley', '18': 'Wales', '19': 'West Pennines', '20': 'West Scotland', '21': 'Western Isles', '22': 'Jersey', '23': 'Guernsey', '24': 'Isle of Man'}
                map_values = {'Borders': '1', 'East Anglia': '2', 'East Pennines': '3', 'East Scotland': '4', 'Highland': '5', 'Midlands': '6', 'North East England': '7', 'North East Scotland': '8', 'North West England / South West Scotland': '9', 'Northern Ireland': '10', 'Orkney': '11', 'Severn Valley': '12', 'Shetland': '13', 'South East England': '14', 'South West England': '15', 'Southern England': '16', 'Thames Valley': '17', 'Wales': '18', 'West Pennines': '19', 'West Scotland': '20', 'Western Isles': '21', 'Jersey': '22', 'Guernsey': '23', 'Isle of Man': '24'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Country_Code(_Base, etree.ElementBase):
                ""
                element_name = "Country-Code"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "UKCountryCode"
                class_name = "Country_Code"
                documentation = """Country within the UK."""
                type_documentation = None
                has_text_node = True
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'EAW': 'England and Wales, for backwards compatibility only.', 'ENG': 'England', 'WLS': 'Wales', 'SCT': 'Scotland', 'NIR': 'Northern Ireland'}
                map_values = {'England and Wales, for backwards compatibility only.': 'EAW', 'England': 'ENG', 'Wales': 'WLS', 'Scotland': 'SCT', 'Northern Ireland': 'NIR'}
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class Related_Party_Disclosure(_Base, etree.ElementBase):
                ""
                element_name = "Related-Party-Disclosure"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "None"
                class_name = "Related_Party_Disclosure"
                documentation = None
                type_documentation = None
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Report_Header"
                parent_method_name ="report_header"
                subclass_class_names = ["Related_Party_Disclosure_Text", "Related_Party_Disclosure_Number"]
                subclass_method_names = ["related_party_disclosure_text", "related_party_disclosure_number"]
            
                @property
                def report_header(self): return self.getparent()
            
                @property
                def related_party_disclosure_text(self): return self.find(f"{{{self.__class__.namespace}}}Related-Party-Disclosure-Text")
            
                def add_related_party_disclosure_text(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Related-Party-Disclosure-Text")
            
                @property
                def related_party_disclosure_number(self): return self.find(f"{{{self.__class__.namespace}}}Related-Party-Disclosure-Number")
            
                def add_related_party_disclosure_number(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Related-Party-Disclosure-Number")
            
                class Related_Party_Disclosure_Text(_Base, etree.ElementBase):
                    ""
                    element_name = "Related-Party-Disclosure-Text"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Sentence"
                    class_name = "Related_Party_Disclosure_Text"
                    documentation = """For backward compatibility only."""
                    type_documentation = """String value with a language code for natural-language text."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Related_Party_Disclosure"
                    parent_method_name ="related_party_disclosure"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def related_party_disclosure(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Related_Party_Disclosure_Number(_Base, etree.ElementBase):
                    ""
                    element_name = "Related-Party-Disclosure-Number"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "DisclosureCode"
                    class_name = "Related_Party_Disclosure_Number"
                    documentation = """Code indicating any potential conflicts of interest or commercial relationships with other parties."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'No related party', '2': 'Relative of homeowner or of occupier of the property', '3': 'Residing at the property', '4': 'Financial interest in the property', '5': 'Owner or Director of the organisation dealing with the property transaction', '6': 'Employed by the professional dealing with the property transaction', '7': 'Relative of the professional dealing with the property transaction'}
                    map_values = {'No related party': '1', 'Relative of homeowner or of occupier of the property': '2', 'Residing at the property': '3', 'Financial interest in the property': '4', 'Owner or Director of the organisation dealing with the property transaction': '5', 'Employed by the professional dealing with the property transaction': '6', 'Relative of the professional dealing with the property transaction': '7'}
                    parent_class_name = "Related_Party_Disclosure"
                    parent_method_name ="related_party_disclosure"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def related_party_disclosure(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
        class Energy_Assessment(_Base, etree.ElementBase):
            ""
            element_name = "Energy-Assessment"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "Energy-Assessment"
            class_name = "Energy_Assessment"
            documentation = None
            type_documentation = """Energy Efficiency Assessment Report is an inspection report whose purpose is to assess the energy efficiency of the inspected property and provide energy ratings for the significant heat-loss features of the property. The report also identifies a number of potential improvements that may be made to the property in order to increase the energy efficiency."""
            has_text_node = False
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = None
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = ["Assessment_Date", "Property_Summary", "Energy_Use", "Suggested_Improvements", "LZC_Energy_Sources", "Renewable_Heat_Incentive", "Green_Deal_Package", "Alternative_Improvements", "Addendum"]
            subclass_method_names = ["assessment_date", "property_summary", "energy_use", "suggested_improvements", "lzc_energy_sources", "renewable_heat_incentive", "green_deal_package", "alternative_improvements", "addendum"]
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def assessment_date(self): return self.find(f"{{{self.__class__.namespace}}}Assessment-Date")
        
            def add_assessment_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Assessment-Date")
        
            @property
            def property_summary(self): return self.find(f"{{{self.__class__.namespace}}}Property-Summary")
        
            def add_property_summary(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Property-Summary")
        
            @property
            def energy_use(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Use")
        
            def add_energy_use(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Use")
        
            @property
            def suggested_improvements(self): return self.find(f"{{{self.__class__.namespace}}}Suggested-Improvements")
        
            def add_suggested_improvements(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Suggested-Improvements")
        
            @property
            def lzc_energy_sources(self): return self.find(f"{{{self.__class__.namespace}}}LZC-Energy-Sources")
        
            def add_lzc_energy_sources(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}LZC-Energy-Sources")
        
            @property
            def renewable_heat_incentive(self): return self.find(f"{{{self.__class__.namespace}}}Renewable-Heat-Incentive")
        
            def add_renewable_heat_incentive(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Renewable-Heat-Incentive")
        
            @property
            def green_deal_package(self): return self.find(f"{{{self.__class__.namespace}}}Green-Deal-Package")
        
            def add_green_deal_package(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Green-Deal-Package")
        
            @property
            def alternative_improvements(self): return self.find(f"{{{self.__class__.namespace}}}Alternative-Improvements")
        
            def add_alternative_improvements(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Alternative-Improvements")
        
            @property
            def addendum(self): return self.find(f"{{{self.__class__.namespace}}}Addendum")
        
            def add_addendum(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Addendum")
        
            class Assessment_Date(_Base, etree.ElementBase):
                ""
                element_name = "Assessment-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Assessment_Date"
                documentation = """Date of assessment."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Property_Summary(_Base, etree.ElementBase):
                ""
                element_name = "Property-Summary"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Property-Summary"
                class_name = "Property_Summary"
                documentation = None
                type_documentation = None
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["Walls", "Roof", "Floor", "Windows", "Main_Heating", "Main_Heating_Controls", "Secondary_Heating", "Hot_Water", "Lighting", "Air_Tightness", "Has_Fixed_Air_Conditioning", "Has_Hot_Water_Cylinder", "Has_Heated_Separate_Conservatory", "Dwelling_Type", "Total_Floor_Area", "Multiple_Glazed_Percentage", "Multiple_Glazed_Percentage_NR", "Is_Zero_Carbon_Home"]
                subclass_method_names = ["walls", "roof", "floor", "windows", "main_heating", "main_heating_controls", "secondary_heating", "hot_water", "lighting", "air_tightness", "has_fixed_air_conditioning", "has_hot_water_cylinder", "has_heated_separate_conservatory", "dwelling_type", "total_floor_area", "multiple_glazed_percentage", "multiple_glazed_percentage_nr", "is_zero_carbon_home"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def walls(self): return self.findall(f"{{{self.__class__.namespace}}}Walls")
            
                def add_walls(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Walls")
            
                @property
                def roof(self): return self.findall(f"{{{self.__class__.namespace}}}Roof")
            
                def add_roof(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Roof")
            
                @property
                def floor(self): return self.findall(f"{{{self.__class__.namespace}}}Floor")
            
                def add_floor(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Floor")
            
                @property
                def windows(self): return self.find(f"{{{self.__class__.namespace}}}Windows")
            
                def add_windows(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Windows")
            
                @property
                def main_heating(self): return self.findall(f"{{{self.__class__.namespace}}}Main-Heating")
            
                def add_main_heating(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating")
            
                @property
                def main_heating_controls(self): return self.findall(f"{{{self.__class__.namespace}}}Main-Heating-Controls")
            
                def add_main_heating_controls(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Controls")
            
                @property
                def secondary_heating(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating")
            
                def add_secondary_heating(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating")
            
                @property
                def hot_water(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water")
            
                def add_hot_water(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water")
            
                @property
                def lighting(self): return self.find(f"{{{self.__class__.namespace}}}Lighting")
            
                def add_lighting(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting")
            
                @property
                def air_tightness(self): return self.find(f"{{{self.__class__.namespace}}}Air-Tightness")
            
                def add_air_tightness(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Tightness")
            
                @property
                def has_fixed_air_conditioning(self): return self.find(f"{{{self.__class__.namespace}}}Has-Fixed-Air-Conditioning")
            
                def add_has_fixed_air_conditioning(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Fixed-Air-Conditioning")
            
                @property
                def has_hot_water_cylinder(self): return self.find(f"{{{self.__class__.namespace}}}Has-Hot-Water-Cylinder")
            
                def add_has_hot_water_cylinder(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Hot-Water-Cylinder")
            
                @property
                def has_heated_separate_conservatory(self): return self.find(f"{{{self.__class__.namespace}}}Has-Heated-Separate-Conservatory")
            
                def add_has_heated_separate_conservatory(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Heated-Separate-Conservatory")
            
                @property
                def dwelling_type(self): return self.find(f"{{{self.__class__.namespace}}}Dwelling-Type")
            
                def add_dwelling_type(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Dwelling-Type")
            
                @property
                def total_floor_area(self): return self.find(f"{{{self.__class__.namespace}}}Total-Floor-Area")
            
                def add_total_floor_area(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Total-Floor-Area")
            
                @property
                def multiple_glazed_percentage(self): return self.find(f"{{{self.__class__.namespace}}}Multiple-Glazed-Percentage")
            
                def add_multiple_glazed_percentage(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Multiple-Glazed-Percentage")
            
                @property
                def multiple_glazed_percentage_nr(self): return self.find(f"{{{self.__class__.namespace}}}Multiple-Glazed-Percentage-NR")
            
                def add_multiple_glazed_percentage_nr(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Multiple-Glazed-Percentage-NR")
            
                @property
                def is_zero_carbon_home(self): return self.find(f"{{{self.__class__.namespace}}}Is-Zero-Carbon-Home")
            
                def add_is_zero_carbon_home(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Zero-Carbon-Home")
            
                class Walls(_Base, etree.ElementBase):
                    ""
                    element_name = "Walls"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Walls"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Walls"
                        parent_method_name ="walls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def walls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Walls"
                        parent_method_name ="walls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def walls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Walls"
                        parent_method_name ="walls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def walls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Roof(_Base, etree.ElementBase):
                    ""
                    element_name = "Roof"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Roof"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Roof"
                        parent_method_name ="roof"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def roof(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Roof"
                        parent_method_name ="roof"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def roof(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Roof"
                        parent_method_name ="roof"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def roof(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Floor(_Base, etree.ElementBase):
                    ""
                    element_name = "Floor"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Floor"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Floor"
                        parent_method_name ="floor"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def floor(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Floor"
                        parent_method_name ="floor"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def floor(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Floor"
                        parent_method_name ="floor"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def floor(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Windows(_Base, etree.ElementBase):
                    ""
                    element_name = "Windows"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Windows"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Windows"
                        parent_method_name ="windows"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def windows(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Windows"
                        parent_method_name ="windows"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def windows(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Windows"
                        parent_method_name ="windows"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def windows(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Main_Heating(_Base, etree.ElementBase):
                    ""
                    element_name = "Main-Heating"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Main_Heating"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 2
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Main_Heating"
                        parent_method_name ="main_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Main_Heating"
                        parent_method_name ="main_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Main_Heating"
                        parent_method_name ="main_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Main_Heating_Controls(_Base, etree.ElementBase):
                    ""
                    element_name = "Main-Heating-Controls"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Main_Heating_Controls"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 2
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Main_Heating_Controls"
                        parent_method_name ="main_heating_controls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating_controls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Main_Heating_Controls"
                        parent_method_name ="main_heating_controls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating_controls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Main_Heating_Controls"
                        parent_method_name ="main_heating_controls"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def main_heating_controls(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Secondary_Heating(_Base, etree.ElementBase):
                    ""
                    element_name = "Secondary-Heating"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Secondary_Heating"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Secondary_Heating"
                        parent_method_name ="secondary_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def secondary_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Secondary_Heating"
                        parent_method_name ="secondary_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def secondary_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Secondary_Heating"
                        parent_method_name ="secondary_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def secondary_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Hot_Water(_Base, etree.ElementBase):
                    ""
                    element_name = "Hot-Water"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Hot_Water"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Hot_Water"
                        parent_method_name ="hot_water"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def hot_water(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Hot_Water"
                        parent_method_name ="hot_water"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def hot_water(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Hot_Water"
                        parent_method_name ="hot_water"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def hot_water(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Lighting(_Base, etree.ElementBase):
                    ""
                    element_name = "Lighting"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Lighting"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Lighting"
                        parent_method_name ="lighting"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def lighting(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Lighting"
                        parent_method_name ="lighting"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def lighting(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Lighting"
                        parent_method_name ="lighting"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def lighting(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Air_Tightness(_Base, etree.ElementBase):
                    ""
                    element_name = "Air-Tightness"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertySummaryType"
                    class_name = "Air_Tightness"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = ["Description", "Energy_Efficiency_Rating", "Environmental_Efficiency_Rating"]
                    subclass_method_names = ["description", "energy_efficiency_rating", "environmental_efficiency_rating"]
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                
                    def add_description(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                
                    @property
                    def energy_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    def add_energy_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Efficiency-Rating")
                
                    @property
                    def environmental_efficiency_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    def add_environmental_efficiency_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Efficiency-Rating")
                
                    class Description(_Base, etree.ElementBase):
                        ""
                        element_name = "Description"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Sentence"
                        class_name = "Description"
                        documentation = """Overall description of the property feature"""
                        type_documentation = """String value with a language code for natural-language text."""
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Air_Tightness"
                        parent_method_name ="air_tightness"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def air_tightness(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Energy_Efficiency_Rating"
                        documentation = """Overall summary of the energy efficiency of the property feature."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Air_Tightness"
                        parent_method_name ="air_tightness"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def air_tightness(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Environmental_Efficiency_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Efficiency-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyEfficiencySummaryCode"
                        class_name = "Environmental_Efficiency_Rating"
                        documentation = """Summary of the environmental efficiency of the property feature"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'N/A', '1': 'Very Poor', '2': 'Poor', '3': 'Average', '4': 'Good', '5': 'Very Good'}
                        map_values = {'N/A': '0', 'Very Poor': '1', 'Poor': '2', 'Average': '3', 'Good': '4', 'Very Good': '5'}
                        parent_class_name = "Air_Tightness"
                        parent_method_name ="air_tightness"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def air_tightness(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Has_Fixed_Air_Conditioning(_Base, etree.ElementBase):
                    ""
                    element_name = "Has-Fixed-Air-Conditioning"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Has_Fixed_Air_Conditioning"
                    documentation = """Fixed air conditioning?"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Has_Hot_Water_Cylinder(_Base, etree.ElementBase):
                    ""
                    element_name = "Has-Hot-Water-Cylinder"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Has_Hot_Water_Cylinder"
                    documentation = """Hot water cylinder?"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Has_Heated_Separate_Conservatory(_Base, etree.ElementBase):
                    ""
                    element_name = "Has-Heated-Separate-Conservatory"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Has_Heated_Separate_Conservatory"
                    documentation = """Heated separate conservatory?"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Dwelling_Type(_Base, etree.ElementBase):
                    ""
                    element_name = "Dwelling-Type"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Sentence"
                    class_name = "Dwelling_Type"
                    documentation = """Is a string such as Detached house or Top-floor flat"""
                    type_documentation = """String value with a language code for natural-language text."""
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Total_Floor_Area(_Base, etree.ElementBase):
                    ""
                    element_name = "Total-Floor-Area"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:positiveInteger"
                    class_name = "Total_Floor_Area"
                    documentation = """Is a number such as 125"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Multiple_Glazed_Percentage(_Base, etree.ElementBase):
                    ""
                    element_name = "Multiple-Glazed-Percentage"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Percentage"
                    class_name = "Multiple_Glazed_Percentage"
                    documentation = """Fraction of windows that are multiply glazed to nearest 1%."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Multiple_Glazed_Percentage_NR(_Base, etree.ElementBase):
                    ""
                    element_name = "Multiple-Glazed-Percentage-NR"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:string"
                    class_name = "Multiple_Glazed_Percentage_NR"
                    documentation = """For backward compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Is_Zero_Carbon_Home(_Base, etree.ElementBase):
                    ""
                    element_name = "Is-Zero-Carbon-Home"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Is_Zero_Carbon_Home"
                    documentation = """Is dwelling a Zero Carbon Home?"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Property_Summary"
                    parent_method_name ="property_summary"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def property_summary(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
            class Energy_Use(_Base, etree.ElementBase):
                ""
                element_name = "Energy-Use"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Energy-Use"
                class_name = "Energy_Use"
                documentation = """Calculated results from the energy assessment."""
                type_documentation = """Part of an Energy Report summarising the results of the various energy calculations made by the Home Inspector."""
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["DER", "TER", "DPER", "TPER", "DFEE", "TFEE", "Energy_Rating_Current", "Energy_Rating_Potential", "Energy_Rating_Average", "Environmental_Impact_Current", "Environmental_Impact_Potential", "Energy_Consumption_Current", "Energy_Consumption_Potential", "CO2_Emissions_Current", "CO2_Emissions_Current_Per_Floor_Area", "CO2_Emissions_Potential", "Lighting_Cost_Current", "Lighting_Cost_Potential", "Heating_Cost_Current", "Heating_Cost_Potential", "Hot_Water_Cost_Current", "Hot_Water_Cost_Potential"]
                subclass_method_names = ["der", "ter", "dper", "tper", "dfee", "tfee", "energy_rating_current", "energy_rating_potential", "energy_rating_average", "environmental_impact_current", "environmental_impact_potential", "energy_consumption_current", "energy_consumption_potential", "co2_emissions_current", "co2_emissions_current_per_floor_area", "co2_emissions_potential", "lighting_cost_current", "lighting_cost_potential", "heating_cost_current", "heating_cost_potential", "hot_water_cost_current", "hot_water_cost_potential"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def der(self): return self.find(f"{{{self.__class__.namespace}}}DER")
            
                def add_der(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}DER")
            
                @property
                def ter(self): return self.find(f"{{{self.__class__.namespace}}}TER")
            
                def add_ter(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}TER")
            
                @property
                def dper(self): return self.find(f"{{{self.__class__.namespace}}}DPER")
            
                def add_dper(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}DPER")
            
                @property
                def tper(self): return self.find(f"{{{self.__class__.namespace}}}TPER")
            
                def add_tper(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}TPER")
            
                @property
                def dfee(self): return self.find(f"{{{self.__class__.namespace}}}DFEE")
            
                def add_dfee(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}DFEE")
            
                @property
                def tfee(self): return self.find(f"{{{self.__class__.namespace}}}TFEE")
            
                def add_tfee(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}TFEE")
            
                @property
                def energy_rating_current(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Rating-Current")
            
                def add_energy_rating_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Rating-Current")
            
                @property
                def energy_rating_potential(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Rating-Potential")
            
                def add_energy_rating_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Rating-Potential")
            
                @property
                def energy_rating_average(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Rating-Average")
            
                def add_energy_rating_average(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Rating-Average")
            
                @property
                def environmental_impact_current(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Impact-Current")
            
                def add_environmental_impact_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Impact-Current")
            
                @property
                def environmental_impact_potential(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Impact-Potential")
            
                def add_environmental_impact_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Impact-Potential")
            
                @property
                def energy_consumption_current(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Consumption-Current")
            
                def add_energy_consumption_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Consumption-Current")
            
                @property
                def energy_consumption_potential(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Consumption-Potential")
            
                def add_energy_consumption_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Consumption-Potential")
            
                @property
                def co2_emissions_current(self): return self.find(f"{{{self.__class__.namespace}}}CO2-Emissions-Current")
            
                def add_co2_emissions_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}CO2-Emissions-Current")
            
                @property
                def co2_emissions_current_per_floor_area(self): return self.find(f"{{{self.__class__.namespace}}}CO2-Emissions-Current-Per-Floor-Area")
            
                def add_co2_emissions_current_per_floor_area(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}CO2-Emissions-Current-Per-Floor-Area")
            
                @property
                def co2_emissions_potential(self): return self.find(f"{{{self.__class__.namespace}}}CO2-Emissions-Potential")
            
                def add_co2_emissions_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}CO2-Emissions-Potential")
            
                @property
                def lighting_cost_current(self): return self.find(f"{{{self.__class__.namespace}}}Lighting-Cost-Current")
            
                def add_lighting_cost_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting-Cost-Current")
            
                @property
                def lighting_cost_potential(self): return self.find(f"{{{self.__class__.namespace}}}Lighting-Cost-Potential")
            
                def add_lighting_cost_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting-Cost-Potential")
            
                @property
                def heating_cost_current(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Cost-Current")
            
                def add_heating_cost_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Cost-Current")
            
                @property
                def heating_cost_potential(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Cost-Potential")
            
                def add_heating_cost_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Cost-Potential")
            
                @property
                def hot_water_cost_current(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Cost-Current")
            
                def add_hot_water_cost_current(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Cost-Current")
            
                @property
                def hot_water_cost_potential(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Cost-Potential")
            
                def add_hot_water_cost_potential(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Cost-Potential")
            
                class DER(_Base, etree.ElementBase):
                    ""
                    element_name = "DER"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "DER"
                    documentation = """The DER of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class TER(_Base, etree.ElementBase):
                    ""
                    element_name = "TER"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "TER"
                    documentation = """The TER of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class DPER(_Base, etree.ElementBase):
                    ""
                    element_name = "DPER"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "DPER"
                    documentation = """The DPER of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class TPER(_Base, etree.ElementBase):
                    ""
                    element_name = "TPER"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "TPER"
                    documentation = """The TPER of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class DFEE(_Base, etree.ElementBase):
                    ""
                    element_name = "DFEE"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "DFEE"
                    documentation = """The DFEE of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class TFEE(_Base, etree.ElementBase):
                    ""
                    element_name = "TFEE"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "TFEE"
                    documentation = """The TFEE of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Rating_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Rating-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "EnergyRatingType"
                    class_name = "Energy_Rating_Current"
                    documentation = """The Current Energy Rating of the Property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Rating_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Rating-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "EnergyRatingType"
                    class_name = "Energy_Rating_Potential"
                    documentation = """The overall Energy Rating for the Property being assessed."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Rating_Average(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Rating-Average"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "EnergyRatingType"
                    class_name = "Energy_Rating_Average"
                    documentation = """Average SAP rating for the country concerned. 0 if unknown or not applicable"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Environmental_Impact_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Environmental-Impact-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "EnergyRatingType"
                    class_name = "Environmental_Impact_Current"
                    documentation = """The estimated current Environmental Impact Rating of the property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Environmental_Impact_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Environmental-Impact-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "EnergyRatingType"
                    class_name = "Environmental_Impact_Potential"
                    documentation = """The estimated potential Environmental Impact Rating of the property"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = int
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Consumption_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Consumption-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Energy_Consumption_Current"
                    documentation = """Estimated total energy consumption for the Property in a 12 month period. Value is Kilowatt Hours per Square Metre (kWh/m2)"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Consumption_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Consumption-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Energy_Consumption_Potential"
                    documentation = """Estimated total energy consumption for the Property in a 12 month period. Value is Kilowatt Hours per Square Metre (kWh/m2)"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class CO2_Emissions_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "CO2-Emissions-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "CO2_Emissions_Current"
                    documentation = """CO2 emissions per year in tonnes/year."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class CO2_Emissions_Current_Per_Floor_Area(_Base, etree.ElementBase):
                    ""
                    element_name = "CO2-Emissions-Current-Per-Floor-Area"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "CO2_Emissions_Current_Per_Floor_Area"
                    documentation = """CO2 emissions per square metre floor area per year in kg/m2."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class CO2_Emissions_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "CO2-Emissions-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "CO2_Emissions_Potential"
                    documentation = """Estimated value in Tonnes per Year of the total CO2 emissions produced by the Property in 12 month period."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Lighting_Cost_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Lighting-Cost-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Lighting_Cost_Current"
                    documentation = """The current estimated cost of Lighting for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Lighting_Cost_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Lighting-Cost-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Lighting_Cost_Potential"
                    documentation = """The current estimated cost of Lighting for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Heating_Cost_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Heating-Cost-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Heating_Cost_Current"
                    documentation = """The current estimated cost of Heating for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Heating_Cost_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Heating-Cost-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Heating_Cost_Potential"
                    documentation = """The current estimated cost of Heating for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Hot_Water_Cost_Current(_Base, etree.ElementBase):
                    ""
                    element_name = "Hot-Water-Cost-Current"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Hot_Water_Cost_Current"
                    documentation = """|The current estimated cost of Hot Water for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Hot_Water_Cost_Potential(_Base, etree.ElementBase):
                    ""
                    element_name = "Hot-Water-Cost-Potential"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Hot_Water_Cost_Potential"
                    documentation = """|The current estimated cost of Hot Water for the property"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Energy_Use"
                    parent_method_name ="energy_use"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def energy_use(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
            class Suggested_Improvements(_Base, etree.ElementBase):
                ""
                element_name = "Suggested-Improvements"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Suggested-Improvements"
                class_name = "Suggested_Improvements"
                documentation = """Improvement measures listed on the EPC."""
                type_documentation = """Part of an Energy Report that describes the a set of improvements that the Home Inspector considers would contribute to the overall energy rating of the property."""
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["Improvement"]
                subclass_method_names = ["improvement"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def improvement(self): return self.findall(f"{{{self.__class__.namespace}}}Improvement")
            
                def add_improvement(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement")
            
                class Improvement(_Base, etree.ElementBase):
                    ""
                    element_name = "Improvement"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Improvement"
                    class_name = "Improvement"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Suggested_Improvements"
                    parent_method_name ="suggested_improvements"
                    subclass_class_names = ["Sequence", "Improvement_Category", "Improvement_Type", "Typical_Saving", "Energy_Performance_Rating", "Environmental_Impact_Rating", "Improvement_Details", "Indicative_Cost", "Green_Deal_Category"]
                    subclass_method_names = ["sequence", "improvement_category", "improvement_type", "typical_saving", "energy_performance_rating", "environmental_impact_rating", "improvement_details", "indicative_cost", "green_deal_category"]
                
                    @property
                    def suggested_improvements(self): return self.getparent()
                
                    @property
                    def sequence(self): return self.find(f"{{{self.__class__.namespace}}}Sequence")
                
                    def add_sequence(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Sequence")
                
                    @property
                    def improvement_category(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Category")
                
                    def add_improvement_category(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Category")
                
                    @property
                    def improvement_type(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    def add_improvement_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    @property
                    def typical_saving(self): return self.find(f"{{{self.__class__.namespace}}}Typical-Saving")
                
                    def add_typical_saving(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Typical-Saving")
                
                    @property
                    def energy_performance_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Performance-Rating")
                
                    def add_energy_performance_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Performance-Rating")
                
                    @property
                    def environmental_impact_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Impact-Rating")
                
                    def add_environmental_impact_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Impact-Rating")
                
                    @property
                    def improvement_details(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Details")
                
                    def add_improvement_details(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Details")
                
                    @property
                    def indicative_cost(self): return self.find(f"{{{self.__class__.namespace}}}Indicative-Cost")
                
                    def add_indicative_cost(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Indicative-Cost")
                
                    @property
                    def green_deal_category(self): return self.find(f"{{{self.__class__.namespace}}}Green-Deal-Category")
                
                    def add_green_deal_category(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Green-Deal-Category")
                
                    class Sequence(_Base, etree.ElementBase):
                        ""
                        element_name = "Sequence"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:integer"
                        class_name = "Sequence"
                        documentation = """Sequence of the Suggested Improvements within the set of Suggested Improvements. This is used to order the Recommendations on the output HCR / EPC so that the cumulative Ratings make sense. The Improved Energy Ratings that result from carrying out a Suggested Improvement are cumulative and assume that the improvements have been installed in the order they appear in the list. Hence they must be sequenced."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Improvement_Category(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Category"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "RecommendationCategoryCode"
                        class_name = "Improvement_Category"
                        documentation = """The category of improvement. This identifies where on the report the recommendation is printed."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Lower cost - this is for backwards compatibility only and should not be used', '2': 'Higher cost - this is for backwards compatibility only and should not be used', '3': 'Further measure - this is for backwards compatibility only and should not be used', '4': 'Deselected. This is for backwards compatibility only and should not be used.', '5': 'Normal measure', '6': 'Alternative measure'}
                        map_values = {'Lower cost - this is for backwards compatibility only and should not be used': '1', 'Higher cost - this is for backwards compatibility only and should not be used': '2', 'Further measure - this is for backwards compatibility only and should not be used': '3', 'Deselected. This is for backwards compatibility only and should not be used.': '4', 'Normal measure': '5', 'Alternative measure': '6'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Improvement_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ImprovementMeasureCode"
                        class_name = "Improvement_Type"
                        documentation = """Suggested work to be carried out on the Property to improve its energy efficiency. This should be a enumerated list of acceptable improvements but it hasn't yet been defined."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'A': 'Loft insulation', 'A2': 'Flat roof insulation', 'A3': 'Room-in-roof insulation', 'B': 'Cavity wall insulation', 'C': 'Hot water cylinder insulation', 'D': 'Draughtproofing', 'E': 'Low energy lights', 'F': 'Cylinder thermostat', 'G': 'Heating controls for wet central heating system', 'H': 'Heating controls for warm air system', 'I': 'Upgrade boiler, same fuel', 'J': 'Biomass boiler', 'J2': 'Biomass boiler as alternative improvement', 'K': 'Biomass room heater with boiler', 'L': 'New or replacement fan-assisted storage heaters', 'L2': 'New or replacement high heat retention storage heaters', 'M': 'Replacement warm-air unit', 'N': 'Solar water heating', 'O': 'Replacement double glazed windows', 'O3': 'Replacement double glazing units', 'P': 'Secondary glazing', 'Q': 'Solid wall insulation', 'Q2': 'External insulation with cavity wall insulation', 'R': 'Condensing oil boiler', 'S': 'Change heating to Band A gas condensing boiler (no fuel switch)', 'T': 'Change heating to Band A gas condensing boiler (fuel switch)', 'T2': 'Flue gas heat recovery', 'U': 'Photovoltaics', 'V': 'Wind turbine (roof mounted)', 'V2': 'Wind turbine (on mast)', 'W': 'Floor insulation', 'X': 'Insulated doors', 'Y': 'Instantaneous waste water heat recovery', 'Y2': 'Storage waste water heat recovery', 'Z1': 'Air or ground source heat pump', 'Z2': 'Air or ground source heat pump with underfloor heating', 'Z3': 'Micro-CHP'}
                        map_values = {'Loft insulation': 'A', 'Flat roof insulation': 'A2', 'Room-in-roof insulation': 'A3', 'Cavity wall insulation': 'B', 'Hot water cylinder insulation': 'C', 'Draughtproofing': 'D', 'Low energy lights': 'E', 'Cylinder thermostat': 'F', 'Heating controls for wet central heating system': 'G', 'Heating controls for warm air system': 'H', 'Upgrade boiler, same fuel': 'I', 'Biomass boiler': 'J', 'Biomass boiler as alternative improvement': 'J2', 'Biomass room heater with boiler': 'K', 'New or replacement fan-assisted storage heaters': 'L', 'New or replacement high heat retention storage heaters': 'L2', 'Replacement warm-air unit': 'M', 'Solar water heating': 'N', 'Replacement double glazed windows': 'O', 'Replacement double glazing units': 'O3', 'Secondary glazing': 'P', 'Solid wall insulation': 'Q', 'External insulation with cavity wall insulation': 'Q2', 'Condensing oil boiler': 'R', 'Change heating to Band A gas condensing boiler (no fuel switch)': 'S', 'Change heating to Band A gas condensing boiler (fuel switch)': 'T', 'Flue gas heat recovery': 'T2', 'Photovoltaics': 'U', 'Wind turbine (roof mounted)': 'V', 'Wind turbine (on mast)': 'V2', 'Floor insulation': 'W', 'Insulated doors': 'X', 'Instantaneous waste water heat recovery': 'Y', 'Storage waste water heat recovery': 'Y2', 'Air or ground source heat pump': 'Z1', 'Air or ground source heat pump with underfloor heating': 'Z2', 'Micro-CHP': 'Z3'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Typical_Saving(_Base, etree.ElementBase):
                        ""
                        element_name = "Typical-Saving"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Money"
                        class_name = "Typical_Saving"
                        documentation = """Typical savings (in British Pounds) per year if the suggested improvement is carried out. 0 if not assessed"""
                        type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Performance_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Performance-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyRatingType"
                        class_name = "Energy_Performance_Rating"
                        documentation = """The estimated Energy performance rating of the Property after the Suggested Improvement has been carried out providing any preceding Suggested Improvement has also been carried out. 0 if not assessed"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Environmental_Impact_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Impact-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyRatingType"
                        class_name = "Environmental_Impact_Rating"
                        documentation = """The estimated Environmental Impact rating of the Property after the Suggested Improvement has been carried out providing any preceding Suggested Improvement has also been carried out. 0 if not assessed"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Improvement_Details(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Details"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "None"
                        class_name = "Improvement_Details"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = ["Improvement_Texts", "Improvement_Number"]
                        subclass_method_names = ["improvement_texts", "improvement_number"]
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def improvement_texts(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Texts")
                    
                        def add_improvement_texts(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Texts")
                    
                        @property
                        def improvement_number(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Number")
                    
                        def add_improvement_number(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Number")
                    
                        class Improvement_Texts(_Base, etree.ElementBase):
                            ""
                            element_name = "Improvement-Texts"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "ImprovementTexts"
                            class_name = "Improvement_Texts"
                            documentation = """For backward compatability only"""
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Improvement_Details"
                            parent_method_name ="improvement_details"
                            subclass_class_names = ["Improvement_Summary", "Improvement_Heading", "Improvement_Description"]
                            subclass_method_names = ["improvement_summary", "improvement_heading", "improvement_description"]
                        
                            @property
                            def improvement_details(self): return self.getparent()
                        
                            @property
                            def improvement_summary(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Summary")
                        
                            def add_improvement_summary(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Summary")
                        
                            @property
                            def improvement_heading(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Heading")
                        
                            def add_improvement_heading(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Heading")
                        
                            @property
                            def improvement_description(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Description")
                        
                            def add_improvement_description(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Description")
                        
                            class Improvement_Summary(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Summary"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Summary"
                                documentation = """A short description of the suggested improvement."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Improvement_Heading(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Heading"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Heading"
                                documentation = """Text to precede the improvement description. If this field is not provided the 'Improvement-Summary' is used instead."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Improvement_Description(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Description"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Description"
                                documentation = """Detailed description of the suggested improvement."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                        class Improvement_Number(_Base, etree.ElementBase):
                            ""
                            element_name = "Improvement-Number"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "RecommendationSummaryCode"
                            class_name = "Improvement_Number"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'Insulate hot water cylinder with 80 mm jacket', '2': 'Increase hot water cylinder insulation', '3': 'Add additional 80 mm jacket to hot water cylinder', '4': 'Hot water cylinder thermostat', '5': 'Increase loft insulation to 270 mm', '6': 'Cavity wall insulation', '7': 'Internal or external wall insulation', '8': 'Replace single glazed windows with low-E double glazing', '9': 'Secondary glazing to single glazed windows', '10': 'Draught proofing', '11': 'Heating controls (programmer, room thermostat and TRVs)', '12': 'Heating controls (room thermostat and TRVs)', '13': 'Heating controls (thermostatic radiator valves)', '14': 'Heating controls (room thermostat)', '15': 'Heating controls (programmer and TRVs)', '16': 'Heating controls (time and temperature zone control)', '17': 'Heating controls (programmer and room thermostat)', '18': 'Heating controls (room thermostat)', '19': 'Solar water heating', '20': 'Replace boiler with new condensing boiler', '21': 'Replace boiler with new condensing boiler', '22': 'Replace boiler with biomass boiler', '23': 'Wood pellet stove with boiler and radiators', '24': 'Fan assisted storage heaters and dual immersion cylinder', '25': 'Fan assisted storage heaters', '26': 'Replacement warm air unit', '27': 'Change heating to gas condensing boiler', '28': 'Condensing oil boiler with radiators', '29': 'Change heating to gas condensing boiler', '30': 'Fan assisted storage heaters and dual immersion cylinder', '31': 'Fan-assisted storage heaters', '32': 'Change heating to gas condensing boiler', '34': 'Solar photovoltaic panels, 2.5 kWp', '35': 'Low energy lighting for all fixed outlets', '36': 'Replace heating unit with condensing unit', '37': 'Condensing boiler (separate from the range cooker)', '38': 'Condensing boiler (separate from the range cooker)', '39': 'Wood pellet stove with boiler and radiators', '40': 'Change room heaters to condensing boiler', '41': 'Change room heaters to condensing boiler', '42': 'Replace heating unit with mains gas condensing unit', '43': 'Condensing oil boiler with radiators', '44': 'Wind turbine', '45': 'Flat roof insulation', '46': 'Room-in-roof insulation', '47': 'Floor insulation', '48': 'High performance external doors', '49': 'Heat recovery system for mixer showers', '50': 'Flue gas heat recovery device in conjunction with boiler', '51': 'Air or ground source heat pump', '52': 'Air or ground source heat pump with underfloor heating', '53': 'Micro CHP', '54': 'Biomass boiler (Exempted Appliance if in Smoke Control Area)', '55': 'External insulation with cavity wall insulation'}
                            map_values = {'Insulate hot water cylinder with 80 mm jacket': '1', 'Increase hot water cylinder insulation': '2', 'Add additional 80 mm jacket to hot water cylinder': '3', 'Hot water cylinder thermostat': '4', 'Increase loft insulation to 270 mm': '5', 'Cavity wall insulation': '6', 'Internal or external wall insulation': '7', 'Replace single glazed windows with low-E double glazing': '8', 'Secondary glazing to single glazed windows': '9', 'Draught proofing': '10', 'Heating controls (programmer, room thermostat and TRVs)': '11', 'Heating controls (room thermostat and TRVs)': '12', 'Heating controls (thermostatic radiator valves)': '13', 'Heating controls (room thermostat)': '18', 'Heating controls (programmer and TRVs)': '15', 'Heating controls (time and temperature zone control)': '16', 'Heating controls (programmer and room thermostat)': '17', 'Solar water heating': '19', 'Replace boiler with new condensing boiler': '21', 'Replace boiler with biomass boiler': '22', 'Wood pellet stove with boiler and radiators': '39', 'Fan assisted storage heaters and dual immersion cylinder': '30', 'Fan assisted storage heaters': '25', 'Replacement warm air unit': '26', 'Change heating to gas condensing boiler': '32', 'Condensing oil boiler with radiators': '43', 'Fan-assisted storage heaters': '31', 'Solar photovoltaic panels, 2.5 kWp': '34', 'Low energy lighting for all fixed outlets': '35', 'Replace heating unit with condensing unit': '36', 'Condensing boiler (separate from the range cooker)': '38', 'Change room heaters to condensing boiler': '41', 'Replace heating unit with mains gas condensing unit': '42', 'Wind turbine': '44', 'Flat roof insulation': '45', 'Room-in-roof insulation': '46', 'Floor insulation': '47', 'High performance external doors': '48', 'Heat recovery system for mixer showers': '49', 'Flue gas heat recovery device in conjunction with boiler': '50', 'Air or ground source heat pump': '51', 'Air or ground source heat pump with underfloor heating': '52', 'Micro CHP': '53', 'Biomass boiler (Exempted Appliance if in Smoke Control Area)': '54', 'External insulation with cavity wall insulation': '55'}
                            parent_class_name = "Improvement_Details"
                            parent_method_name ="improvement_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def improvement_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                    class Indicative_Cost(_Base, etree.ElementBase):
                        ""
                        element_name = "Indicative-Cost"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Indicative_Cost"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Green_Deal_Category(_Base, etree.ElementBase):
                        ""
                        element_name = "Green-Deal-Category"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "GreenDealCategoryCode"
                        class_name = "Green_Deal_Category"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': '1. Not eligible for Green Deal', '2': '2. Eligible with additional finance', '3': '3. Eligible without additional finance', 'NI': 'Not assessed. Use for alternative measures and for new dwelling EPCs'}
                        map_values = {'1. Not eligible for Green Deal': '1', '2. Eligible with additional finance': '2', '3. Eligible without additional finance': '3', 'Not assessed. Use for alternative measures and for new dwelling EPCs': 'NI'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
            class LZC_Energy_Sources(_Base, etree.ElementBase):
                ""
                element_name = "LZC-Energy-Sources"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "LZC-Energy-Sources"
                class_name = "LZC_Energy_Sources"
                documentation = None
                type_documentation = """Details of low and zero carbon energy source(s) for the property, if any."""
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["LZC_Energy_Source"]
                subclass_method_names = ["lzc_energy_source"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def lzc_energy_source(self): return self.findall(f"{{{self.__class__.namespace}}}LZC-Energy-Source")
            
                def add_lzc_energy_source(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}LZC-Energy-Source")
            
                class LZC_Energy_Source(_Base, etree.ElementBase):
                    ""
                    element_name = "LZC-Energy-Source"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-LZCEnergySourceCode"
                    class_name = "LZC_Energy_Source"
                    documentation = """Low and zero carbon energy source(s) for the property."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = str
                    map_codes = {'1': 'Biofuel main heating', '2': 'Biofuel community heating', '3': 'Biofuel community heating for some of heat generation', '4': 'Biofuel secondary heating', '5': 'Geothermal heat source', '6': 'Community combined heat and power', '7': 'Ground source heat pump', '8': 'Water source heat pump', '9': 'Air source heat pump', '10': 'Solar water heating', '11': 'Solar photovoltaics', '12': 'Wind turbine', '13': 'Community heat pump', '14': 'Hydro-electric generation', '15': 'Micro-CHP', '16': 'Exhaust air heat pump', '17': 'Solar-assisted heat pump'}
                    map_values = {'Biofuel main heating': '1', 'Biofuel community heating': '2', 'Biofuel community heating for some of heat generation': '3', 'Biofuel secondary heating': '4', 'Geothermal heat source': '5', 'Community combined heat and power': '6', 'Ground source heat pump': '7', 'Water source heat pump': '8', 'Air source heat pump': '9', 'Solar water heating': '10', 'Solar photovoltaics': '11', 'Wind turbine': '12', 'Community heat pump': '13', 'Hydro-electric generation': '14', 'Micro-CHP': '15', 'Exhaust air heat pump': '16', 'Solar-assisted heat pump': '17'}
                    parent_class_name = "LZC_Energy_Sources"
                    parent_method_name ="lzc_energy_sources"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def lzc_energy_sources(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
            class Renewable_Heat_Incentive(_Base, etree.ElementBase):
                ""
                element_name = "Renewable-Heat-Incentive"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Renewable-Heat-Incentive"
                class_name = "Renewable_Heat_Incentive"
                documentation = None
                type_documentation = None
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["RHI_New_Dwelling", "RHI_Existing_Dwelling"]
                subclass_method_names = ["rhi_new_dwelling", "rhi_existing_dwelling"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def rhi_new_dwelling(self): return self.find(f"{{{self.__class__.namespace}}}RHI-New-Dwelling")
            
                def add_rhi_new_dwelling(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}RHI-New-Dwelling")
            
                @property
                def rhi_existing_dwelling(self): return self.find(f"{{{self.__class__.namespace}}}RHI-Existing-Dwelling")
            
                def add_rhi_existing_dwelling(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}RHI-Existing-Dwelling")
            
                class RHI_New_Dwelling(_Base, etree.ElementBase):
                    ""
                    element_name = "RHI-New-Dwelling"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "None"
                    class_name = "RHI_New_Dwelling"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Renewable_Heat_Incentive"
                    parent_method_name ="renewable_heat_incentive"
                    subclass_class_names = ["Space_Heating", "Water_Heating"]
                    subclass_method_names = ["space_heating", "water_heating"]
                
                    @property
                    def renewable_heat_incentive(self): return self.getparent()
                
                    @property
                    def space_heating(self): return self.find(f"{{{self.__class__.namespace}}}Space-Heating")
                
                    def add_space_heating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Space-Heating")
                
                    @property
                    def water_heating(self): return self.find(f"{{{self.__class__.namespace}}}Water-Heating")
                
                    def add_water_heating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Water-Heating")
                
                    class Space_Heating(_Base, etree.ElementBase):
                        ""
                        element_name = "Space-Heating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Space_Heating"
                        documentation = """Space heating requirement."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_New_Dwelling"
                        parent_method_name ="rhi_new_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_new_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Water_Heating(_Base, etree.ElementBase):
                        ""
                        element_name = "Water-Heating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Water_Heating"
                        documentation = """Water heating requirement."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_New_Dwelling"
                        parent_method_name ="rhi_new_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_new_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class RHI_Existing_Dwelling(_Base, etree.ElementBase):
                    ""
                    element_name = "RHI-Existing-Dwelling"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "None"
                    class_name = "RHI_Existing_Dwelling"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Renewable_Heat_Incentive"
                    parent_method_name ="renewable_heat_incentive"
                    subclass_class_names = ["Space_Heating_Existing_Dwelling", "Space_Heating_With_Loft_Insulation", "Space_Heating_With_Cavity_Insulation", "Space_Heating_With_Loft_And_Cavity_Insulation", "Water_Heating", "Impact_Of_Loft_Insulation", "Impact_Of_Cavity_Insulation", "Impact_Of_Solid_Wall_Insulation"]
                    subclass_method_names = ["space_heating_existing_dwelling", "space_heating_with_loft_insulation", "space_heating_with_cavity_insulation", "space_heating_with_loft_and_cavity_insulation", "water_heating", "impact_of_loft_insulation", "impact_of_cavity_insulation", "impact_of_solid_wall_insulation"]
                
                    @property
                    def renewable_heat_incentive(self): return self.getparent()
                
                    @property
                    def space_heating_existing_dwelling(self): return self.find(f"{{{self.__class__.namespace}}}Space-Heating-Existing-Dwelling")
                
                    def add_space_heating_existing_dwelling(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Space-Heating-Existing-Dwelling")
                
                    @property
                    def space_heating_with_loft_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Space-Heating-With-Loft-Insulation")
                
                    def add_space_heating_with_loft_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Space-Heating-With-Loft-Insulation")
                
                    @property
                    def space_heating_with_cavity_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Space-Heating-With-Cavity-Insulation")
                
                    def add_space_heating_with_cavity_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Space-Heating-With-Cavity-Insulation")
                
                    @property
                    def space_heating_with_loft_and_cavity_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Space-Heating-With-Loft-And-Cavity-Insulation")
                
                    def add_space_heating_with_loft_and_cavity_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Space-Heating-With-Loft-And-Cavity-Insulation")
                
                    @property
                    def water_heating(self): return self.find(f"{{{self.__class__.namespace}}}Water-Heating")
                
                    def add_water_heating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Water-Heating")
                
                    @property
                    def impact_of_loft_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Impact-Of-Loft-Insulation")
                
                    def add_impact_of_loft_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Impact-Of-Loft-Insulation")
                
                    @property
                    def impact_of_cavity_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Impact-Of-Cavity-Insulation")
                
                    def add_impact_of_cavity_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Impact-Of-Cavity-Insulation")
                
                    @property
                    def impact_of_solid_wall_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Impact-Of-Solid-Wall-Insulation")
                
                    def add_impact_of_solid_wall_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Impact-Of-Solid-Wall-Insulation")
                
                    class Space_Heating_Existing_Dwelling(_Base, etree.ElementBase):
                        ""
                        element_name = "Space-Heating-Existing-Dwelling"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Space_Heating_Existing_Dwelling"
                        documentation = """Space heating requirement for existing dwelling."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Space_Heating_With_Loft_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Space-Heating-With-Loft-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Space_Heating_With_Loft_Insulation"
                        documentation = """Space heating requirement after implementation of loft insulation recommendation, omit if loft insulation not recommended. For backwards compatibility only, do not use"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Space_Heating_With_Cavity_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Space-Heating-With-Cavity-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Space_Heating_With_Cavity_Insulation"
                        documentation = """Space heating requirement after implementation of cavity insulation recommendation, omit if cavity insulation not recommended. For backwards compatibility only, do not use"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Space_Heating_With_Loft_And_Cavity_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Space-Heating-With-Loft-And-Cavity-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Space_Heating_With_Loft_And_Cavity_Insulation"
                        documentation = """Space heating requirement after implementation of loft and cavity insulation recommendations, same as existing dwelling if neither is recommended. For backwards compatibility only, do not use"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Water_Heating(_Base, etree.ElementBase):
                        ""
                        element_name = "Water-Heating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Water_Heating"
                        documentation = """Water heating requirement."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Impact_Of_Loft_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Impact-Of-Loft-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:nonPositiveInteger"
                        class_name = "Impact_Of_Loft_Insulation"
                        documentation = """Reduction in space heating requirement with loft insulation (as negative value). Omit if not applicable"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Impact_Of_Cavity_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Impact-Of-Cavity-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:nonPositiveInteger"
                        class_name = "Impact_Of_Cavity_Insulation"
                        documentation = """Reduction in space heating requirement with cavity insulation (as negative value). Omit if not applicable"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Impact_Of_Solid_Wall_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Impact-Of-Solid-Wall-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:nonPositiveInteger"
                        class_name = "Impact_Of_Solid_Wall_Insulation"
                        documentation = """Reduction in space heating requirement with solid wall insulation (as negative value). Omit if not applicable"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "RHI_Existing_Dwelling"
                        parent_method_name ="rhi_existing_dwelling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def rhi_existing_dwelling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
            class Green_Deal_Package(_Base, etree.ElementBase):
                ""
                element_name = "Green-Deal-Package"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Green-Deal-Package"
                class_name = "Green_Deal_Package"
                documentation = """Improvements that can form a Green Deal package"""
                type_documentation = None
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["Green_Deal_Improvement", "Electricity_Saving", "Gas_Saving", "Other_Fuel_Saving"]
                subclass_method_names = ["green_deal_improvement", "electricity_saving", "gas_saving", "other_fuel_saving"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def green_deal_improvement(self): return self.findall(f"{{{self.__class__.namespace}}}Green-Deal-Improvement")
            
                def add_green_deal_improvement(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Green-Deal-Improvement")
            
                @property
                def electricity_saving(self): return self.find(f"{{{self.__class__.namespace}}}Electricity-Saving")
            
                def add_electricity_saving(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Electricity-Saving")
            
                @property
                def gas_saving(self): return self.find(f"{{{self.__class__.namespace}}}Gas-Saving")
            
                def add_gas_saving(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Gas-Saving")
            
                @property
                def other_fuel_saving(self): return self.find(f"{{{self.__class__.namespace}}}Other-Fuel-Saving")
            
                def add_other_fuel_saving(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Other-Fuel-Saving")
            
                class Green_Deal_Improvement(_Base, etree.ElementBase):
                    ""
                    element_name = "Green-Deal-Improvement"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Green-Deal-Improvement"
                    class_name = "Green_Deal_Improvement"
                    documentation = """Improvements from Suggested-Improvements in the Green Deal package"""
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Green_Deal_Package"
                    parent_method_name ="green_deal_package"
                    subclass_class_names = ["Improvement_Type", "Improvement_Number"]
                    subclass_method_names = ["improvement_type", "improvement_number"]
                
                    @property
                    def green_deal_package(self): return self.getparent()
                
                    @property
                    def improvement_type(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    def add_improvement_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    @property
                    def improvement_number(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Number")
                
                    def add_improvement_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Number")
                
                    class Improvement_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ImprovementMeasureCode"
                        class_name = "Improvement_Type"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'A': 'Loft insulation', 'A2': 'Flat roof insulation', 'A3': 'Room-in-roof insulation', 'B': 'Cavity wall insulation', 'C': 'Hot water cylinder insulation', 'D': 'Draughtproofing', 'E': 'Low energy lights', 'F': 'Cylinder thermostat', 'G': 'Heating controls for wet central heating system', 'H': 'Heating controls for warm air system', 'I': 'Upgrade boiler, same fuel', 'J': 'Biomass boiler', 'J2': 'Biomass boiler as alternative improvement', 'K': 'Biomass room heater with boiler', 'L': 'New or replacement fan-assisted storage heaters', 'L2': 'New or replacement high heat retention storage heaters', 'M': 'Replacement warm-air unit', 'N': 'Solar water heating', 'O': 'Replacement double glazed windows', 'O3': 'Replacement double glazing units', 'P': 'Secondary glazing', 'Q': 'Solid wall insulation', 'Q2': 'External insulation with cavity wall insulation', 'R': 'Condensing oil boiler', 'S': 'Change heating to Band A gas condensing boiler (no fuel switch)', 'T': 'Change heating to Band A gas condensing boiler (fuel switch)', 'T2': 'Flue gas heat recovery', 'U': 'Photovoltaics', 'V': 'Wind turbine (roof mounted)', 'V2': 'Wind turbine (on mast)', 'W': 'Floor insulation', 'X': 'Insulated doors', 'Y': 'Instantaneous waste water heat recovery', 'Y2': 'Storage waste water heat recovery', 'Z1': 'Air or ground source heat pump', 'Z2': 'Air or ground source heat pump with underfloor heating', 'Z3': 'Micro-CHP'}
                        map_values = {'Loft insulation': 'A', 'Flat roof insulation': 'A2', 'Room-in-roof insulation': 'A3', 'Cavity wall insulation': 'B', 'Hot water cylinder insulation': 'C', 'Draughtproofing': 'D', 'Low energy lights': 'E', 'Cylinder thermostat': 'F', 'Heating controls for wet central heating system': 'G', 'Heating controls for warm air system': 'H', 'Upgrade boiler, same fuel': 'I', 'Biomass boiler': 'J', 'Biomass boiler as alternative improvement': 'J2', 'Biomass room heater with boiler': 'K', 'New or replacement fan-assisted storage heaters': 'L', 'New or replacement high heat retention storage heaters': 'L2', 'Replacement warm-air unit': 'M', 'Solar water heating': 'N', 'Replacement double glazed windows': 'O', 'Replacement double glazing units': 'O3', 'Secondary glazing': 'P', 'Solid wall insulation': 'Q', 'External insulation with cavity wall insulation': 'Q2', 'Condensing oil boiler': 'R', 'Change heating to Band A gas condensing boiler (no fuel switch)': 'S', 'Change heating to Band A gas condensing boiler (fuel switch)': 'T', 'Flue gas heat recovery': 'T2', 'Photovoltaics': 'U', 'Wind turbine (roof mounted)': 'V', 'Wind turbine (on mast)': 'V2', 'Floor insulation': 'W', 'Insulated doors': 'X', 'Instantaneous waste water heat recovery': 'Y', 'Storage waste water heat recovery': 'Y2', 'Air or ground source heat pump': 'Z1', 'Air or ground source heat pump with underfloor heating': 'Z2', 'Micro-CHP': 'Z3'}
                        parent_class_name = "Green_Deal_Improvement"
                        parent_method_name ="green_deal_improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def green_deal_improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Improvement_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "RecommendationSummaryCode"
                        class_name = "Improvement_Number"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Insulate hot water cylinder with 80 mm jacket', '2': 'Increase hot water cylinder insulation', '3': 'Add additional 80 mm jacket to hot water cylinder', '4': 'Hot water cylinder thermostat', '5': 'Increase loft insulation to 270 mm', '6': 'Cavity wall insulation', '7': 'Internal or external wall insulation', '8': 'Replace single glazed windows with low-E double glazing', '9': 'Secondary glazing to single glazed windows', '10': 'Draught proofing', '11': 'Heating controls (programmer, room thermostat and TRVs)', '12': 'Heating controls (room thermostat and TRVs)', '13': 'Heating controls (thermostatic radiator valves)', '14': 'Heating controls (room thermostat)', '15': 'Heating controls (programmer and TRVs)', '16': 'Heating controls (time and temperature zone control)', '17': 'Heating controls (programmer and room thermostat)', '18': 'Heating controls (room thermostat)', '19': 'Solar water heating', '20': 'Replace boiler with new condensing boiler', '21': 'Replace boiler with new condensing boiler', '22': 'Replace boiler with biomass boiler', '23': 'Wood pellet stove with boiler and radiators', '24': 'Fan assisted storage heaters and dual immersion cylinder', '25': 'Fan assisted storage heaters', '26': 'Replacement warm air unit', '27': 'Change heating to gas condensing boiler', '28': 'Condensing oil boiler with radiators', '29': 'Change heating to gas condensing boiler', '30': 'Fan assisted storage heaters and dual immersion cylinder', '31': 'Fan-assisted storage heaters', '32': 'Change heating to gas condensing boiler', '34': 'Solar photovoltaic panels, 2.5 kWp', '35': 'Low energy lighting for all fixed outlets', '36': 'Replace heating unit with condensing unit', '37': 'Condensing boiler (separate from the range cooker)', '38': 'Condensing boiler (separate from the range cooker)', '39': 'Wood pellet stove with boiler and radiators', '40': 'Change room heaters to condensing boiler', '41': 'Change room heaters to condensing boiler', '42': 'Replace heating unit with mains gas condensing unit', '43': 'Condensing oil boiler with radiators', '44': 'Wind turbine', '45': 'Flat roof insulation', '46': 'Room-in-roof insulation', '47': 'Floor insulation', '48': 'High performance external doors', '49': 'Heat recovery system for mixer showers', '50': 'Flue gas heat recovery device in conjunction with boiler', '51': 'Air or ground source heat pump', '52': 'Air or ground source heat pump with underfloor heating', '53': 'Micro CHP', '54': 'Biomass boiler (Exempted Appliance if in Smoke Control Area)', '55': 'External insulation with cavity wall insulation'}
                        map_values = {'Insulate hot water cylinder with 80 mm jacket': '1', 'Increase hot water cylinder insulation': '2', 'Add additional 80 mm jacket to hot water cylinder': '3', 'Hot water cylinder thermostat': '4', 'Increase loft insulation to 270 mm': '5', 'Cavity wall insulation': '6', 'Internal or external wall insulation': '7', 'Replace single glazed windows with low-E double glazing': '8', 'Secondary glazing to single glazed windows': '9', 'Draught proofing': '10', 'Heating controls (programmer, room thermostat and TRVs)': '11', 'Heating controls (room thermostat and TRVs)': '12', 'Heating controls (thermostatic radiator valves)': '13', 'Heating controls (room thermostat)': '18', 'Heating controls (programmer and TRVs)': '15', 'Heating controls (time and temperature zone control)': '16', 'Heating controls (programmer and room thermostat)': '17', 'Solar water heating': '19', 'Replace boiler with new condensing boiler': '21', 'Replace boiler with biomass boiler': '22', 'Wood pellet stove with boiler and radiators': '39', 'Fan assisted storage heaters and dual immersion cylinder': '30', 'Fan assisted storage heaters': '25', 'Replacement warm air unit': '26', 'Change heating to gas condensing boiler': '32', 'Condensing oil boiler with radiators': '43', 'Fan-assisted storage heaters': '31', 'Solar photovoltaic panels, 2.5 kWp': '34', 'Low energy lighting for all fixed outlets': '35', 'Replace heating unit with condensing unit': '36', 'Condensing boiler (separate from the range cooker)': '38', 'Change room heaters to condensing boiler': '41', 'Replace heating unit with mains gas condensing unit': '42', 'Wind turbine': '44', 'Flat roof insulation': '45', 'Room-in-roof insulation': '46', 'Floor insulation': '47', 'High performance external doors': '48', 'Heat recovery system for mixer showers': '49', 'Flue gas heat recovery device in conjunction with boiler': '50', 'Air or ground source heat pump': '51', 'Air or ground source heat pump with underfloor heating': '52', 'Micro CHP': '53', 'Biomass boiler (Exempted Appliance if in Smoke Control Area)': '54', 'External insulation with cavity wall insulation': '55'}
                        parent_class_name = "Green_Deal_Improvement"
                        parent_method_name ="green_deal_improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def green_deal_improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class Electricity_Saving(_Base, etree.ElementBase):
                    ""
                    element_name = "Electricity-Saving"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Electricity_Saving"
                    documentation = """Total electricity saving for the package"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Green_Deal_Package"
                    parent_method_name ="green_deal_package"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def green_deal_package(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Gas_Saving(_Base, etree.ElementBase):
                    ""
                    element_name = "Gas-Saving"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Gas_Saving"
                    documentation = """Total gas saving for the package"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Green_Deal_Package"
                    parent_method_name ="green_deal_package"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def green_deal_package(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Other_Fuel_Saving(_Base, etree.ElementBase):
                    ""
                    element_name = "Other-Fuel-Saving"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Money"
                    class_name = "Other_Fuel_Saving"
                    documentation = """Total other saving for the package"""
                    type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "Green_Deal_Package"
                    parent_method_name ="green_deal_package"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def green_deal_package(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
            class Alternative_Improvements(_Base, etree.ElementBase):
                ""
                element_name = "Alternative-Improvements"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Suggested-Improvements"
                class_name = "Alternative_Improvements"
                documentation = """Alternative improvements to some of those given in Suggested-Improvements"""
                type_documentation = """Part of an Energy Report that describes the a set of improvements that the Home Inspector considers would contribute to the overall energy rating of the property."""
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["Improvement"]
                subclass_method_names = ["improvement"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def improvement(self): return self.findall(f"{{{self.__class__.namespace}}}Improvement")
            
                def add_improvement(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement")
            
                class Improvement(_Base, etree.ElementBase):
                    ""
                    element_name = "Improvement"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Improvement"
                    class_name = "Improvement"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = "unbounded"
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "Alternative_Improvements"
                    parent_method_name ="alternative_improvements"
                    subclass_class_names = ["Sequence", "Improvement_Category", "Improvement_Type", "Typical_Saving", "Energy_Performance_Rating", "Environmental_Impact_Rating", "Improvement_Details", "Indicative_Cost", "Green_Deal_Category"]
                    subclass_method_names = ["sequence", "improvement_category", "improvement_type", "typical_saving", "energy_performance_rating", "environmental_impact_rating", "improvement_details", "indicative_cost", "green_deal_category"]
                
                    @property
                    def alternative_improvements(self): return self.getparent()
                
                    @property
                    def sequence(self): return self.find(f"{{{self.__class__.namespace}}}Sequence")
                
                    def add_sequence(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Sequence")
                
                    @property
                    def improvement_category(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Category")
                
                    def add_improvement_category(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Category")
                
                    @property
                    def improvement_type(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    def add_improvement_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Type")
                
                    @property
                    def typical_saving(self): return self.find(f"{{{self.__class__.namespace}}}Typical-Saving")
                
                    def add_typical_saving(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Typical-Saving")
                
                    @property
                    def energy_performance_rating(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Performance-Rating")
                
                    def add_energy_performance_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Performance-Rating")
                
                    @property
                    def environmental_impact_rating(self): return self.find(f"{{{self.__class__.namespace}}}Environmental-Impact-Rating")
                
                    def add_environmental_impact_rating(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Environmental-Impact-Rating")
                
                    @property
                    def improvement_details(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Details")
                
                    def add_improvement_details(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Details")
                
                    @property
                    def indicative_cost(self): return self.find(f"{{{self.__class__.namespace}}}Indicative-Cost")
                
                    def add_indicative_cost(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Indicative-Cost")
                
                    @property
                    def green_deal_category(self): return self.find(f"{{{self.__class__.namespace}}}Green-Deal-Category")
                
                    def add_green_deal_category(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Green-Deal-Category")
                
                    class Sequence(_Base, etree.ElementBase):
                        ""
                        element_name = "Sequence"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:integer"
                        class_name = "Sequence"
                        documentation = """Sequence of the Suggested Improvements within the set of Suggested Improvements. This is used to order the Recommendations on the output HCR / EPC so that the cumulative Ratings make sense. The Improved Energy Ratings that result from carrying out a Suggested Improvement are cumulative and assume that the improvements have been installed in the order they appear in the list. Hence they must be sequenced."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Improvement_Category(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Category"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "RecommendationCategoryCode"
                        class_name = "Improvement_Category"
                        documentation = """The category of improvement. This identifies where on the report the recommendation is printed."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Lower cost - this is for backwards compatibility only and should not be used', '2': 'Higher cost - this is for backwards compatibility only and should not be used', '3': 'Further measure - this is for backwards compatibility only and should not be used', '4': 'Deselected. This is for backwards compatibility only and should not be used.', '5': 'Normal measure', '6': 'Alternative measure'}
                        map_values = {'Lower cost - this is for backwards compatibility only and should not be used': '1', 'Higher cost - this is for backwards compatibility only and should not be used': '2', 'Further measure - this is for backwards compatibility only and should not be used': '3', 'Deselected. This is for backwards compatibility only and should not be used.': '4', 'Normal measure': '5', 'Alternative measure': '6'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Improvement_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ImprovementMeasureCode"
                        class_name = "Improvement_Type"
                        documentation = """Suggested work to be carried out on the Property to improve its energy efficiency. This should be a enumerated list of acceptable improvements but it hasn't yet been defined."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'A': 'Loft insulation', 'A2': 'Flat roof insulation', 'A3': 'Room-in-roof insulation', 'B': 'Cavity wall insulation', 'C': 'Hot water cylinder insulation', 'D': 'Draughtproofing', 'E': 'Low energy lights', 'F': 'Cylinder thermostat', 'G': 'Heating controls for wet central heating system', 'H': 'Heating controls for warm air system', 'I': 'Upgrade boiler, same fuel', 'J': 'Biomass boiler', 'J2': 'Biomass boiler as alternative improvement', 'K': 'Biomass room heater with boiler', 'L': 'New or replacement fan-assisted storage heaters', 'L2': 'New or replacement high heat retention storage heaters', 'M': 'Replacement warm-air unit', 'N': 'Solar water heating', 'O': 'Replacement double glazed windows', 'O3': 'Replacement double glazing units', 'P': 'Secondary glazing', 'Q': 'Solid wall insulation', 'Q2': 'External insulation with cavity wall insulation', 'R': 'Condensing oil boiler', 'S': 'Change heating to Band A gas condensing boiler (no fuel switch)', 'T': 'Change heating to Band A gas condensing boiler (fuel switch)', 'T2': 'Flue gas heat recovery', 'U': 'Photovoltaics', 'V': 'Wind turbine (roof mounted)', 'V2': 'Wind turbine (on mast)', 'W': 'Floor insulation', 'X': 'Insulated doors', 'Y': 'Instantaneous waste water heat recovery', 'Y2': 'Storage waste water heat recovery', 'Z1': 'Air or ground source heat pump', 'Z2': 'Air or ground source heat pump with underfloor heating', 'Z3': 'Micro-CHP'}
                        map_values = {'Loft insulation': 'A', 'Flat roof insulation': 'A2', 'Room-in-roof insulation': 'A3', 'Cavity wall insulation': 'B', 'Hot water cylinder insulation': 'C', 'Draughtproofing': 'D', 'Low energy lights': 'E', 'Cylinder thermostat': 'F', 'Heating controls for wet central heating system': 'G', 'Heating controls for warm air system': 'H', 'Upgrade boiler, same fuel': 'I', 'Biomass boiler': 'J', 'Biomass boiler as alternative improvement': 'J2', 'Biomass room heater with boiler': 'K', 'New or replacement fan-assisted storage heaters': 'L', 'New or replacement high heat retention storage heaters': 'L2', 'Replacement warm-air unit': 'M', 'Solar water heating': 'N', 'Replacement double glazed windows': 'O', 'Replacement double glazing units': 'O3', 'Secondary glazing': 'P', 'Solid wall insulation': 'Q', 'External insulation with cavity wall insulation': 'Q2', 'Condensing oil boiler': 'R', 'Change heating to Band A gas condensing boiler (no fuel switch)': 'S', 'Change heating to Band A gas condensing boiler (fuel switch)': 'T', 'Flue gas heat recovery': 'T2', 'Photovoltaics': 'U', 'Wind turbine (roof mounted)': 'V', 'Wind turbine (on mast)': 'V2', 'Floor insulation': 'W', 'Insulated doors': 'X', 'Instantaneous waste water heat recovery': 'Y', 'Storage waste water heat recovery': 'Y2', 'Air or ground source heat pump': 'Z1', 'Air or ground source heat pump with underfloor heating': 'Z2', 'Micro-CHP': 'Z3'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Typical_Saving(_Base, etree.ElementBase):
                        ""
                        element_name = "Typical-Saving"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Money"
                        class_name = "Typical_Saving"
                        documentation = """Typical savings (in British Pounds) per year if the suggested improvement is carried out. 0 if not assessed"""
                        type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Energy_Performance_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Energy-Performance-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyRatingType"
                        class_name = "Energy_Performance_Rating"
                        documentation = """The estimated Energy performance rating of the Property after the Suggested Improvement has been carried out providing any preceding Suggested Improvement has also been carried out. 0 if not assessed"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Environmental_Impact_Rating(_Base, etree.ElementBase):
                        ""
                        element_name = "Environmental-Impact-Rating"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "EnergyRatingType"
                        class_name = "Environmental_Impact_Rating"
                        documentation = """The estimated Environmental Impact rating of the Property after the Suggested Improvement has been carried out providing any preceding Suggested Improvement has also been carried out. 0 if not assessed"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Improvement_Details(_Base, etree.ElementBase):
                        ""
                        element_name = "Improvement-Details"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "None"
                        class_name = "Improvement_Details"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = ["Improvement_Texts", "Improvement_Number"]
                        subclass_method_names = ["improvement_texts", "improvement_number"]
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def improvement_texts(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Texts")
                    
                        def add_improvement_texts(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Texts")
                    
                        @property
                        def improvement_number(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Number")
                    
                        def add_improvement_number(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Number")
                    
                        class Improvement_Texts(_Base, etree.ElementBase):
                            ""
                            element_name = "Improvement-Texts"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "ImprovementTexts"
                            class_name = "Improvement_Texts"
                            documentation = """For backward compatability only"""
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Improvement_Details"
                            parent_method_name ="improvement_details"
                            subclass_class_names = ["Improvement_Summary", "Improvement_Heading", "Improvement_Description"]
                            subclass_method_names = ["improvement_summary", "improvement_heading", "improvement_description"]
                        
                            @property
                            def improvement_details(self): return self.getparent()
                        
                            @property
                            def improvement_summary(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Summary")
                        
                            def add_improvement_summary(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Summary")
                        
                            @property
                            def improvement_heading(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Heading")
                        
                            def add_improvement_heading(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Heading")
                        
                            @property
                            def improvement_description(self): return self.find(f"{{{self.__class__.namespace}}}Improvement-Description")
                        
                            def add_improvement_description(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Improvement-Description")
                        
                            class Improvement_Summary(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Summary"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Summary"
                                documentation = """A short description of the suggested improvement."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Improvement_Heading(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Heading"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Heading"
                                documentation = """Text to precede the improvement description. If this field is not provided the 'Improvement-Summary' is used instead."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Improvement_Description(_Base, etree.ElementBase):
                                ""
                                element_name = "Improvement-Description"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Sentence"
                                class_name = "Improvement_Description"
                                documentation = """Detailed description of the suggested improvement."""
                                type_documentation = """String value with a language code for natural-language text."""
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Improvement_Texts"
                                parent_method_name ="improvement_texts"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def improvement_texts(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                        class Improvement_Number(_Base, etree.ElementBase):
                            ""
                            element_name = "Improvement-Number"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "RecommendationSummaryCode"
                            class_name = "Improvement_Number"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'Insulate hot water cylinder with 80 mm jacket', '2': 'Increase hot water cylinder insulation', '3': 'Add additional 80 mm jacket to hot water cylinder', '4': 'Hot water cylinder thermostat', '5': 'Increase loft insulation to 270 mm', '6': 'Cavity wall insulation', '7': 'Internal or external wall insulation', '8': 'Replace single glazed windows with low-E double glazing', '9': 'Secondary glazing to single glazed windows', '10': 'Draught proofing', '11': 'Heating controls (programmer, room thermostat and TRVs)', '12': 'Heating controls (room thermostat and TRVs)', '13': 'Heating controls (thermostatic radiator valves)', '14': 'Heating controls (room thermostat)', '15': 'Heating controls (programmer and TRVs)', '16': 'Heating controls (time and temperature zone control)', '17': 'Heating controls (programmer and room thermostat)', '18': 'Heating controls (room thermostat)', '19': 'Solar water heating', '20': 'Replace boiler with new condensing boiler', '21': 'Replace boiler with new condensing boiler', '22': 'Replace boiler with biomass boiler', '23': 'Wood pellet stove with boiler and radiators', '24': 'Fan assisted storage heaters and dual immersion cylinder', '25': 'Fan assisted storage heaters', '26': 'Replacement warm air unit', '27': 'Change heating to gas condensing boiler', '28': 'Condensing oil boiler with radiators', '29': 'Change heating to gas condensing boiler', '30': 'Fan assisted storage heaters and dual immersion cylinder', '31': 'Fan-assisted storage heaters', '32': 'Change heating to gas condensing boiler', '34': 'Solar photovoltaic panels, 2.5 kWp', '35': 'Low energy lighting for all fixed outlets', '36': 'Replace heating unit with condensing unit', '37': 'Condensing boiler (separate from the range cooker)', '38': 'Condensing boiler (separate from the range cooker)', '39': 'Wood pellet stove with boiler and radiators', '40': 'Change room heaters to condensing boiler', '41': 'Change room heaters to condensing boiler', '42': 'Replace heating unit with mains gas condensing unit', '43': 'Condensing oil boiler with radiators', '44': 'Wind turbine', '45': 'Flat roof insulation', '46': 'Room-in-roof insulation', '47': 'Floor insulation', '48': 'High performance external doors', '49': 'Heat recovery system for mixer showers', '50': 'Flue gas heat recovery device in conjunction with boiler', '51': 'Air or ground source heat pump', '52': 'Air or ground source heat pump with underfloor heating', '53': 'Micro CHP', '54': 'Biomass boiler (Exempted Appliance if in Smoke Control Area)', '55': 'External insulation with cavity wall insulation'}
                            map_values = {'Insulate hot water cylinder with 80 mm jacket': '1', 'Increase hot water cylinder insulation': '2', 'Add additional 80 mm jacket to hot water cylinder': '3', 'Hot water cylinder thermostat': '4', 'Increase loft insulation to 270 mm': '5', 'Cavity wall insulation': '6', 'Internal or external wall insulation': '7', 'Replace single glazed windows with low-E double glazing': '8', 'Secondary glazing to single glazed windows': '9', 'Draught proofing': '10', 'Heating controls (programmer, room thermostat and TRVs)': '11', 'Heating controls (room thermostat and TRVs)': '12', 'Heating controls (thermostatic radiator valves)': '13', 'Heating controls (room thermostat)': '18', 'Heating controls (programmer and TRVs)': '15', 'Heating controls (time and temperature zone control)': '16', 'Heating controls (programmer and room thermostat)': '17', 'Solar water heating': '19', 'Replace boiler with new condensing boiler': '21', 'Replace boiler with biomass boiler': '22', 'Wood pellet stove with boiler and radiators': '39', 'Fan assisted storage heaters and dual immersion cylinder': '30', 'Fan assisted storage heaters': '25', 'Replacement warm air unit': '26', 'Change heating to gas condensing boiler': '32', 'Condensing oil boiler with radiators': '43', 'Fan-assisted storage heaters': '31', 'Solar photovoltaic panels, 2.5 kWp': '34', 'Low energy lighting for all fixed outlets': '35', 'Replace heating unit with condensing unit': '36', 'Condensing boiler (separate from the range cooker)': '38', 'Change room heaters to condensing boiler': '41', 'Replace heating unit with mains gas condensing unit': '42', 'Wind turbine': '44', 'Flat roof insulation': '45', 'Room-in-roof insulation': '46', 'Floor insulation': '47', 'High performance external doors': '48', 'Heat recovery system for mixer showers': '49', 'Flue gas heat recovery device in conjunction with boiler': '50', 'Air or ground source heat pump': '51', 'Air or ground source heat pump with underfloor heating': '52', 'Micro CHP': '53', 'Biomass boiler (Exempted Appliance if in Smoke Control Area)': '54', 'External insulation with cavity wall insulation': '55'}
                            parent_class_name = "Improvement_Details"
                            parent_method_name ="improvement_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def improvement_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                    class Indicative_Cost(_Base, etree.ElementBase):
                        ""
                        element_name = "Indicative-Cost"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Indicative_Cost"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Green_Deal_Category(_Base, etree.ElementBase):
                        ""
                        element_name = "Green-Deal-Category"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "GreenDealCategoryCode"
                        class_name = "Green_Deal_Category"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': '1. Not eligible for Green Deal', '2': '2. Eligible with additional finance', '3': '3. Eligible without additional finance', 'NI': 'Not assessed. Use for alternative measures and for new dwelling EPCs'}
                        map_values = {'1. Not eligible for Green Deal': '1', '2. Eligible with additional finance': '2', '3. Eligible without additional finance': '3', 'Not assessed. Use for alternative measures and for new dwelling EPCs': 'NI'}
                        parent_class_name = "Improvement"
                        parent_method_name ="improvement"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def improvement(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
            class Addendum(_Base, etree.ElementBase):
                ""
                element_name = "Addendum"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Addendum"
                class_name = "Addendum"
                documentation = None
                type_documentation = None
                has_text_node = False
                min_occurs = 0
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "Energy_Assessment"
                parent_method_name ="energy_assessment"
                subclass_class_names = ["Cavity_Fill_Recommended", "Stone_Walls", "System_Build", "Access_Issues", "High_Exposure", "Narrow_Cavities"]
                subclass_method_names = ["cavity_fill_recommended", "stone_walls", "system_build", "access_issues", "high_exposure", "narrow_cavities"]
            
                @property
                def energy_assessment(self): return self.getparent()
            
                @property
                def cavity_fill_recommended(self): return self.find(f"{{{self.__class__.namespace}}}Cavity-Fill-Recommended")
            
                def add_cavity_fill_recommended(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Cavity-Fill-Recommended")
            
                @property
                def stone_walls(self): return self.find(f"{{{self.__class__.namespace}}}Stone-Walls")
            
                def add_stone_walls(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Stone-Walls")
            
                @property
                def system_build(self): return self.find(f"{{{self.__class__.namespace}}}System-Build")
            
                def add_system_build(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}System-Build")
            
                @property
                def access_issues(self): return self.find(f"{{{self.__class__.namespace}}}Access-Issues")
            
                def add_access_issues(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Access-Issues")
            
                @property
                def high_exposure(self): return self.find(f"{{{self.__class__.namespace}}}High-Exposure")
            
                def add_high_exposure(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}High-Exposure")
            
                @property
                def narrow_cavities(self): return self.find(f"{{{self.__class__.namespace}}}Narrow-Cavities")
            
                def add_narrow_cavities(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Narrow-Cavities")
            
                class Cavity_Fill_Recommended(_Base, etree.ElementBase):
                    ""
                    element_name = "Cavity-Fill-Recommended"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Cavity_Fill_Recommended"
                    documentation = """Cavity fill is recommended"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Stone_Walls(_Base, etree.ElementBase):
                    ""
                    element_name = "Stone-Walls"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Stone_Walls"
                    documentation = """Stone walls present, not insulated"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class System_Build(_Base, etree.ElementBase):
                    ""
                    element_name = "System-Build"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "System_Build"
                    documentation = """System build present"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Access_Issues(_Base, etree.ElementBase):
                    ""
                    element_name = "Access-Issues"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Access_Issues"
                    documentation = """Dwelling has access issues for cavity wall insulation. Include only when at least one of Cavity-Fill-Recommended, Stone-Walls, System-Build is also present"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class High_Exposure(_Base, etree.ElementBase):
                    ""
                    element_name = "High-Exposure"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "High_Exposure"
                    documentation = """Dwelling may be exposed to wind-driven rain. Include only when at least one of Cavity-Fill-Recommended, Stone-Walls, System-Build is also present"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Narrow_Cavities(_Base, etree.ElementBase):
                    ""
                    element_name = "Narrow-Cavities"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Narrow_Cavities"
                    documentation = """Dwelling may have narrow cavities. Include only when Cavity-Fill-Recommended is also present"""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "Addendum"
                    parent_method_name ="addendum"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def addendum(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
        class SAP10_Data(_Base, etree.ElementBase):
            ""
            element_name = "SAP10-Data"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "SAP10-Data"
            class_name = "SAP10_Data"
            documentation = None
            type_documentation = """These are the specific data-items collected by the HI / EA needed to perform the SAP calculation."""
            has_text_node = False
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = None
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = ["Data_Type", "SAP_Property_Details"]
            subclass_method_names = ["data_type", "sap_property_details"]
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def data_type(self): return self.find(f"{{{self.__class__.namespace}}}Data-Type")
        
            def add_data_type(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Data-Type")
        
            @property
            def sap_property_details(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Property-Details")
        
            def add_sap_property_details(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Property-Details")
        
            class Data_Type(_Base, etree.ElementBase):
                ""
                element_name = "Data-Type"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "SAP-DataTypeCode"
                class_name = "Data_Type"
                documentation = """Type of SAP data that has been collected."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = {'1': 'new dwelling as designed', '2': 'new dwelling as built', '3': 'new extension to existing dwelling', '4': 'new dwelling created by change of use', '5': 'existing dwelling', '6': 'other'}
                map_values = {'new dwelling as designed': '1', 'new dwelling as built': '2', 'new extension to existing dwelling': '3', 'new dwelling created by change of use': '4', 'existing dwelling': '5', 'other': '6'}
                parent_class_name = "SAP10_Data"
                parent_method_name ="sap10_data"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def sap10_data(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.map_codes[self.text]
            
                @value.setter
                def value(self, value):
                    if value in self.__class__.map_values:
                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                    else:
                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code):
                    if code in self.__class__.map_codes:
                        self.text = str(code)
                    else:
                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
            
            class SAP_Property_Details(_Base, etree.ElementBase):
                ""
                element_name = "SAP-Property-Details"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "SAP-Property-Details"
                class_name = "SAP_Property_Details"
                documentation = None
                type_documentation = """Various measurements a particular Property."""
                has_text_node = False
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = None
                map_codes = None
                map_values = None
                parent_class_name = "SAP10_Data"
                parent_method_name ="sap10_data"
                subclass_class_names = ["Property_Type", "Built_Form", "Living_Area", "Lowest_Storey_Area", "Orientation", "Conservatory_Type", "Terrain_Type", "Has_Special_Feature", "Special_Feature_Description", "Energy_Saved_Or_Generated", "Saved_Or_Generated_Fuel", "Energy_Used", "Energy_Used_Fuel", "Is_In_Smoke_Control_Area", "Cold_Water_Source", "Windows_Overshading", "Thermal_Mass_Parameter", "Additional_Allowable_Electricity_Generation", "Gas_Smart_Meter_Present", "Electricity_Smart_Meter_Present", "Is_Dwelling_Export_Capable", "PV_Connection", "PV_Diverter", "Battery_Capacity", "Is_Wind_Turbine_Connected_To_Dwelling_Meter", "SAP_Heating", "SAP_Energy_Source", "SAP_Building_Parts", "SAP_Opening_Types", "SAP_Ventilation", "SAP_Lighting", "SAP_Deselected_Improvements", "SAP_Flat_Details", "SAP_Special_Features", "Design_Water_Use", "SAP_Cooling"]
                subclass_method_names = ["property_type", "built_form", "living_area", "lowest_storey_area", "orientation", "conservatory_type", "terrain_type", "has_special_feature", "special_feature_description", "energy_saved_or_generated", "saved_or_generated_fuel", "energy_used", "energy_used_fuel", "is_in_smoke_control_area", "cold_water_source", "windows_overshading", "thermal_mass_parameter", "additional_allowable_electricity_generation", "gas_smart_meter_present", "electricity_smart_meter_present", "is_dwelling_export_capable", "pv_connection", "pv_diverter", "battery_capacity", "is_wind_turbine_connected_to_dwelling_meter", "sap_heating", "sap_energy_source", "sap_building_parts", "sap_opening_types", "sap_ventilation", "sap_lighting", "sap_deselected_improvements", "sap_flat_details", "sap_special_features", "design_water_use", "sap_cooling"]
            
                @property
                def sap10_data(self): return self.getparent()
            
                @property
                def property_type(self): return self.find(f"{{{self.__class__.namespace}}}Property-Type")
            
                def add_property_type(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Property-Type")
            
                @property
                def built_form(self): return self.find(f"{{{self.__class__.namespace}}}Built-Form")
            
                def add_built_form(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Built-Form")
            
                @property
                def living_area(self): return self.find(f"{{{self.__class__.namespace}}}Living-Area")
            
                def add_living_area(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Living-Area")
            
                @property
                def lowest_storey_area(self): return self.find(f"{{{self.__class__.namespace}}}Lowest-Storey-Area")
            
                def add_lowest_storey_area(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lowest-Storey-Area")
            
                @property
                def orientation(self): return self.find(f"{{{self.__class__.namespace}}}Orientation")
            
                def add_orientation(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Orientation")
            
                @property
                def conservatory_type(self): return self.find(f"{{{self.__class__.namespace}}}Conservatory-Type")
            
                def add_conservatory_type(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Conservatory-Type")
            
                @property
                def terrain_type(self): return self.find(f"{{{self.__class__.namespace}}}Terrain-Type")
            
                def add_terrain_type(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Terrain-Type")
            
                @property
                def has_special_feature(self): return self.find(f"{{{self.__class__.namespace}}}Has-Special-Feature")
            
                def add_has_special_feature(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Special-Feature")
            
                @property
                def special_feature_description(self): return self.find(f"{{{self.__class__.namespace}}}Special-Feature-Description")
            
                def add_special_feature_description(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Special-Feature-Description")
            
                @property
                def energy_saved_or_generated(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Saved-Or-Generated")
            
                def add_energy_saved_or_generated(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Saved-Or-Generated")
            
                @property
                def saved_or_generated_fuel(self): return self.find(f"{{{self.__class__.namespace}}}Saved-Or-Generated-Fuel")
            
                def add_saved_or_generated_fuel(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Saved-Or-Generated-Fuel")
            
                @property
                def energy_used(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Used")
            
                def add_energy_used(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Used")
            
                @property
                def energy_used_fuel(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Used-Fuel")
            
                def add_energy_used_fuel(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Used-Fuel")
            
                @property
                def is_in_smoke_control_area(self): return self.find(f"{{{self.__class__.namespace}}}Is-In-Smoke-Control-Area")
            
                def add_is_in_smoke_control_area(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-In-Smoke-Control-Area")
            
                @property
                def cold_water_source(self): return self.find(f"{{{self.__class__.namespace}}}Cold-Water-Source")
            
                def add_cold_water_source(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Cold-Water-Source")
            
                @property
                def windows_overshading(self): return self.find(f"{{{self.__class__.namespace}}}Windows-Overshading")
            
                def add_windows_overshading(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Windows-Overshading")
            
                @property
                def thermal_mass_parameter(self): return self.find(f"{{{self.__class__.namespace}}}Thermal-Mass-Parameter")
            
                def add_thermal_mass_parameter(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Thermal-Mass-Parameter")
            
                @property
                def additional_allowable_electricity_generation(self): return self.find(f"{{{self.__class__.namespace}}}Additional-Allowable-Electricity-Generation")
            
                def add_additional_allowable_electricity_generation(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Additional-Allowable-Electricity-Generation")
            
                @property
                def gas_smart_meter_present(self): return self.find(f"{{{self.__class__.namespace}}}Gas-Smart-Meter-Present")
            
                def add_gas_smart_meter_present(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Gas-Smart-Meter-Present")
            
                @property
                def electricity_smart_meter_present(self): return self.find(f"{{{self.__class__.namespace}}}Electricity-Smart-Meter-Present")
            
                def add_electricity_smart_meter_present(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Electricity-Smart-Meter-Present")
            
                @property
                def is_dwelling_export_capable(self): return self.find(f"{{{self.__class__.namespace}}}Is-Dwelling-Export-Capable")
            
                def add_is_dwelling_export_capable(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Dwelling-Export-Capable")
            
                @property
                def pv_connection(self): return self.find(f"{{{self.__class__.namespace}}}PV-Connection")
            
                def add_pv_connection(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Connection")
            
                @property
                def pv_diverter(self): return self.find(f"{{{self.__class__.namespace}}}PV-Diverter")
            
                def add_pv_diverter(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Diverter")
            
                @property
                def battery_capacity(self): return self.find(f"{{{self.__class__.namespace}}}Battery-Capacity")
            
                def add_battery_capacity(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Battery-Capacity")
            
                @property
                def is_wind_turbine_connected_to_dwelling_meter(self): return self.find(f"{{{self.__class__.namespace}}}Is-Wind-Turbine-Connected-To-Dwelling-Meter")
            
                def add_is_wind_turbine_connected_to_dwelling_meter(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Wind-Turbine-Connected-To-Dwelling-Meter")
            
                @property
                def sap_heating(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Heating")
            
                def add_sap_heating(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Heating")
            
                @property
                def sap_energy_source(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Energy-Source")
            
                def add_sap_energy_source(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Energy-Source")
            
                @property
                def sap_building_parts(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Building-Parts")
            
                def add_sap_building_parts(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Building-Parts")
            
                @property
                def sap_opening_types(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Opening-Types")
            
                def add_sap_opening_types(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Opening-Types")
            
                @property
                def sap_ventilation(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Ventilation")
            
                def add_sap_ventilation(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Ventilation")
            
                @property
                def sap_lighting(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Lighting")
            
                def add_sap_lighting(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Lighting")
            
                @property
                def sap_deselected_improvements(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Deselected-Improvements")
            
                def add_sap_deselected_improvements(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Deselected-Improvements")
            
                @property
                def sap_flat_details(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Flat-Details")
            
                def add_sap_flat_details(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Flat-Details")
            
                @property
                def sap_special_features(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Special-Features")
            
                def add_sap_special_features(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Special-Features")
            
                @property
                def design_water_use(self): return self.find(f"{{{self.__class__.namespace}}}Design-Water-Use")
            
                def add_design_water_use(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Design-Water-Use")
            
                @property
                def sap_cooling(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Cooling")
            
                def add_sap_cooling(self):
                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Cooling")
            
                class Property_Type(_Base, etree.ElementBase):
                    ""
                    element_name = "Property-Type"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PropertyTypeCode"
                    class_name = "Property_Type"
                    documentation = """The type of Property, such as House, Flat, Mansion, Maisonette etc."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'0': 'House', '1': 'Bungalow', '2': 'Flat', '3': 'Maisonette', '4': 'Park home'}
                    map_values = {'House': '0', 'Bungalow': '1', 'Flat': '2', 'Maisonette': '3', 'Park home': '4'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Built_Form(_Base, etree.ElementBase):
                    ""
                    element_name = "Built-Form"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-BuiltFormCode"
                    class_name = "Built_Form"
                    documentation = """The building type of the Property e.g. Detached, Semi-Detached, Terrace etc. Together with the Property Type, the Built Form provides a structured description of the property."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'Detached', '2': 'Semi-Detached', '3': 'End-Terrace', '4': 'Mid-Terrace', '5': 'Enclosed End-Terrace', '6': 'Enclosed Mid-Terrace'}
                    map_values = {'Detached': '1', 'Semi-Detached': '2', 'End-Terrace': '3', 'Mid-Terrace': '4', 'Enclosed End-Terrace': '5', 'Enclosed Mid-Terrace': '6'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Living_Area(_Base, etree.ElementBase):
                    ""
                    element_name = "Living-Area"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Living_Area"
                    documentation = """The size of the living area in square metres. The living area is the room marked on a plan as the lounge or living room, or the largest public room (irrespective of usage by particular occupants), together with any rooms not separated from the lounge or living room by doors, and including any cupboards directly accessed from the lounge or living room. Living area does not, however, extend over more than one storey, even when stairs enter the living area directly."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Lowest_Storey_Area(_Base, etree.ElementBase):
                    ""
                    element_name = "Lowest-Storey-Area"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "Lowest_Storey_Area"
                    documentation = """The Area of the lowest storey in square meters including unheated or communal areas such as garages or corridors."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Orientation(_Base, etree.ElementBase):
                    ""
                    element_name = "Orientation"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-OrientationCode"
                    class_name = "Orientation"
                    documentation = """The orientation of the front of the property."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'0': 'unknown or unspecified', '1': 'North', '2': 'North East', '3': 'East', '4': 'South East', '5': 'South', '6': 'South West', '7': 'West', '8': 'North West', '9': 'Horizontal (windows and roof windows only)'}
                    map_values = {'unknown or unspecified': '0', 'North': '1', 'North East': '2', 'East': '3', 'South East': '4', 'South': '5', 'South West': '6', 'West': '7', 'North West': '8', 'Horizontal (windows and roof windows only)': '9'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Conservatory_Type(_Base, etree.ElementBase):
                    ""
                    element_name = "Conservatory-Type"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-ConservatoryTypeCode"
                    class_name = "Conservatory_Type"
                    documentation = """Type of conservatory."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'no conservatory', '2': 'separated unheated conservatory', '3': 'separated heated conservatory', '4': 'not separated'}
                    map_values = {'no conservatory': '1', 'separated unheated conservatory': '2', 'separated heated conservatory': '3', 'not separated': '4'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Terrain_Type(_Base, etree.ElementBase):
                    ""
                    element_name = "Terrain-Type"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-TerrainTypeCode"
                    class_name = "Terrain_Type"
                    documentation = """Terrain type. Needed for wind-turbines and for applying measures."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'urban', '2': 'suburban', '3': 'rural'}
                    map_values = {'urban': '1', 'suburban': '2', 'rural': '3'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Has_Special_Feature(_Base, etree.ElementBase):
                    ""
                    element_name = "Has-Special-Feature"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Has_Special_Feature"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Special_Feature_Description(_Base, etree.ElementBase):
                    ""
                    element_name = "Special-Feature-Description"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Sentence"
                    class_name = "Special_Feature_Description"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = """String value with a language code for natural-language text."""
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.text
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Saved_Or_Generated(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Saved-Or-Generated"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Energy_Saved_Or_Generated"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Saved_Or_Generated_Fuel(_Base, etree.ElementBase):
                    ""
                    element_name = "Saved-Or-Generated-Fuel"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "HeatingFuelTypeCode"
                    class_name = "Saved_Or_Generated_Fuel"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                    map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Energy_Used(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Used"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Energy_Used"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Energy_Used_Fuel(_Base, etree.ElementBase):
                    ""
                    element_name = "Energy-Used-Fuel"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "HeatingFuelTypeCode"
                    class_name = "Energy_Used_Fuel"
                    documentation = """For backwards compatibility only, do not use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                    map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Is_In_Smoke_Control_Area(_Base, etree.ElementBase):
                    ""
                    element_name = "Is-In-Smoke-Control-Area"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "ExtendedBoolean"
                    class_name = "Is_In_Smoke_Control_Area"
                    documentation = """Is property in a smoke control area? Only if a solid fuel appliance is used."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'false': '', 'true': '', 'unknown': ''}
                    map_values = {'': 'unknown'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Cold_Water_Source(_Base, etree.ElementBase):
                    ""
                    element_name = "Cold-Water-Source"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "ColdWaterSourceCode"
                    class_name = "Cold_Water_Source"
                    documentation = """What is the cold water source? Either mains or header tank."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'mains', '2': 'header tank'}
                    map_values = {'mains': '1', 'header tank': '2'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Windows_Overshading(_Base, etree.ElementBase):
                    ""
                    element_name = "Windows-Overshading"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-WindowOvershadingCode"
                    class_name = "Windows_Overshading"
                    documentation = """Average amount of overshading of windows."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': 'very little', '2': 'average or unknown', '3': 'more than average', '4': 'heavy'}
                    map_values = {'very little': '1', 'average or unknown': '2', 'more than average': '3', 'heavy': '4'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Thermal_Mass_Parameter(_Base, etree.ElementBase):
                    ""
                    element_name = "Thermal-Mass-Parameter"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "Thermal_Mass_Parameter"
                    documentation = """Average thermal mass parameter for the dwelling in kJ/m2K. If omitted it is calculated using the kappa values of each element."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Additional_Allowable_Electricity_Generation(_Base, etree.ElementBase):
                    ""
                    element_name = "Additional-Allowable-Electricity-Generation"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "Measurement"
                    class_name = "Additional_Allowable_Electricity_Generation"
                    documentation = """Additional allowable electricity generation applicable to this dwelling in kWh per square metre; only if Zero Carbon Home assessment."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Gas_Smart_Meter_Present(_Base, etree.ElementBase):
                    ""
                    element_name = "Gas-Smart-Meter-Present"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Gas_Smart_Meter_Present"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Electricity_Smart_Meter_Present(_Base, etree.ElementBase):
                    ""
                    element_name = "Electricity-Smart-Meter-Present"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Electricity_Smart_Meter_Present"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Is_Dwelling_Export_Capable(_Base, etree.ElementBase):
                    ""
                    element_name = "Is-Dwelling-Export-Capable"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Is_Dwelling_Export_Capable"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class PV_Connection(_Base, etree.ElementBase):
                    ""
                    element_name = "PV-Connection"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "PVConnectionCode"
                    class_name = "PV_Connection"
                    documentation = None
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'0': 'not applicable (FGHRS)', '1': "not connected to dwelling's electricity meter", '2': "connected to dwelling's electricity meter"}
                    map_values = {'not applicable (FGHRS)': '0', "not connected to dwelling's electricity meter": '1', "connected to dwelling's electricity meter": '2'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class PV_Diverter(_Base, etree.ElementBase):
                    ""
                    element_name = "PV-Diverter"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "PV_Diverter"
                    documentation = """Diverter present."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class Battery_Capacity(_Base, etree.ElementBase):
                    ""
                    element_name = "Battery-Capacity"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:decimal"
                    class_name = "Battery_Capacity"
                    documentation = """Battery capacity if diverter present."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = float
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.python_type_convertor(self.text)
                
                    @value.setter
                    def value(self, value): self.text = str(value)
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code): self.text = str(code)
                
                class Is_Wind_Turbine_Connected_To_Dwelling_Meter(_Base, etree.ElementBase):
                    ""
                    element_name = "Is-Wind-Turbine-Connected-To-Dwelling-Meter"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "xs:boolean"
                    class_name = "Is_Wind_Turbine_Connected_To_Dwelling_Meter"
                    documentation = """Whether the wind turbine is connected to the Dwelling's meter."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = bool
                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                    map_values = {True: '1', False: '0'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class SAP_Heating(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Heating"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Heating"
                    class_name = "SAP_Heating"
                    documentation = None
                    type_documentation = """Details of the means by which the Main Building is heated."""
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Water_Heating_Code", "Water_Fuel_Type", "Has_Hot_Water_Cylinder", "Secondary_Heating_Category", "Secondary_Heating_Data_Source", "Secondary_Heating_Efficiency", "Secondary_Heating_Commisioning_Certificate", "Secondary_Heating_Installation_Engineer", "Secondary_Heating_Code", "Secondary_Fuel_Type", "Secondary_Heating_PCDF_Fuel_Index", "Secondary_Heating_Flue_Type", "Thermal_Store", "Has_Fixed_Air_Conditioning", "Immersion_Heating_Type", "Is_Heat_Pump_Assisted_By_Immersion", "Is_Heat_Pump_Installed_To_MIS", "Is_Immersion_For_Summer_Use", "Is_Secondary_Heating_HETAS_Approved", "Hot_Water_Store_Manufacturer", "Hot_Water_Store_Model", "Hot_Water_Store_Commissioning_Certificate", "Hot_Water_Store_Installer_Engineer_Registration", "Hot_Water_Store_Size", "Hot_Water_Store_Heat_Transfer_Area", "Hot_Water_Store_Heat_Loss_Source", "Hot_Water_Store_Heat_Loss", "Hot_Water_Store_Insulation_Type", "Hot_Water_Store_Insulation_Thickness", "Is_Thermal_Store_Near_Boiler", "Is_Thermal_Store_Or_CPSU_In_Airing_Cupboard", "Has_Cylinder_Thermostat", "Is_Cylinder_In_Heated_Space", "Is_Hot_Water_Separately_Timed", "Hot_Water_Controls_Manufacturer", "Hot_Water_Controls_Model", "SAP_Community_Heating_Systems", "Main_Heating_Details", "SAP_Heating_Design_Water_Use", "Main_Heating_Systems_Interaction", "Secondary_Heating_Declared_Values", "Primary_Pipework_Insulation", "Solar_Heating_Details", "Instantaneous_WWHRS", "Storage_WWHRS", "Shower_Outlets", "Number_Baths", "Number_Baths_WWHRS"]
                    subclass_method_names = ["water_heating_code", "water_fuel_type", "has_hot_water_cylinder", "secondary_heating_category", "secondary_heating_data_source", "secondary_heating_efficiency", "secondary_heating_commisioning_certificate", "secondary_heating_installation_engineer", "secondary_heating_code", "secondary_fuel_type", "secondary_heating_pcdf_fuel_index", "secondary_heating_flue_type", "thermal_store", "has_fixed_air_conditioning", "immersion_heating_type", "is_heat_pump_assisted_by_immersion", "is_heat_pump_installed_to_mis", "is_immersion_for_summer_use", "is_secondary_heating_hetas_approved", "hot_water_store_manufacturer", "hot_water_store_model", "hot_water_store_commissioning_certificate", "hot_water_store_installer_engineer_registration", "hot_water_store_size", "hot_water_store_heat_transfer_area", "hot_water_store_heat_loss_source", "hot_water_store_heat_loss", "hot_water_store_insulation_type", "hot_water_store_insulation_thickness", "is_thermal_store_near_boiler", "is_thermal_store_or_cpsu_in_airing_cupboard", "has_cylinder_thermostat", "is_cylinder_in_heated_space", "is_hot_water_separately_timed", "hot_water_controls_manufacturer", "hot_water_controls_model", "sap_community_heating_systems", "main_heating_details", "sap_heating_design_water_use", "main_heating_systems_interaction", "secondary_heating_declared_values", "primary_pipework_insulation", "solar_heating_details", "instantaneous_wwhrs", "storage_wwhrs", "shower_outlets", "number_baths", "number_baths_wwhrs"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def water_heating_code(self): return self.find(f"{{{self.__class__.namespace}}}Water-Heating-Code")
                
                    def add_water_heating_code(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Water-Heating-Code")
                
                    @property
                    def water_fuel_type(self): return self.find(f"{{{self.__class__.namespace}}}Water-Fuel-Type")
                
                    def add_water_fuel_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Water-Fuel-Type")
                
                    @property
                    def has_hot_water_cylinder(self): return self.find(f"{{{self.__class__.namespace}}}Has-Hot-Water-Cylinder")
                
                    def add_has_hot_water_cylinder(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Hot-Water-Cylinder")
                
                    @property
                    def secondary_heating_category(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Category")
                
                    def add_secondary_heating_category(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Category")
                
                    @property
                    def secondary_heating_data_source(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Data-Source")
                
                    def add_secondary_heating_data_source(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Data-Source")
                
                    @property
                    def secondary_heating_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Efficiency")
                
                    def add_secondary_heating_efficiency(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Efficiency")
                
                    @property
                    def secondary_heating_commisioning_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Commisioning-Certificate")
                
                    def add_secondary_heating_commisioning_certificate(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Commisioning-Certificate")
                
                    @property
                    def secondary_heating_installation_engineer(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Installation-Engineer")
                
                    def add_secondary_heating_installation_engineer(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Installation-Engineer")
                
                    @property
                    def secondary_heating_code(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Code")
                
                    def add_secondary_heating_code(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Code")
                
                    @property
                    def secondary_fuel_type(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Fuel-Type")
                
                    def add_secondary_fuel_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Fuel-Type")
                
                    @property
                    def secondary_heating_pcdf_fuel_index(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-PCDF-Fuel-Index")
                
                    def add_secondary_heating_pcdf_fuel_index(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-PCDF-Fuel-Index")
                
                    @property
                    def secondary_heating_flue_type(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Flue-Type")
                
                    def add_secondary_heating_flue_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Flue-Type")
                
                    @property
                    def thermal_store(self): return self.find(f"{{{self.__class__.namespace}}}Thermal-Store")
                
                    def add_thermal_store(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Thermal-Store")
                
                    @property
                    def has_fixed_air_conditioning(self): return self.find(f"{{{self.__class__.namespace}}}Has-Fixed-Air-Conditioning")
                
                    def add_has_fixed_air_conditioning(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Fixed-Air-Conditioning")
                
                    @property
                    def immersion_heating_type(self): return self.find(f"{{{self.__class__.namespace}}}Immersion-Heating-Type")
                
                    def add_immersion_heating_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Immersion-Heating-Type")
                
                    @property
                    def is_heat_pump_assisted_by_immersion(self): return self.find(f"{{{self.__class__.namespace}}}Is-Heat-Pump-Assisted-By-Immersion")
                
                    def add_is_heat_pump_assisted_by_immersion(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Heat-Pump-Assisted-By-Immersion")
                
                    @property
                    def is_heat_pump_installed_to_mis(self): return self.find(f"{{{self.__class__.namespace}}}Is-Heat-Pump-Installed-To-MIS")
                
                    def add_is_heat_pump_installed_to_mis(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Heat-Pump-Installed-To-MIS")
                
                    @property
                    def is_immersion_for_summer_use(self): return self.find(f"{{{self.__class__.namespace}}}Is-Immersion-For-Summer-Use")
                
                    def add_is_immersion_for_summer_use(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Immersion-For-Summer-Use")
                
                    @property
                    def is_secondary_heating_hetas_approved(self): return self.find(f"{{{self.__class__.namespace}}}Is-Secondary-Heating-HETAS-Approved")
                
                    def add_is_secondary_heating_hetas_approved(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Secondary-Heating-HETAS-Approved")
                
                    @property
                    def hot_water_store_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Manufacturer")
                
                    def add_hot_water_store_manufacturer(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Manufacturer")
                
                    @property
                    def hot_water_store_model(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Model")
                
                    def add_hot_water_store_model(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Model")
                
                    @property
                    def hot_water_store_commissioning_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Commissioning-Certificate")
                
                    def add_hot_water_store_commissioning_certificate(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Commissioning-Certificate")
                
                    @property
                    def hot_water_store_installer_engineer_registration(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Installer-Engineer-Registration")
                
                    def add_hot_water_store_installer_engineer_registration(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Installer-Engineer-Registration")
                
                    @property
                    def hot_water_store_size(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Size")
                
                    def add_hot_water_store_size(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Size")
                
                    @property
                    def hot_water_store_heat_transfer_area(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Transfer-Area")
                
                    def add_hot_water_store_heat_transfer_area(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Transfer-Area")
                
                    @property
                    def hot_water_store_heat_loss_source(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Loss-Source")
                
                    def add_hot_water_store_heat_loss_source(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Loss-Source")
                
                    @property
                    def hot_water_store_heat_loss(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Loss")
                
                    def add_hot_water_store_heat_loss(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Heat-Loss")
                
                    @property
                    def hot_water_store_insulation_type(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Insulation-Type")
                
                    def add_hot_water_store_insulation_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Insulation-Type")
                
                    @property
                    def hot_water_store_insulation_thickness(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Store-Insulation-Thickness")
                
                    def add_hot_water_store_insulation_thickness(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Store-Insulation-Thickness")
                
                    @property
                    def is_thermal_store_near_boiler(self): return self.find(f"{{{self.__class__.namespace}}}Is-Thermal-Store-Near-Boiler")
                
                    def add_is_thermal_store_near_boiler(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Thermal-Store-Near-Boiler")
                
                    @property
                    def is_thermal_store_or_cpsu_in_airing_cupboard(self): return self.find(f"{{{self.__class__.namespace}}}Is-Thermal-Store-Or-CPSU-In-Airing-Cupboard")
                
                    def add_is_thermal_store_or_cpsu_in_airing_cupboard(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Thermal-Store-Or-CPSU-In-Airing-Cupboard")
                
                    @property
                    def has_cylinder_thermostat(self): return self.find(f"{{{self.__class__.namespace}}}Has-Cylinder-Thermostat")
                
                    def add_has_cylinder_thermostat(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Cylinder-Thermostat")
                
                    @property
                    def is_cylinder_in_heated_space(self): return self.find(f"{{{self.__class__.namespace}}}Is-Cylinder-In-Heated-Space")
                
                    def add_is_cylinder_in_heated_space(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Cylinder-In-Heated-Space")
                
                    @property
                    def is_hot_water_separately_timed(self): return self.find(f"{{{self.__class__.namespace}}}Is-Hot-Water-Separately-Timed")
                
                    def add_is_hot_water_separately_timed(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Hot-Water-Separately-Timed")
                
                    @property
                    def hot_water_controls_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Controls-Manufacturer")
                
                    def add_hot_water_controls_manufacturer(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Controls-Manufacturer")
                
                    @property
                    def hot_water_controls_model(self): return self.find(f"{{{self.__class__.namespace}}}Hot-Water-Controls-Model")
                
                    def add_hot_water_controls_model(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hot-Water-Controls-Model")
                
                    @property
                    def sap_community_heating_systems(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Community-Heating-Systems")
                
                    def add_sap_community_heating_systems(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Community-Heating-Systems")
                
                    @property
                    def main_heating_details(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Details")
                
                    def add_main_heating_details(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Details")
                
                    @property
                    def sap_heating_design_water_use(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Heating-Design-Water-Use")
                
                    def add_sap_heating_design_water_use(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Heating-Design-Water-Use")
                
                    @property
                    def main_heating_systems_interaction(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Systems-Interaction")
                
                    def add_main_heating_systems_interaction(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Systems-Interaction")
                
                    @property
                    def secondary_heating_declared_values(self): return self.find(f"{{{self.__class__.namespace}}}Secondary-Heating-Declared-Values")
                
                    def add_secondary_heating_declared_values(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Secondary-Heating-Declared-Values")
                
                    @property
                    def primary_pipework_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Primary-Pipework-Insulation")
                
                    def add_primary_pipework_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Primary-Pipework-Insulation")
                
                    @property
                    def solar_heating_details(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Heating-Details")
                
                    def add_solar_heating_details(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Heating-Details")
                
                    @property
                    def instantaneous_wwhrs(self): return self.find(f"{{{self.__class__.namespace}}}Instantaneous-WWHRS")
                
                    def add_instantaneous_wwhrs(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Instantaneous-WWHRS")
                
                    @property
                    def storage_wwhrs(self): return self.find(f"{{{self.__class__.namespace}}}Storage-WWHRS")
                
                    def add_storage_wwhrs(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-WWHRS")
                
                    @property
                    def shower_outlets(self): return self.find(f"{{{self.__class__.namespace}}}Shower-Outlets")
                
                    def add_shower_outlets(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-Outlets")
                
                    @property
                    def number_baths(self): return self.find(f"{{{self.__class__.namespace}}}Number-Baths")
                
                    def add_number_baths(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Number-Baths")
                
                    @property
                    def number_baths_wwhrs(self): return self.find(f"{{{self.__class__.namespace}}}Number-Baths-WWHRS")
                
                    def add_number_baths_wwhrs(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Number-Baths-WWHRS")
                
                    class Water_Heating_Code(_Base, etree.ElementBase):
                        ""
                        element_name = "Water-Heating-Code"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-WaterHeatingCode"
                        class_name = "Water_Heating_Code"
                        documentation = """The type of Water Heating present in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Water_Fuel_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Water-Fuel-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "HeatingFuelTypeCode"
                        class_name = "Water_Fuel_Type"
                        documentation = """The type of fuel used to power the central heating e.g. Gas, Electricity. Not used if water system is main or secondary system."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                        map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Has_Hot_Water_Cylinder(_Base, etree.ElementBase):
                        ""
                        element_name = "Has-Hot-Water-Cylinder"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Has_Hot_Water_Cylinder"
                        documentation = """Hot water cylinder?"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Secondary_Heating_Category(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Category"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-SecondaryHeatingCategoryCode"
                        class_name = "Secondary_Heating_Category"
                        documentation = """Category of heating system for the secondary heating system."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'none', '10': 'room heaters'}
                        map_values = {'none': '1', 'room heaters': '10'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Secondary_Heating_Data_Source(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Data-Source"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-NonDatabaseSourceCode"
                        class_name = "Secondary_Heating_Data_Source"
                        documentation = """Source of secondary heating system data; only if secondary heating system."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'2': 'from manufacturer declaration', '3': 'from SAP table'}
                        map_values = {'from manufacturer declaration': '2', 'from SAP table': '3'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Secondary_Heating_Efficiency(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Efficiency"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "Secondary_Heating_Efficiency"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Secondary_Heating_Commisioning_Certificate(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Commisioning-Certificate"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Secondary_Heating_Commisioning_Certificate"
                        documentation = """Secondary heating system commisioning certificate number."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Secondary_Heating_Installation_Engineer(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Installation-Engineer"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Secondary_Heating_Installation_Engineer"
                        documentation = """Secondary heating installation engineer registration reference."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Secondary_Heating_Code(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Code"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-SpaceHeatingCode"
                        class_name = "Secondary_Heating_Code"
                        documentation = """Type of secondary heating present in the property; only if required and if heating data source is SAP table."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Secondary_Fuel_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Fuel-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "HeatingFuelTypeCode"
                        class_name = "Secondary_Fuel_Type"
                        documentation = """The type of fuel used to power the secondary heating e.g. Gas, Electricity; only if required."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                        map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Secondary_Heating_PCDF_Fuel_Index(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-PCDF-Fuel-Index"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:positiveInteger"
                        class_name = "Secondary_Heating_PCDF_Fuel_Index"
                        documentation = """PCDF index number of the fuel type, only if Secondary-Fuel-Type is 99 (fuel from database)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Secondary_Heating_Flue_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Flue-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "FlueTypeCode"
                        class_name = "Secondary_Heating_Flue_Type"
                        documentation = """Secondary flue type; only if secondary efficiency is manufacturer declaration and if there is a flue."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'open flue', '2': 'balanced flue', '3': 'chimney', '4': 'omitted (boiler is in an outhouse, so its flue arrangements are not relevant)', '5': 'unknown (there is a flue, but its type could not be determined)'}
                        map_values = {'open flue': '1', 'balanced flue': '2', 'chimney': '3', 'omitted (boiler is in an outhouse, so its flue arrangements are not relevant)': '4', 'unknown (there is a flue, but its type could not be determined)': '5'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Thermal_Store(_Base, etree.ElementBase):
                        ""
                        element_name = "Thermal-Store"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ThermalStoreCode"
                        class_name = "Thermal_Store"
                        documentation = """The type of thermal store; not used if main heating system is community heating scheme."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'none', '2': 'hot water only', '3': 'integrated'}
                        map_values = {'none': '1', 'hot water only': '2', 'integrated': '3'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Has_Fixed_Air_Conditioning(_Base, etree.ElementBase):
                        ""
                        element_name = "Has-Fixed-Air-Conditioning"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Has_Fixed_Air_Conditioning"
                        documentation = """Fixed air conditioning?"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Immersion_Heating_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Immersion-Heating-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "ImmersionHeatingTypeCode"
                        class_name = "Immersion_Heating_Type"
                        documentation = """The type of immersion heating; only if immersion."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'Dual', '2': 'Single'}
                        map_values = {'Dual': '1', 'Single': '2'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Heat_Pump_Assisted_By_Immersion(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Heat-Pump-Assisted-By-Immersion"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Heat_Pump_Assisted_By_Immersion"
                        documentation = """Is heat pump assisted by immersion? Applicable only to hot water only heat pumps"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Heat_Pump_Installed_To_MIS(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Heat-Pump-Installed-To-MIS"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Heat_Pump_Installed_To_MIS"
                        documentation = """Is heat pump installed to MIS standard? Only if water heating from hot water only heat pump."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Immersion_For_Summer_Use(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Immersion-For-Summer-Use"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Immersion_For_Summer_Use"
                        documentation = """Immersion for summer use? Only if main heating is solid fuel fire or room heater with boiler."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Secondary_Heating_HETAS_Approved(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Secondary-Heating-HETAS-Approved"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Secondary_Heating_HETAS_Approved"
                        documentation = """Secondary heating appliance is HETAS approved? Only if solid fuel."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Hot_Water_Store_Manufacturer(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Manufacturer"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Store_Manufacturer"
                        documentation = """Store Manufacturer name."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Model(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Model"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Store_Model"
                        documentation = """Store Model name."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Commissioning_Certificate(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Commissioning-Certificate"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Store_Commissioning_Certificate"
                        documentation = """Store comissioning certificate number."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Installer_Engineer_Registration(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Installer-Engineer-Registration"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Store_Installer_Engineer_Registration"
                        documentation = """Store installer engineer registration number."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Size(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Size"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Hot_Water_Store_Size"
                        documentation = """Hot water store size in litres; if there is a hot water store. Store refers to hot water store type which can be cylinder (if thermal store is "none"), hot-water only thermal store or integrated thermal store. Not applicable if (a) combi boiler whose data source database or (b) instantaneous combi boiler or (c) combi boiler from SAP table or (d) instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Heat_Transfer_Area(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Heat-Transfer-Area"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "Hot_Water_Store_Heat_Transfer_Area"
                        documentation = """Used when a heat pump is associated with a separate and specified hot water vessel."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Heat_Loss_Source(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Heat-Loss-Source"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-NonDatabaseSourceCode"
                        class_name = "Hot_Water_Store_Heat_Loss_Source"
                        documentation = """The source of the hot water store heat loss information; if there is a hot water store. Not applicable if (a) combi boiler whose data source database or (b) instantaneous combi boiler or (c) combi boiler from SAP table or (d) instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'2': 'from manufacturer declaration', '3': 'from SAP table'}
                        map_values = {'from manufacturer declaration': '2', 'from SAP table': '3'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Hot_Water_Store_Heat_Loss(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Heat-Loss"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Hot_Water_Store_Heat_Loss"
                        documentation = """Hot water store declared loss in kWh/day; only if there is a hot water store and if manufacturer declared loss. Not applicable if (a) combi boiler whose data source database or (b) instantaneous combi boiler or (c) combi boiler from SAP table or (d) instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Store_Insulation_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Insulation-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "HotWaterStoreInsulationTypeCode"
                        class_name = "Hot_Water_Store_Insulation_Type"
                        documentation = """Hot water store insulation; only if there is a hot water store and if loss from SAP table. Not applicable if (a) combi boiler whose data source database or (b) instantaneous combi boiler or (c) combi boiler from SAP table or (d) instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'factory-applied', '2': 'loose jacket'}
                        map_values = {'factory-applied': '1', 'loose jacket': '2'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Hot_Water_Store_Insulation_Thickness(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Store-Insulation-Thickness"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Hot_Water_Store_Insulation_Thickness"
                        documentation = """Hot water store insulation thickness in mm; only if there is a hot water store and if loss from SAP table. Not applicable if (a) combi boiler whose data source database or (b) instantaneous combi boiler or (c) combi boiler from SAP table or (d) instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Is_Thermal_Store_Near_Boiler(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Thermal-Store-Near-Boiler"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Thermal_Store_Near_Boiler"
                        documentation = """Thermal store connected to boiler by no more than 1.5 m of insulated pipework? Only if thermal store. Not applicable if combi boiler or instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Thermal_Store_Or_CPSU_In_Airing_Cupboard(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Thermal-Store-Or-CPSU-In-Airing-Cupboard"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Thermal_Store_Or_CPSU_In_Airing_Cupboard"
                        documentation = """Thermal store or CPSU in airing cupboard? Only if (a) boiler with integrated or hot-water-only thermal store, or (b) main heating is CPSU."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Has_Cylinder_Thermostat(_Base, etree.ElementBase):
                        ""
                        element_name = "Has-Cylinder-Thermostat"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Has_Cylinder_Thermostat"
                        documentation = """Hot water cylinder thermostat? Not applicable if combi boiler or instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Cylinder_In_Heated_Space(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Cylinder-In-Heated-Space"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Cylinder_In_Heated_Space"
                        documentation = """Hot water cylinder in heated space? Not applicable if combi boiler or instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Is_Hot_Water_Separately_Timed(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Hot-Water-Separately-Timed"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Hot_Water_Separately_Timed"
                        documentation = """Hot water separately timed? Not applicable if combi boiler or instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Hot_Water_Controls_Manufacturer(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Controls-Manufacturer"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Controls_Manufacturer"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hot_Water_Controls_Model(_Base, etree.ElementBase):
                        ""
                        element_name = "Hot-Water-Controls-Model"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hot_Water_Controls_Model"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class SAP_Community_Heating_Systems(_Base, etree.ElementBase):
                        ""
                        element_name = "SAP-Community-Heating-Systems"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-Community-Heating-Systems"
                        class_name = "SAP_Community_Heating_Systems"
                        documentation = None
                        type_documentation = """Community heating systems used by the property."""
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["SAP_Community_Heating_System"]
                        subclass_method_names = ["sap_community_heating_system"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def sap_community_heating_system(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Community-Heating-System")
                    
                        def add_sap_community_heating_system(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Community-Heating-System")
                    
                        class SAP_Community_Heating_System(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Community-Heating-System"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Community-Heating-System"
                            class_name = "SAP_Community_Heating_System"
                            documentation = None
                            type_documentation = """Details of a community system which heats the Main Building."""
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 2
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Community_Heating_Systems"
                            parent_method_name ="sap_community_heating_systems"
                            subclass_class_names = ["Community_Heating_Name", "Community_Heating_CO2_Emission_Factor", "Community_Heating_Primary_Energy_Factor", "Community_Heating_Use", "Is_Community_Heating_Cylinder_In_Dwelling", "Is_HIU_In_Dwelling", "HIU_Index_Number", "Community_Heating_Distribution_Type", "Community_Heat_Sources", "Community_Heating_Distribution_Loss_Factor", "Charging_Linked_To_Heat_Use", "Heat_Network_Index_Number", "Sub_Network_Name", "Heat_Network_Existing", "Heat_Network_Assessed_As_New"]
                            subclass_method_names = ["community_heating_name", "community_heating_co2_emission_factor", "community_heating_primary_energy_factor", "community_heating_use", "is_community_heating_cylinder_in_dwelling", "is_hiu_in_dwelling", "hiu_index_number", "community_heating_distribution_type", "community_heat_sources", "community_heating_distribution_loss_factor", "charging_linked_to_heat_use", "heat_network_index_number", "sub_network_name", "heat_network_existing", "heat_network_assessed_as_new"]
                        
                            @property
                            def sap_community_heating_systems(self): return self.getparent()
                        
                            @property
                            def community_heating_name(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-Name")
                        
                            def add_community_heating_name(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-Name")
                        
                            @property
                            def community_heating_co2_emission_factor(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-CO2-Emission-Factor")
                        
                            def add_community_heating_co2_emission_factor(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-CO2-Emission-Factor")
                        
                            @property
                            def community_heating_primary_energy_factor(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-Primary-Energy-Factor")
                        
                            def add_community_heating_primary_energy_factor(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-Primary-Energy-Factor")
                        
                            @property
                            def community_heating_use(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-Use")
                        
                            def add_community_heating_use(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-Use")
                        
                            @property
                            def is_community_heating_cylinder_in_dwelling(self): return self.find(f"{{{self.__class__.namespace}}}Is-Community-Heating-Cylinder-In-Dwelling")
                        
                            def add_is_community_heating_cylinder_in_dwelling(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Community-Heating-Cylinder-In-Dwelling")
                        
                            @property
                            def is_hiu_in_dwelling(self): return self.find(f"{{{self.__class__.namespace}}}Is-HIU-In-Dwelling")
                        
                            def add_is_hiu_in_dwelling(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-HIU-In-Dwelling")
                        
                            @property
                            def hiu_index_number(self): return self.find(f"{{{self.__class__.namespace}}}HIU-Index-Number")
                        
                            def add_hiu_index_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}HIU-Index-Number")
                        
                            @property
                            def community_heating_distribution_type(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-Distribution-Type")
                        
                            def add_community_heating_distribution_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-Distribution-Type")
                        
                            @property
                            def community_heat_sources(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heat-Sources")
                        
                            def add_community_heat_sources(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heat-Sources")
                        
                            @property
                            def community_heating_distribution_loss_factor(self): return self.find(f"{{{self.__class__.namespace}}}Community-Heating-Distribution-Loss-Factor")
                        
                            def add_community_heating_distribution_loss_factor(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heating-Distribution-Loss-Factor")
                        
                            @property
                            def charging_linked_to_heat_use(self): return self.find(f"{{{self.__class__.namespace}}}Charging-Linked-To-Heat-Use")
                        
                            def add_charging_linked_to_heat_use(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Charging-Linked-To-Heat-Use")
                        
                            @property
                            def heat_network_index_number(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Network-Index-Number")
                        
                            def add_heat_network_index_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Network-Index-Number")
                        
                            @property
                            def sub_network_name(self): return self.find(f"{{{self.__class__.namespace}}}Sub-Network-Name")
                        
                            def add_sub_network_name(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Sub-Network-Name")
                        
                            @property
                            def heat_network_existing(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Network-Existing")
                        
                            def add_heat_network_existing(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Network-Existing")
                        
                            @property
                            def heat_network_assessed_as_new(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Network-Assessed-As-New")
                        
                            def add_heat_network_assessed_as_new(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Network-Assessed-As-New")
                        
                            class Community_Heating_Name(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-Name"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Community_Heating_Name"
                                documentation = """The name of the community heating system"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Community_Heating_CO2_Emission_Factor(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-CO2-Emission-Factor"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Community_Heating_CO2_Emission_Factor"
                                documentation = """the community heating CO2 emission factor"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Community_Heating_Primary_Energy_Factor(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-Primary-Energy-Factor"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Community_Heating_Primary_Energy_Factor"
                                documentation = """The community heating Primary Energy Factor"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Community_Heating_Use(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-Use"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-CommunityHeatingUseCode"
                                class_name = "Community_Heating_Use"
                                documentation = """Specifies what kind of heating the community system is used for."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'space heating only', '2': 'water heating only', '3': 'space and water heating'}
                                map_values = {'space heating only': '1', 'water heating only': '2', 'space and water heating': '3'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Community_Heating_Cylinder_In_Dwelling(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Community-Heating-Cylinder-In-Dwelling"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Community_Heating_Cylinder_In_Dwelling"
                                documentation = """Community heating, cylinder in dwelling?"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_HIU_In_Dwelling(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-HIU-In-Dwelling"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_HIU_In_Dwelling"
                                documentation = """Community heating, HIU in dwelling?"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class HIU_Index_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "HIU-Index-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "HIU_Index_Number"
                                documentation = """Heat Interface Unit index number, if present."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Community_Heating_Distribution_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-Distribution-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-HeatingDistributionCode"
                                class_name = "Community_Heating_Distribution_Type"
                                documentation = """Community heating distribution"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'5': 'calculated', '6': 'unknown', '7': 'Network not compliant with Code of Practice', '8': 'Network compliant with Code of Practice', '9': 'Two adjoining dwellings'}
                                map_values = {'calculated': '5', 'unknown': '6', 'Network not compliant with Code of Practice': '7', 'Network compliant with Code of Practice': '8', 'Two adjoining dwellings': '9'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Community_Heat_Sources(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heat-Sources"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Community-Heat-Sources"
                                class_name = "Community_Heat_Sources"
                                documentation = """To be provided when there is no Heat-Network-Index-Number."""
                                type_documentation = None
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = ["Community_Heat_Source"]
                                subclass_method_names = ["community_heat_source"]
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def community_heat_source(self): return self.findall(f"{{{self.__class__.namespace}}}Community-Heat-Source")
                            
                                def add_community_heat_source(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Community-Heat-Source")
                            
                                class Community_Heat_Source(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Community-Heat-Source"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Community-Heat-Source"
                                    class_name = "Community_Heat_Source"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 1
                                    max_occurs = 5
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Community_Heat_Sources"
                                    parent_method_name ="community_heat_sources"
                                    subclass_class_names = ["Heat_Source_Type", "Heat_Fraction", "Fuel_Type", "PCDF_Fuel_Index", "Heat_Efficiency", "Power_Efficiency", "Description", "CHP_Electricity_Generation"]
                                    subclass_method_names = ["heat_source_type", "heat_fraction", "fuel_type", "pcdf_fuel_index", "heat_efficiency", "power_efficiency", "description", "chp_electricity_generation"]
                                
                                    @property
                                    def community_heat_sources(self): return self.getparent()
                                
                                    @property
                                    def heat_source_type(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Source-Type")
                                
                                    def add_heat_source_type(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Source-Type")
                                
                                    @property
                                    def heat_fraction(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Fraction")
                                
                                    def add_heat_fraction(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Fraction")
                                
                                    @property
                                    def fuel_type(self): return self.find(f"{{{self.__class__.namespace}}}Fuel-Type")
                                
                                    def add_fuel_type(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Fuel-Type")
                                
                                    @property
                                    def pcdf_fuel_index(self): return self.find(f"{{{self.__class__.namespace}}}PCDF-Fuel-Index")
                                
                                    def add_pcdf_fuel_index(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}PCDF-Fuel-Index")
                                
                                    @property
                                    def heat_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Efficiency")
                                
                                    def add_heat_efficiency(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Efficiency")
                                
                                    @property
                                    def power_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Power-Efficiency")
                                
                                    def add_power_efficiency(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Power-Efficiency")
                                
                                    @property
                                    def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                                
                                    def add_description(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                                
                                    @property
                                    def chp_electricity_generation(self): return self.find(f"{{{self.__class__.namespace}}}CHP-Electricity-Generation")
                                
                                    def add_chp_electricity_generation(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}CHP-Electricity-Generation")
                                
                                    class Heat_Source_Type(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Heat-Source-Type"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "SAP-HeatSourceTypeCode"
                                        class_name = "Heat_Source_Type"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = str
                                        map_codes = {'1': 'CHP', '2': 'boilers', '3': 'heat pump', '4': 'waste heat', '5': 'geothermal'}
                                        map_values = {'CHP': '1', 'boilers': '2', 'heat pump': '3', 'waste heat': '4', 'geothermal': '5'}
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.map_codes[self.text]
                                    
                                        @value.setter
                                        def value(self, value):
                                            if value in self.__class__.map_values:
                                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                            else:
                                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code):
                                            if code in self.__class__.map_codes:
                                                self.text = str(code)
                                            else:
                                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                    
                                    class Heat_Fraction(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Heat-Fraction"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:decimal"
                                        class_name = "Heat_Fraction"
                                        documentation = """Fraction of heat for the system provided by this heat source."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = float
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class Fuel_Type(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Fuel-Type"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "HeatingFuelTypeCode"
                                        class_name = "Fuel_Type"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = str
                                        map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                                        map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.map_codes[self.text]
                                    
                                        @value.setter
                                        def value(self, value):
                                            if value in self.__class__.map_values:
                                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                            else:
                                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code):
                                            if code in self.__class__.map_codes:
                                                self.text = str(code)
                                            else:
                                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                    
                                    class PCDF_Fuel_Index(_Base, etree.ElementBase):
                                        ""
                                        element_name = "PCDF-Fuel-Index"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:positiveInteger"
                                        class_name = "PCDF_Fuel_Index"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 0
                                        max_occurs = 1
                                        python_type_convertor = int
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class Heat_Efficiency(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Heat-Efficiency"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:decimal"
                                        class_name = "Heat_Efficiency"
                                        documentation = """Heat efficiency in %."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = float
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class Power_Efficiency(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Power-Efficiency"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:decimal"
                                        class_name = "Power_Efficiency"
                                        documentation = """Power efficiency in %. Include when heat source is CHP."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 0
                                        max_occurs = 1
                                        python_type_convertor = float
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class Description(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Description"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:string"
                                        class_name = "Description"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 0
                                        max_occurs = 1
                                        python_type_convertor = str
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.text
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class CHP_Electricity_Generation(_Base, etree.ElementBase):
                                        ""
                                        element_name = "CHP-Electricity-Generation"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "SAP-CHPElectricityGenerationCode"
                                        class_name = "CHP_Electricity_Generation"
                                        documentation = """CHP Electricity generation options from table 12f."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 0
                                        max_occurs = 1
                                        python_type_convertor = str
                                        map_codes = {'81': 'New CHP, export only.', '82': 'New CHP, flexible operation.', '83': 'New CHP, standard.', '84': 'Existing CHP (2015+), export only.', '85': 'Existing CHP (2015+), flexible operation.', '86': 'Existing CHP (2015+),standard.', '87': 'Existing CHP (pre-2015), export only.', '88': 'Existing CHP (pre-2015), flexible operation.', '89': 'Existing CHP (pre-2015), standard.'}
                                        map_values = {'New CHP, export only.': '81', 'New CHP, flexible operation.': '82', 'New CHP, standard.': '83', 'Existing CHP (2015+), export only.': '84', 'Existing CHP (2015+), flexible operation.': '85', 'Existing CHP (2015+),standard.': '86', 'Existing CHP (pre-2015), export only.': '87', 'Existing CHP (pre-2015), flexible operation.': '88', 'Existing CHP (pre-2015), standard.': '89'}
                                        parent_class_name = "Community_Heat_Source"
                                        parent_method_name ="community_heat_source"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def community_heat_source(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.map_codes[self.text]
                                    
                                        @value.setter
                                        def value(self, value):
                                            if value in self.__class__.map_values:
                                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                            else:
                                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code):
                                            if code in self.__class__.map_codes:
                                                self.text = str(code)
                                            else:
                                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                    
                            class Community_Heating_Distribution_Loss_Factor(_Base, etree.ElementBase):
                                ""
                                element_name = "Community-Heating-Distribution-Loss-Factor"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Community_Heating_Distribution_Loss_Factor"
                                documentation = """Used when Community-Heating-Distribution-Type is calculated."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Charging_Linked_To_Heat_Use(_Base, etree.ElementBase):
                                ""
                                element_name = "Charging-Linked-To-Heat-Use"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Charging_Linked_To_Heat_Use"
                                documentation = """Used for hot-water-only systems."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Heat_Network_Index_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Network-Index-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "Heat_Network_Index_Number"
                                documentation = """Index number of heat network, if applicable."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Sub_Network_Name(_Base, etree.ElementBase):
                                ""
                                element_name = "Sub-Network-Name"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Sub_Network_Name"
                                documentation = """The name by which the sub community heat network is known."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heat_Network_Existing(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Network-Existing"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Heat_Network_Existing"
                                documentation = """Whether the heat network is existing or new."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Heat_Network_Assessed_As_New(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Network-Assessed-As-New"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Heat_Network_Assessed_As_New"
                                documentation = """Whether the heat network is assessed as a new heat network (post June 2022) for Eng with a standalone gas boiler notional building."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "SAP_Community_Heating_System"
                                parent_method_name ="sap_community_heating_system"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_community_heating_system(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                    class Main_Heating_Details(_Base, etree.ElementBase):
                        ""
                        element_name = "Main-Heating-Details"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Main-Heating-Details"
                        class_name = "Main_Heating_Details"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["Main_Heating"]
                        subclass_method_names = ["main_heating"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def main_heating(self): return self.findall(f"{{{self.__class__.namespace}}}Main-Heating")
                    
                        def add_main_heating(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating")
                    
                        class Main_Heating(_Base, etree.ElementBase):
                            ""
                            element_name = "Main-Heating"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Main-Heating"
                            class_name = "Main_Heating"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 2
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Main_Heating_Details"
                            parent_method_name ="main_heating_details"
                            subclass_class_names = ["Main_Heating_Number", "Main_Heating_Category", "Main_Heating_Data_Source", "Main_Heating_Index_Number", "Main_Heating_Manufacturer", "Main_Heating_Model", "Main_Heating_Commissioning_Certificate", "Main_Heating_Installation_Engineer", "Is_Condensing_Boiler", "Condensing_Boiler_Heat_Distribution", "Heat_Pump_Heat_Distribution", "Gas_Or_Oil_Boiler_Type", "Combi_Boiler_Type", "Case_Heat_Emission", "Heat_Transfer_To_Water", "Solid_Fuel_Boiler_Type", "Main_Heating_Code", "Main_Fuel_Type", "PCDF_Fuel_Index", "Main_Heating_Control", "Heat_Emitter_Type", "Underfloor_Heat_Emitter_Type", "Main_Heating_Flue_Type", "Is_Flue_Fan_Present", "Is_Central_Heating_Pump_In_Heated_Space", "Is_Oil_Pump_In_Heated_Space", "Is_Interlocked_System", "Has_Separate_Delayed_Start", "Boiler_Fuel_Feed", "Is_Main_Heating_HETAS_Approved", "Electric_CPSU_Operating_Temperature", "Main_Heating_Fraction", "Burner_Control", "Efficiency_Type", "Main_Heating_Efficiency_Winter", "Main_Heating_Efficiency_Summer", "Main_Heating_Efficiency", "Main_Heating_System_Type", "Has_FGHRS", "FGHRS_Index_Number", "FGHRS_Energy_Source", "Main_Heating_Declared_Values", "Storage_Heaters", "Emitter_Temperature", "MCS_Installed_Heat_Pump", "Central_Heating_Pump_Age", "Control_Index_Number", "Heating_Controller_Function", "Heating_Controller_Ecodesign_Class", "Heating_Controller_Manufacturer", "Heating_Controller_Model"]
                            subclass_method_names = ["main_heating_number", "main_heating_category", "main_heating_data_source", "main_heating_index_number", "main_heating_manufacturer", "main_heating_model", "main_heating_commissioning_certificate", "main_heating_installation_engineer", "is_condensing_boiler", "condensing_boiler_heat_distribution", "heat_pump_heat_distribution", "gas_or_oil_boiler_type", "combi_boiler_type", "case_heat_emission", "heat_transfer_to_water", "solid_fuel_boiler_type", "main_heating_code", "main_fuel_type", "pcdf_fuel_index", "main_heating_control", "heat_emitter_type", "underfloor_heat_emitter_type", "main_heating_flue_type", "is_flue_fan_present", "is_central_heating_pump_in_heated_space", "is_oil_pump_in_heated_space", "is_interlocked_system", "has_separate_delayed_start", "boiler_fuel_feed", "is_main_heating_hetas_approved", "electric_cpsu_operating_temperature", "main_heating_fraction", "burner_control", "efficiency_type", "main_heating_efficiency_winter", "main_heating_efficiency_summer", "main_heating_efficiency", "main_heating_system_type", "has_fghrs", "fghrs_index_number", "fghrs_energy_source", "main_heating_declared_values", "storage_heaters", "emitter_temperature", "mcs_installed_heat_pump", "central_heating_pump_age", "control_index_number", "heating_controller_function", "heating_controller_ecodesign_class", "heating_controller_manufacturer", "heating_controller_model"]
                        
                            @property
                            def main_heating_details(self): return self.getparent()
                        
                            @property
                            def main_heating_number(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Number")
                        
                            def add_main_heating_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Number")
                        
                            @property
                            def main_heating_category(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Category")
                        
                            def add_main_heating_category(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Category")
                        
                            @property
                            def main_heating_data_source(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Data-Source")
                        
                            def add_main_heating_data_source(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Data-Source")
                        
                            @property
                            def main_heating_index_number(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Index-Number")
                        
                            def add_main_heating_index_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Index-Number")
                        
                            @property
                            def main_heating_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Manufacturer")
                        
                            def add_main_heating_manufacturer(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Manufacturer")
                        
                            @property
                            def main_heating_model(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Model")
                        
                            def add_main_heating_model(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Model")
                        
                            @property
                            def main_heating_commissioning_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Commissioning-Certificate")
                        
                            def add_main_heating_commissioning_certificate(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Commissioning-Certificate")
                        
                            @property
                            def main_heating_installation_engineer(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Installation-Engineer")
                        
                            def add_main_heating_installation_engineer(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Installation-Engineer")
                        
                            @property
                            def is_condensing_boiler(self): return self.find(f"{{{self.__class__.namespace}}}Is-Condensing-Boiler")
                        
                            def add_is_condensing_boiler(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Condensing-Boiler")
                        
                            @property
                            def condensing_boiler_heat_distribution(self): return self.find(f"{{{self.__class__.namespace}}}Condensing-Boiler-Heat-Distribution")
                        
                            def add_condensing_boiler_heat_distribution(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Condensing-Boiler-Heat-Distribution")
                        
                            @property
                            def heat_pump_heat_distribution(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Pump-Heat-Distribution")
                        
                            def add_heat_pump_heat_distribution(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Pump-Heat-Distribution")
                        
                            @property
                            def gas_or_oil_boiler_type(self): return self.find(f"{{{self.__class__.namespace}}}Gas-Or-Oil-Boiler-Type")
                        
                            def add_gas_or_oil_boiler_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Gas-Or-Oil-Boiler-Type")
                        
                            @property
                            def combi_boiler_type(self): return self.find(f"{{{self.__class__.namespace}}}Combi-Boiler-Type")
                        
                            def add_combi_boiler_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Combi-Boiler-Type")
                        
                            @property
                            def case_heat_emission(self): return self.find(f"{{{self.__class__.namespace}}}Case-Heat-Emission")
                        
                            def add_case_heat_emission(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Case-Heat-Emission")
                        
                            @property
                            def heat_transfer_to_water(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Transfer-To-Water")
                        
                            def add_heat_transfer_to_water(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Transfer-To-Water")
                        
                            @property
                            def solid_fuel_boiler_type(self): return self.find(f"{{{self.__class__.namespace}}}Solid-Fuel-Boiler-Type")
                        
                            def add_solid_fuel_boiler_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solid-Fuel-Boiler-Type")
                        
                            @property
                            def main_heating_code(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Code")
                        
                            def add_main_heating_code(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Code")
                        
                            @property
                            def main_fuel_type(self): return self.find(f"{{{self.__class__.namespace}}}Main-Fuel-Type")
                        
                            def add_main_fuel_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Fuel-Type")
                        
                            @property
                            def pcdf_fuel_index(self): return self.find(f"{{{self.__class__.namespace}}}PCDF-Fuel-Index")
                        
                            def add_pcdf_fuel_index(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}PCDF-Fuel-Index")
                        
                            @property
                            def main_heating_control(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Control")
                        
                            def add_main_heating_control(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Control")
                        
                            @property
                            def heat_emitter_type(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Emitter-Type")
                        
                            def add_heat_emitter_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Emitter-Type")
                        
                            @property
                            def underfloor_heat_emitter_type(self): return self.find(f"{{{self.__class__.namespace}}}Underfloor-Heat-Emitter-Type")
                        
                            def add_underfloor_heat_emitter_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Underfloor-Heat-Emitter-Type")
                        
                            @property
                            def main_heating_flue_type(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Flue-Type")
                        
                            def add_main_heating_flue_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Flue-Type")
                        
                            @property
                            def is_flue_fan_present(self): return self.find(f"{{{self.__class__.namespace}}}Is-Flue-Fan-Present")
                        
                            def add_is_flue_fan_present(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Flue-Fan-Present")
                        
                            @property
                            def is_central_heating_pump_in_heated_space(self): return self.find(f"{{{self.__class__.namespace}}}Is-Central-Heating-Pump-In-Heated-Space")
                        
                            def add_is_central_heating_pump_in_heated_space(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Central-Heating-Pump-In-Heated-Space")
                        
                            @property
                            def is_oil_pump_in_heated_space(self): return self.find(f"{{{self.__class__.namespace}}}Is-Oil-Pump-In-Heated-Space")
                        
                            def add_is_oil_pump_in_heated_space(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Oil-Pump-In-Heated-Space")
                        
                            @property
                            def is_interlocked_system(self): return self.find(f"{{{self.__class__.namespace}}}Is-Interlocked-System")
                        
                            def add_is_interlocked_system(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Interlocked-System")
                        
                            @property
                            def has_separate_delayed_start(self): return self.find(f"{{{self.__class__.namespace}}}Has-Separate-Delayed-Start")
                        
                            def add_has_separate_delayed_start(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Separate-Delayed-Start")
                        
                            @property
                            def boiler_fuel_feed(self): return self.find(f"{{{self.__class__.namespace}}}Boiler-Fuel-Feed")
                        
                            def add_boiler_fuel_feed(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Boiler-Fuel-Feed")
                        
                            @property
                            def is_main_heating_hetas_approved(self): return self.find(f"{{{self.__class__.namespace}}}Is-Main-Heating-HETAS-Approved")
                        
                            def add_is_main_heating_hetas_approved(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Main-Heating-HETAS-Approved")
                        
                            @property
                            def electric_cpsu_operating_temperature(self): return self.find(f"{{{self.__class__.namespace}}}Electric-CPSU-Operating-Temperature")
                        
                            def add_electric_cpsu_operating_temperature(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Electric-CPSU-Operating-Temperature")
                        
                            @property
                            def main_heating_fraction(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Fraction")
                        
                            def add_main_heating_fraction(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Fraction")
                        
                            @property
                            def burner_control(self): return self.find(f"{{{self.__class__.namespace}}}Burner-Control")
                        
                            def add_burner_control(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Burner-Control")
                        
                            @property
                            def efficiency_type(self): return self.find(f"{{{self.__class__.namespace}}}Efficiency-Type")
                        
                            def add_efficiency_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Efficiency-Type")
                        
                            @property
                            def main_heating_efficiency_winter(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Efficiency-Winter")
                        
                            def add_main_heating_efficiency_winter(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Efficiency-Winter")
                        
                            @property
                            def main_heating_efficiency_summer(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Efficiency-Summer")
                        
                            def add_main_heating_efficiency_summer(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Efficiency-Summer")
                        
                            @property
                            def main_heating_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Efficiency")
                        
                            def add_main_heating_efficiency(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Efficiency")
                        
                            @property
                            def main_heating_system_type(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-System-Type")
                        
                            def add_main_heating_system_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-System-Type")
                        
                            @property
                            def has_fghrs(self): return self.find(f"{{{self.__class__.namespace}}}Has-FGHRS")
                        
                            def add_has_fghrs(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-FGHRS")
                        
                            @property
                            def fghrs_index_number(self): return self.find(f"{{{self.__class__.namespace}}}FGHRS-Index-Number")
                        
                            def add_fghrs_index_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}FGHRS-Index-Number")
                        
                            @property
                            def fghrs_energy_source(self): return self.find(f"{{{self.__class__.namespace}}}FGHRS-Energy-Source")
                        
                            def add_fghrs_energy_source(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}FGHRS-Energy-Source")
                        
                            @property
                            def main_heating_declared_values(self): return self.find(f"{{{self.__class__.namespace}}}Main-Heating-Declared-Values")
                        
                            def add_main_heating_declared_values(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Main-Heating-Declared-Values")
                        
                            @property
                            def storage_heaters(self): return self.find(f"{{{self.__class__.namespace}}}Storage-Heaters")
                        
                            def add_storage_heaters(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-Heaters")
                        
                            @property
                            def emitter_temperature(self): return self.find(f"{{{self.__class__.namespace}}}Emitter-Temperature")
                        
                            def add_emitter_temperature(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Emitter-Temperature")
                        
                            @property
                            def mcs_installed_heat_pump(self): return self.find(f"{{{self.__class__.namespace}}}MCS-Installed-Heat-Pump")
                        
                            def add_mcs_installed_heat_pump(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}MCS-Installed-Heat-Pump")
                        
                            @property
                            def central_heating_pump_age(self): return self.find(f"{{{self.__class__.namespace}}}Central-Heating-Pump-Age")
                        
                            def add_central_heating_pump_age(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Central-Heating-Pump-Age")
                        
                            @property
                            def control_index_number(self): return self.find(f"{{{self.__class__.namespace}}}Control-Index-Number")
                        
                            def add_control_index_number(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Control-Index-Number")
                        
                            @property
                            def heating_controller_function(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Controller-Function")
                        
                            def add_heating_controller_function(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Controller-Function")
                        
                            @property
                            def heating_controller_ecodesign_class(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Controller-Ecodesign-Class")
                        
                            def add_heating_controller_ecodesign_class(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Controller-Ecodesign-Class")
                        
                            @property
                            def heating_controller_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Controller-Manufacturer")
                        
                            def add_heating_controller_manufacturer(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Controller-Manufacturer")
                        
                            @property
                            def heating_controller_model(self): return self.find(f"{{{self.__class__.namespace}}}Heating-Controller-Model")
                        
                            def add_heating_controller_model(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heating-Controller-Model")
                        
                            class Main_Heating_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "None"
                                class_name = "Main_Heating_Number"
                                documentation = """Identifies the main heating as system 1 or system 2. System 1 must always be present, system 2 is included only when there are two systems."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Category(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Category"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-MainHeatingCategoryCode"
                                class_name = "Main_Heating_Category"
                                documentation = """Category of heating system for the main heating system."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'none', '2': 'boiler with radiators or underfloor heating', '3': 'micro-cogeneration', '4': 'heat pump with radiators or underfloor heating', '5': 'heat pump with warm air distribution', '6': 'community heating system', '7': 'electric storage heaters', '8': 'electric underfloor heating', '9': 'warm air system (not heat pump)', '10': 'room heaters', '11': 'other system'}
                                map_values = {'none': '1', 'boiler with radiators or underfloor heating': '2', 'micro-cogeneration': '3', 'heat pump with radiators or underfloor heating': '4', 'heat pump with warm air distribution': '5', 'community heating system': '6', 'electric storage heaters': '7', 'electric underfloor heating': '8', 'warm air system (not heat pump)': '9', 'room heaters': '10', 'other system': '11'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Main_Heating_Data_Source(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Data-Source"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-DataSourceCode"
                                class_name = "Main_Heating_Data_Source"
                                documentation = """Source of main heating system data."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'from database', '2': 'from manufacturer declaration', '3': 'from SAP table'}
                                map_values = {'from database': '1', 'from manufacturer declaration': '2', 'from SAP table': '3'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Main_Heating_Index_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Index-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "Main_Heating_Index_Number"
                                documentation = """The ID of the heating system from the product database, if system from database."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Manufacturer(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Manufacturer"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Main_Heating_Manufacturer"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Model(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Model"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Main_Heating_Model"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Commissioning_Certificate(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Commissioning-Certificate"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Main_Heating_Commissioning_Certificate"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Installation_Engineer(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Installation-Engineer"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Main_Heating_Installation_Engineer"
                                documentation = """Main heating installation engineer registration reference."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Is_Condensing_Boiler(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Condensing-Boiler"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Condensing_Boiler"
                                documentation = """Is the boiler a condensing boiler? If boiler efficiency is manufacturer declaration."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Condensing_Boiler_Heat_Distribution(_Base, etree.ElementBase):
                                ""
                                element_name = "Condensing-Boiler-Heat-Distribution"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "Condensing_Boiler_Heat_Distribution"
                                documentation = """The temperature distribution of the condensing boiler."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heat_Pump_Heat_Distribution(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Pump-Heat-Distribution"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "Heat_Pump_Heat_Distribution"
                                documentation = """The temperature distribution of the heat pump, for wet systems only."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Gas_Or_Oil_Boiler_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Gas-Or-Oil-Boiler-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-GasOrOilBoilerTypeCode"
                                class_name = "Gas_Or_Oil_Boiler_Type"
                                documentation = """Boiler type; if boiler efficiency is manufacturer declaration and fuel is gas or oil."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'regular', '2': 'combi', '3': 'CPSU', '4': 'range cooker'}
                                map_values = {'regular': '1', 'combi': '2', 'CPSU': '3', 'range cooker': '4'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Combi_Boiler_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Combi-Boiler-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-CombiBoilerTypeCode"
                                class_name = "Combi_Boiler_Type"
                                documentation = """Combi boiler type; if it is a combi boiler and boiler efficiency is manufacturer declaration."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'instantaneous, no store or keep hot', '2': 'primary storage', '3': 'secondary storage', '4': 'CPSU', '5': 'untimed keep-hot by fuel', '6': 'timed keep hot by fuel', '7': 'untimed keep-hot by electricity', '8': 'timed keep hot by electricity', '9': 'untimed keep-hot by fuel and electricity', '10': 'timed keep hot by fuel and electricity'}
                                map_values = {'instantaneous, no store or keep hot': '1', 'primary storage': '2', 'secondary storage': '3', 'CPSU': '4', 'untimed keep-hot by fuel': '5', 'timed keep hot by fuel': '6', 'untimed keep-hot by electricity': '7', 'timed keep hot by electricity': '8', 'untimed keep-hot by fuel and electricity': '9', 'timed keep hot by fuel and electricity': '10'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Case_Heat_Emission(_Base, etree.ElementBase):
                                ""
                                element_name = "Case-Heat-Emission"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Case_Heat_Emission"
                                documentation = """Case heat emission at full load in kW; if it is a range cooker boiler and boiler efficiency is manufacturer declaration."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heat_Transfer_To_Water(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Transfer-To-Water"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Heat_Transfer_To_Water"
                                documentation = """Heat transfer to water at full load in kW; if it is a range cooker boiler and boiler efficiency is manufacturer declaration."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Solid_Fuel_Boiler_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Solid-Fuel-Boiler-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-SolidFuelBoilerType"
                                class_name = "Solid_Fuel_Boiler_Type"
                                documentation = """Boiler type; if boiler efficiency is manufacturer declaration and fuel is solid."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'independent', '2': 'open fire', '3': 'closed room heater', '4': 'range cooker'}
                                map_values = {'independent': '1', 'open fire': '2', 'closed room heater': '3', 'range cooker': '4'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Main_Heating_Code(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Code"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-SpaceHeatingCode"
                                class_name = "Main_Heating_Code"
                                documentation = """Main heating code; when heating data source is SAP table."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Fuel_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Fuel-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "HeatingFuelTypeCode"
                                class_name = "Main_Fuel_Type"
                                documentation = """The type of fuel used to power the central heating e.g. Gas, Electricity; not used if main heating system is community heating scheme."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                                map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class PCDF_Fuel_Index(_Base, etree.ElementBase):
                                ""
                                element_name = "PCDF-Fuel-Index"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "PCDF_Fuel_Index"
                                documentation = """PCDF index number of the fuel type, only if Main-Fuel-Type is 99 (fuel from database)."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Control(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Control"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-HeatingControlCode"
                                class_name = "Main_Heating_Control"
                                documentation = """Type of Main Control for the Heating System."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heat_Emitter_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Heat-Emitter-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "HeatEmitterCode"
                                class_name = "Heat_Emitter_Type"
                                documentation = """Identifies the means by which the central heating system (if present) emits heat; only when wet system (radiators or underfloor)."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'radiators', '2': 'underfloor', '3': 'both radiators and underfloor', '4': 'fan coil units'}
                                map_values = {'radiators': '1', 'underfloor': '2', 'both radiators and underfloor': '3', 'fan coil units': '4'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Underfloor_Heat_Emitter_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Underfloor-Heat-Emitter-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "UnderfloorHeatEmitterCode"
                                class_name = "Underfloor_Heat_Emitter_Type"
                                documentation = """Means by which an underfloor heating system (if present) emits heat; only when wet system (underfloor)."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'in concrete slab', '2': 'in screed above insulation', '3': 'in timber floor'}
                                map_values = {'in concrete slab': '1', 'in screed above insulation': '2', 'in timber floor': '3'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Main_Heating_Flue_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Flue-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "FlueTypeCode"
                                class_name = "Main_Heating_Flue_Type"
                                documentation = """The type of main heating flue; only if flued appliance."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'open flue', '2': 'balanced flue', '3': 'chimney', '4': 'omitted (boiler is in an outhouse, so its flue arrangements are not relevant)', '5': 'unknown (there is a flue, but its type could not be determined)'}
                                map_values = {'open flue': '1', 'balanced flue': '2', 'chimney': '3', 'omitted (boiler is in an outhouse, so its flue arrangements are not relevant)': '4', 'unknown (there is a flue, but its type could not be determined)': '5'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Flue_Fan_Present(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Flue-Fan-Present"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Flue_Fan_Present"
                                documentation = """Indicates whether the heating system contains a fan flue; only if boiler."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Central_Heating_Pump_In_Heated_Space(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Central-Heating-Pump-In-Heated-Space"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Central_Heating_Pump_In_Heated_Space"
                                documentation = """Central heating pump in heated space? Only when wet system (radiators or underfloor)."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Oil_Pump_In_Heated_Space(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Oil-Pump-In-Heated-Space"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Oil_Pump_In_Heated_Space"
                                documentation = """Oil pump in heated space? Only if oil boiler."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Interlocked_System(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Interlocked-System"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Interlocked_System"
                                documentation = """Interlocked system? Only when wet system (radiators or underfloor)."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Has_Separate_Delayed_Start(_Base, etree.ElementBase):
                                ""
                                element_name = "Has-Separate-Delayed-Start"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Has_Separate_Delayed_Start"
                                documentation = """True if there is a delayed start control separate from a controller in the database."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Boiler_Fuel_Feed(_Base, etree.ElementBase):
                                ""
                                element_name = "Boiler-Fuel-Feed"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-BoilerFuelFeedCode"
                                class_name = "Boiler_Fuel_Feed"
                                documentation = """The type of boiler fuel feed; only if solid fuel boiler with manufacturer declaration."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'gravity', '2': 'manual', '3': 'screw', '4': 'other'}
                                map_values = {'gravity': '1', 'manual': '2', 'screw': '3', 'other': '4'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Is_Main_Heating_HETAS_Approved(_Base, etree.ElementBase):
                                ""
                                element_name = "Is-Main-Heating-HETAS-Approved"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Is_Main_Heating_HETAS_Approved"
                                documentation = """Main heating appliance is HETAS approved? Only if solid fuel."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Electric_CPSU_Operating_Temperature(_Base, etree.ElementBase):
                                ""
                                element_name = "Electric-CPSU-Operating-Temperature"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Electric_CPSU_Operating_Temperature"
                                documentation = """Electric CPSU operating temperature in Celcius; only if main heating is electric CPSU."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Fraction(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Fraction"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Main_Heating_Fraction"
                                documentation = """Fraction of main heating provided by this system, is 1 if only one main system."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Burner_Control(_Base, etree.ElementBase):
                                ""
                                element_name = "Burner-Control"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-BurnerControlCode"
                                class_name = "Burner_Control"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'unknown', '2': 'on/off (gas and oil burners)', '3': 'modulating (gas and oil boilers)', '4': 'manual (solid fuel boilers)', '5': 'electrical (solid fuel boilers)'}
                                map_values = {'unknown': '1', 'on/off (gas and oil burners)': '2', 'modulating (gas and oil boilers)': '3', 'manual (solid fuel boilers)': '4', 'electrical (solid fuel boilers)': '5'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Efficiency_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Efficiency-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-EfficiencyTypeCode"
                                class_name = "Efficiency_Type"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'not gas or oil boiler', '2': 'SEDBUK(2005)', '3': 'SEDBUK(2009)', '4': 'winter and summer'}
                                map_values = {'not gas or oil boiler': '1', 'SEDBUK(2005)': '2', 'SEDBUK(2009)': '3', 'winter and summer': '4'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Main_Heating_Efficiency_Winter(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Efficiency-Winter"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Main_Heating_Efficiency_Winter"
                                documentation = """To be used if main heating data is manufacturer declaration and Efficiency-Type is winter and summer."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Efficiency_Summer(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Efficiency-Summer"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Main_Heating_Efficiency_Summer"
                                documentation = """To be used if main heating data is manufacturer declaration and Efficiency-Type is winter and summer."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_Efficiency(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Efficiency"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Main_Heating_Efficiency"
                                documentation = """If main heating is any system other than heat network."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Main_Heating_System_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-System-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Main_Heating_System_Type"
                                documentation = """Main heating system type or technology, for e.g., combi boiler, air source heat pump, etc."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Has_FGHRS(_Base, etree.ElementBase):
                                ""
                                element_name = "Has-FGHRS"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "Has_FGHRS"
                                documentation = """Flue Gas Heat Recovery System."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class FGHRS_Index_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "FGHRS-Index-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:nonNegativeInteger"
                                class_name = "FGHRS_Index_Number"
                                documentation = """FGHRS index number; only if FGHRS."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class FGHRS_Energy_Source(_Base, etree.ElementBase):
                                ""
                                element_name = "FGHRS-Energy-Source"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Energy-Source"
                                class_name = "FGHRS_Energy_Source"
                                documentation = None
                                type_documentation = """Details of the main Electricity supply to the Property."""
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = ["PV_Arrays", "Wind_Turbines", "Electricity_Tariff", "Hydro_Electric_Generation", "Hydro_Electric_Certificate", "Hydro_Electric_Generation_Months", "Is_Hydro_Output_Connected_To_Dwelling_Meter"]
                                subclass_method_names = ["pv_arrays", "wind_turbines", "electricity_tariff", "hydro_electric_generation", "hydro_electric_certificate", "hydro_electric_generation_months", "is_hydro_output_connected_to_dwelling_meter"]
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def pv_arrays(self): return self.find(f"{{{self.__class__.namespace}}}PV-Arrays")
                            
                                def add_pv_arrays(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Arrays")
                            
                                @property
                                def wind_turbines(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbines")
                            
                                def add_wind_turbines(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbines")
                            
                                @property
                                def electricity_tariff(self): return self.find(f"{{{self.__class__.namespace}}}Electricity-Tariff")
                            
                                def add_electricity_tariff(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Electricity-Tariff")
                            
                                @property
                                def hydro_electric_generation(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation")
                            
                                def add_hydro_electric_generation(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation")
                            
                                @property
                                def hydro_electric_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Certificate")
                            
                                def add_hydro_electric_certificate(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Certificate")
                            
                                @property
                                def hydro_electric_generation_months(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Months")
                            
                                def add_hydro_electric_generation_months(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Months")
                            
                                @property
                                def is_hydro_output_connected_to_dwelling_meter(self): return self.find(f"{{{self.__class__.namespace}}}Is-Hydro-Output-Connected-To-Dwelling-Meter")
                            
                                def add_is_hydro_output_connected_to_dwelling_meter(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Hydro-Output-Connected-To-Dwelling-Meter")
                            
                                class PV_Arrays(_Base, etree.ElementBase):
                                    ""
                                    element_name = "PV-Arrays"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "PV-Arrays"
                                    class_name = "PV_Arrays"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = ["PV_Array"]
                                    subclass_method_names = ["pv_array"]
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def pv_array(self): return self.findall(f"{{{self.__class__.namespace}}}PV-Array")
                                
                                    def add_pv_array(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Array")
                                
                                    class PV_Array(_Base, etree.ElementBase):
                                        ""
                                        element_name = "PV-Array"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "PV-Array"
                                        class_name = "PV_Array"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = False
                                        min_occurs = 1
                                        max_occurs = 3
                                        python_type_convertor = None
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "PV_Arrays"
                                        parent_method_name ="pv_arrays"
                                        subclass_class_names = ["Peak_Power", "Orientation", "Pitch", "Overshading", "MCS_Certificate", "MCS_Certificate_Reference", "PV_Panel_Manufacturer_Name", "Overshading_MCS"]
                                        subclass_method_names = ["peak_power", "orientation", "pitch", "overshading", "mcs_certificate", "mcs_certificate_reference", "pv_panel_manufacturer_name", "overshading_mcs"]
                                    
                                        @property
                                        def pv_arrays(self): return self.getparent()
                                    
                                        @property
                                        def peak_power(self): return self.find(f"{{{self.__class__.namespace}}}Peak-Power")
                                    
                                        def add_peak_power(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Peak-Power")
                                    
                                        @property
                                        def orientation(self): return self.find(f"{{{self.__class__.namespace}}}Orientation")
                                    
                                        def add_orientation(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Orientation")
                                    
                                        @property
                                        def pitch(self): return self.find(f"{{{self.__class__.namespace}}}Pitch")
                                    
                                        def add_pitch(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Pitch")
                                    
                                        @property
                                        def overshading(self): return self.find(f"{{{self.__class__.namespace}}}Overshading")
                                    
                                        def add_overshading(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Overshading")
                                    
                                        @property
                                        def mcs_certificate(self): return self.find(f"{{{self.__class__.namespace}}}MCS-Certificate")
                                    
                                        def add_mcs_certificate(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}MCS-Certificate")
                                    
                                        @property
                                        def mcs_certificate_reference(self): return self.find(f"{{{self.__class__.namespace}}}MCS-Certificate-Reference")
                                    
                                        def add_mcs_certificate_reference(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}MCS-Certificate-Reference")
                                    
                                        @property
                                        def pv_panel_manufacturer_name(self): return self.find(f"{{{self.__class__.namespace}}}PV-Panel-Manufacturer-Name")
                                    
                                        def add_pv_panel_manufacturer_name(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Panel-Manufacturer-Name")
                                    
                                        @property
                                        def overshading_mcs(self): return self.find(f"{{{self.__class__.namespace}}}Overshading-MCS")
                                    
                                        def add_overshading_mcs(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Overshading-MCS")
                                    
                                        class Peak_Power(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Peak-Power"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "Measurement"
                                            class_name = "Peak_Power"
                                            documentation = """Peak kW of photovoltaics (PVs) (kWp); 0.0 if none."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 1
                                            max_occurs = 1
                                            python_type_convertor = float
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.python_type_convertor(self.text)
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class Orientation(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Orientation"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "SAP-CompassDirectionCode"
                                            class_name = "Orientation"
                                            documentation = """PV orientation; only if peak kWp > 0."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = {'1': 'North', '2': 'North East', '3': 'East', '4': 'South East', '5': 'South', '6': 'South West', '7': 'West', '8': 'North West', 'ND': 'To be used when the pitch is horizontal', 'NR': 'not recorded - for backwards compatibility only; do not use'}
                                            map_values = {'North': '1', 'North East': '2', 'East': '3', 'South East': '4', 'South': '5', 'South West': '6', 'West': '7', 'North West': '8', 'To be used when the pitch is horizontal': 'ND', 'not recorded - for backwards compatibility only; do not use': 'NR'}
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.map_codes[self.text]
                                        
                                            @value.setter
                                            def value(self, value):
                                                if value in self.__class__.map_values:
                                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                                else:
                                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code):
                                                if code in self.__class__.map_codes:
                                                    self.text = str(code)
                                                else:
                                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                        
                                        class Pitch(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Pitch"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "SAP-VerticalPitchCode"
                                            class_name = "Pitch"
                                            documentation = """PV pitch; only if peak kWp > 0."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = {'1': 'horizontal', '2': '30 degrees', '3': '45 degrees', '4': '60 degrees', '5': 'vertical'}
                                            map_values = {'horizontal': '1', '30 degrees': '2', '45 degrees': '3', '60 degrees': '4', 'vertical': '5'}
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.map_codes[self.text]
                                        
                                            @value.setter
                                            def value(self, value):
                                                if value in self.__class__.map_values:
                                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                                else:
                                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code):
                                                if code in self.__class__.map_codes:
                                                    self.text = str(code)
                                                else:
                                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                        
                                        class Overshading(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Overshading"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "SAP-SolarCollectorOvershadingCode"
                                            class_name = "Overshading"
                                            documentation = """PV overshading; only if peak kWp > 0 and no MCS certificate."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = {'1': 'none or very little', '2': 'modest', '3': 'significant', '4': 'heavy', '5': 'severe', 'ND': 'for backwards compatability only; do not use'}
                                            map_values = {'none or very little': '1', 'modest': '2', 'significant': '3', 'heavy': '4', 'severe': '5', 'for backwards compatability only; do not use': 'ND'}
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.map_codes[self.text]
                                        
                                            @value.setter
                                            def value(self, value):
                                                if value in self.__class__.map_values:
                                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                                else:
                                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code):
                                                if code in self.__class__.map_codes:
                                                    self.text = str(code)
                                                else:
                                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                        
                                        class MCS_Certificate(_Base, etree.ElementBase):
                                            ""
                                            element_name = "MCS-Certificate"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:boolean"
                                            class_name = "MCS_Certificate"
                                            documentation = """Does the installation have a MCS certificate."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = bool
                                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                            map_values = {True: '1', False: '0'}
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.map_codes[self.text]
                                        
                                            @value.setter
                                            def value(self, value):
                                                if value in self.__class__.map_values:
                                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                                else:
                                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code):
                                                if code in self.__class__.map_codes:
                                                    self.text = str(code)
                                                else:
                                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                        
                                        class MCS_Certificate_Reference(_Base, etree.ElementBase):
                                            ""
                                            element_name = "MCS-Certificate-Reference"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:string"
                                            class_name = "MCS_Certificate_Reference"
                                            documentation = """MCS certificate reference number"""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.text
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class PV_Panel_Manufacturer_Name(_Base, etree.ElementBase):
                                            ""
                                            element_name = "PV-Panel-Manufacturer-Name"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:string"
                                            class_name = "PV_Panel_Manufacturer_Name"
                                            documentation = """Manufacturer of PV panels"""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.text
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class Overshading_MCS(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Overshading-MCS"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:decimal"
                                            class_name = "Overshading_MCS"
                                            documentation = """Overshading factor calculated according to MCS."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = float
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "PV_Array"
                                            parent_method_name ="pv_array"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def pv_array(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.python_type_convertor(self.text)
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                class Wind_Turbines(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Wind-Turbines"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Wind-Turbines"
                                    class_name = "Wind_Turbines"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = ["Wind_Turbine"]
                                    subclass_method_names = ["wind_turbine"]
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def wind_turbine(self): return self.findall(f"{{{self.__class__.namespace}}}Wind-Turbine")
                                
                                    def add_wind_turbine(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine")
                                
                                    class Wind_Turbine(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Wind-Turbine"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "Wind-Turbine"
                                        class_name = "Wind_Turbine"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = False
                                        min_occurs = 1
                                        max_occurs = 99
                                        python_type_convertor = None
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Wind_Turbines"
                                        parent_method_name ="wind_turbines"
                                        subclass_class_names = ["Wind_Turbine_Manufacturer_Name", "Wind_Turbine_Certificate", "Wind_Turbine_Rotor_Diameter", "Wind_Turbine_Hub_Height"]
                                        subclass_method_names = ["wind_turbine_manufacturer_name", "wind_turbine_certificate", "wind_turbine_rotor_diameter", "wind_turbine_hub_height"]
                                    
                                        @property
                                        def wind_turbines(self): return self.getparent()
                                    
                                        @property
                                        def wind_turbine_manufacturer_name(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Manufacturer-Name")
                                    
                                        def add_wind_turbine_manufacturer_name(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Manufacturer-Name")
                                    
                                        @property
                                        def wind_turbine_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Certificate")
                                    
                                        def add_wind_turbine_certificate(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Certificate")
                                    
                                        @property
                                        def wind_turbine_rotor_diameter(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Rotor-Diameter")
                                    
                                        def add_wind_turbine_rotor_diameter(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Rotor-Diameter")
                                    
                                        @property
                                        def wind_turbine_hub_height(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Hub-Height")
                                    
                                        def add_wind_turbine_hub_height(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Hub-Height")
                                    
                                        class Wind_Turbine_Manufacturer_Name(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Wind-Turbine-Manufacturer-Name"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:string"
                                            class_name = "Wind_Turbine_Manufacturer_Name"
                                            documentation = """Wind turbine manufacturer name."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "Wind_Turbine"
                                            parent_method_name ="wind_turbine"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def wind_turbine(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.text
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class Wind_Turbine_Certificate(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Wind-Turbine-Certificate"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:string"
                                            class_name = "Wind_Turbine_Certificate"
                                            documentation = """Wind turbine certificate."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 0
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "Wind_Turbine"
                                            parent_method_name ="wind_turbine"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def wind_turbine(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.text
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class Wind_Turbine_Rotor_Diameter(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Wind-Turbine-Rotor-Diameter"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "Measurement"
                                            class_name = "Wind_Turbine_Rotor_Diameter"
                                            documentation = """Wind turbine rotor diameter in metres; only if wind turbine."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 1
                                            max_occurs = 1
                                            python_type_convertor = float
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "Wind_Turbine"
                                            parent_method_name ="wind_turbine"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def wind_turbine(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.python_type_convertor(self.text)
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                        class Wind_Turbine_Hub_Height(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Wind-Turbine-Hub-Height"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "Measurement"
                                            class_name = "Wind_Turbine_Hub_Height"
                                            documentation = """Wind turbine hub height above building in metres; only if wind turbine."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 1
                                            max_occurs = 1
                                            python_type_convertor = float
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "Wind_Turbine"
                                            parent_method_name ="wind_turbine"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def wind_turbine(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.python_type_convertor(self.text)
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                class Electricity_Tariff(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Electricity-Tariff"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-ElectricityTariffCode"
                                    class_name = "Electricity_Tariff"
                                    documentation = """Type of electricity tariff."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'1': 'standard tariff', '2': 'off-peak 7 hour', '3': 'off-peak 10 hour', '4': '24 hour', '5': 'off-peak 18 hour', 'ND': 'not applicable'}
                                    map_values = {'standard tariff': '1', 'off-peak 7 hour': '2', 'off-peak 10 hour': '3', '24 hour': '4', 'off-peak 18 hour': '5', 'not applicable': 'ND'}
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Hydro_Electric_Generation(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Hydro-Electric-Generation"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "Hydro_Electric_Generation"
                                    documentation = """Electricity generated by hydro-electric generator, in kWh/year. To be provided if Hydro-Electric-Generation-Month is not provided."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Hydro_Electric_Certificate(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Hydro-Electric-Certificate"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Hydro_Electric_Certificate"
                                    documentation = """Reference to certification of hydro electric output."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Hydro_Electric_Generation_Months(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Hydro-Electric-Generation-Months"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Hydro-Electric-Generation-Months"
                                    class_name = "Hydro_Electric_Generation_Months"
                                    documentation = """Electricity generated by hydro-electric generator, in kWh/month. To be provided if Hydro-Electric-Generation is not provided."""
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = ["Hydro_Electric_Generation_Month"]
                                    subclass_method_names = ["hydro_electric_generation_month"]
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def hydro_electric_generation_month(self): return self.findall(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Month")
                                
                                    def add_hydro_electric_generation_month(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Month")
                                
                                    class Hydro_Electric_Generation_Month(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Hydro-Electric-Generation-Month"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "Hydro-Electric-Generation-Month"
                                        class_name = "Hydro_Electric_Generation_Month"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = False
                                        min_occurs = 12
                                        max_occurs = 12
                                        python_type_convertor = None
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Hydro_Electric_Generation_Months"
                                        parent_method_name ="hydro_electric_generation_months"
                                        subclass_class_names = ["Hydro_Month", "Hydro_Value"]
                                        subclass_method_names = ["hydro_month", "hydro_value"]
                                    
                                        @property
                                        def hydro_electric_generation_months(self): return self.getparent()
                                    
                                        @property
                                        def hydro_month(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Month")
                                    
                                        def add_hydro_month(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Month")
                                    
                                        @property
                                        def hydro_value(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Value")
                                    
                                        def add_hydro_value(self):
                                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Value")
                                    
                                        class Hydro_Month(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Hydro-Month"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "HydroElecMonth"
                                            class_name = "Hydro_Month"
                                            documentation = None
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 1
                                            max_occurs = 1
                                            python_type_convertor = str
                                            map_codes = {'Jan': '', 'Feb': '', 'Mar': '', 'Apr': '', 'May': '', 'Jun': '', 'Jul': '', 'Aug': '', 'Sep': '', 'Oct': '', 'Nov': '', 'Dec': ''}
                                            map_values = {'': 'Dec'}
                                            parent_class_name = "Hydro_Electric_Generation_Month"
                                            parent_method_name ="hydro_electric_generation_month"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def hydro_electric_generation_month(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.map_codes[self.text]
                                        
                                            @value.setter
                                            def value(self, value):
                                                if value in self.__class__.map_values:
                                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                                else:
                                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code):
                                                if code in self.__class__.map_codes:
                                                    self.text = str(code)
                                                else:
                                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                        
                                        class Hydro_Value(_Base, etree.ElementBase):
                                            ""
                                            element_name = "Hydro-Value"
                                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                            element_type = "xs:decimal"
                                            class_name = "Hydro_Value"
                                            documentation = """Hydro electricity in kWh in month."""
                                            type_documentation = None
                                            has_text_node = True
                                            min_occurs = 1
                                            max_occurs = 1
                                            python_type_convertor = float
                                            map_codes = None
                                            map_values = None
                                            parent_class_name = "Hydro_Electric_Generation_Month"
                                            parent_method_name ="hydro_electric_generation_month"
                                            subclass_class_names = []
                                            subclass_method_names = []
                                        
                                            @property
                                            def hydro_electric_generation_month(self): return self.getparent()
                                        
                                            @property
                                            def value(self): return self.__class__.python_type_convertor(self.text)
                                        
                                            @value.setter
                                            def value(self, value): self.text = str(value)
                                        
                                            @property
                                            def code(self): return self.text
                                        
                                            @code.setter
                                            def code(self, code): self.text = str(code)
                                        
                                class Is_Hydro_Output_Connected_To_Dwelling_Meter(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Is-Hydro-Output-Connected-To-Dwelling-Meter"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:boolean"
                                    class_name = "Is_Hydro_Output_Connected_To_Dwelling_Meter"
                                    documentation = """Whether the hydro-electric station is connected to dwelling's electricity meter"""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = bool
                                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                    map_values = {True: '1', False: '0'}
                                    parent_class_name = "FGHRS_Energy_Source"
                                    parent_method_name ="fghrs_energy_source"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def fghrs_energy_source(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                            class Main_Heating_Declared_Values(_Base, etree.ElementBase):
                                ""
                                element_name = "Main-Heating-Declared-Values"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Heating-Declared-Values"
                                class_name = "Main_Heating_Declared_Values"
                                documentation = None
                                type_documentation = None
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = ["Efficiency", "Make_Model", "Test_Method"]
                                subclass_method_names = ["efficiency", "make_model", "test_method"]
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Efficiency")
                            
                                def add_efficiency(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Efficiency")
                            
                                @property
                                def make_model(self): return self.find(f"{{{self.__class__.namespace}}}Make-Model")
                            
                                def add_make_model(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Make-Model")
                            
                                @property
                                def test_method(self): return self.find(f"{{{self.__class__.namespace}}}Test-Method")
                            
                                def add_test_method(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Test-Method")
                            
                                class Efficiency(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Efficiency"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Percentage"
                                    class_name = "Efficiency"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Main_Heating_Declared_Values"
                                    parent_method_name ="main_heating_declared_values"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def main_heating_declared_values(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Make_Model(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Make-Model"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Make_Model"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Main_Heating_Declared_Values"
                                    parent_method_name ="main_heating_declared_values"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def main_heating_declared_values(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Test_Method(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Test-Method"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Test_Method"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Main_Heating_Declared_Values"
                                    parent_method_name ="main_heating_declared_values"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def main_heating_declared_values(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                            class Storage_Heaters(_Base, etree.ElementBase):
                                ""
                                element_name = "Storage-Heaters"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Storage-Heaters"
                                class_name = "Storage_Heaters"
                                documentation = None
                                type_documentation = None
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = ["Storage_Heater"]
                                subclass_method_names = ["storage_heater"]
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def storage_heater(self): return self.findall(f"{{{self.__class__.namespace}}}Storage-Heater")
                            
                                def add_storage_heater(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-Heater")
                            
                                class Storage_Heater(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Storage-Heater"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Storage-Heater"
                                    class_name = "Storage_Heater"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 1
                                    max_occurs = 4
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Storage_Heaters"
                                    parent_method_name ="storage_heaters"
                                    subclass_class_names = ["Number_Of_Heaters", "Index_Number", "High_Heat_Retention"]
                                    subclass_method_names = ["number_of_heaters", "index_number", "high_heat_retention"]
                                
                                    @property
                                    def storage_heaters(self): return self.getparent()
                                
                                    @property
                                    def number_of_heaters(self): return self.find(f"{{{self.__class__.namespace}}}Number-Of-Heaters")
                                
                                    def add_number_of_heaters(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Number-Of-Heaters")
                                
                                    @property
                                    def index_number(self): return self.find(f"{{{self.__class__.namespace}}}Index-Number")
                                
                                    def add_index_number(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Index-Number")
                                
                                    @property
                                    def high_heat_retention(self): return self.find(f"{{{self.__class__.namespace}}}High-Heat-Retention")
                                
                                    def add_high_heat_retention(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}High-Heat-Retention")
                                
                                    class Number_Of_Heaters(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Number-Of-Heaters"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:positiveInteger"
                                        class_name = "Number_Of_Heaters"
                                        documentation = """The number of storage heaters with this index number."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = int
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Storage_Heater"
                                        parent_method_name ="storage_heater"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def storage_heater(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class Index_Number(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Index-Number"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:positiveInteger"
                                        class_name = "Index_Number"
                                        documentation = """The index number of the heater from the product database."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = int
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Storage_Heater"
                                        parent_method_name ="storage_heater"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def storage_heater(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                                    class High_Heat_Retention(_Base, etree.ElementBase):
                                        ""
                                        element_name = "High-Heat-Retention"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:boolean"
                                        class_name = "High_Heat_Retention"
                                        documentation = """Whether heater is high heat retention type."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = bool
                                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                        map_values = {True: '1', False: '0'}
                                        parent_class_name = "Storage_Heater"
                                        parent_method_name ="storage_heater"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def storage_heater(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.map_codes[self.text]
                                    
                                        @value.setter
                                        def value(self, value):
                                            if value in self.__class__.map_values:
                                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                            else:
                                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code):
                                            if code in self.__class__.map_codes:
                                                self.text = str(code)
                                            else:
                                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                    
                            class Emitter_Temperature(_Base, etree.ElementBase):
                                ""
                                element_name = "Emitter-Temperature"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "EmitterTemperatureCode"
                                class_name = "Emitter_Temperature"
                                documentation = """Gas and oil boilers and heat pump from database: 0, 1, 3 or 4 Other heat pump 0, 2 or 4. Other systems NA."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'0': 'unknown', '1': 'over 45degC', '2': 'over 35degC', '3': 'over 35degC and less than or equal to 45degC', '4': 'less than or equal to 35degC', 'NA': 'not applicable for the heating system'}
                                map_values = {'unknown': '0', 'over 45degC': '1', 'over 35degC': '2', 'over 35degC and less than or equal to 45degC': '3', 'less than or equal to 35degC': '4', 'not applicable for the heating system': 'NA'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class MCS_Installed_Heat_Pump(_Base, etree.ElementBase):
                                ""
                                element_name = "MCS-Installed-Heat-Pump"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "MCS_Installed_Heat_Pump"
                                documentation = """Whether heat pump was installed under the Microgeneration Certification Scheme."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Central_Heating_Pump_Age(_Base, etree.ElementBase):
                                ""
                                element_name = "Central-Heating-Pump-Age"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "PumpAge"
                                class_name = "Central_Heating_Pump_Age"
                                documentation = """Included for systems with a central heating pump, i.e. wet system."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'0': 'unknown', '1': '2012 or earlier', '2': '2013 or later'}
                                map_values = {'unknown': '0', '2012 or earlier': '1', '2013 or later': '2'}
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Control_Index_Number(_Base, etree.ElementBase):
                                ""
                                element_name = "Control-Index-Number"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:positiveInteger"
                                class_name = "Control_Index_Number"
                                documentation = """The ID of the controller from the product database."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heating_Controller_Function(_Base, etree.ElementBase):
                                ""
                                element_name = "Heating-Controller-Function"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Heating_Controller_Function"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heating_Controller_Ecodesign_Class(_Base, etree.ElementBase):
                                ""
                                element_name = "Heating-Controller-Ecodesign-Class"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Heating_Controller_Ecodesign_Class"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heating_Controller_Manufacturer(_Base, etree.ElementBase):
                                ""
                                element_name = "Heating-Controller-Manufacturer"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Heating_Controller_Manufacturer"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Heating_Controller_Model(_Base, etree.ElementBase):
                                ""
                                element_name = "Heating-Controller-Model"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Heating_Controller_Model"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Main_Heating"
                                parent_method_name ="main_heating"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def main_heating(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                    class SAP_Heating_Design_Water_Use(_Base, etree.ElementBase):
                        ""
                        element_name = "SAP-Heating-Design-Water-Use"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "DesignWaterUseCode"
                        class_name = "SAP_Heating_Design_Water_Use"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': '<= 125 litres per person per day'}
                        map_values = {'<= 125 litres per person per day': '1'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Main_Heating_Systems_Interaction(_Base, etree.ElementBase):
                        ""
                        element_name = "Main-Heating-Systems-Interaction"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "MainHeatingSystemsInteraction"
                        class_name = "Main_Heating_Systems_Interaction"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'both main heating systems provide heat to the whole property', '2': 'the main heating systems are separate and heat different parts of the property'}
                        map_values = {'both main heating systems provide heat to the whole property': '1', 'the main heating systems are separate and heat different parts of the property': '2'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Secondary_Heating_Declared_Values(_Base, etree.ElementBase):
                        ""
                        element_name = "Secondary-Heating-Declared-Values"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Heating-Declared-Values"
                        class_name = "Secondary_Heating_Declared_Values"
                        documentation = """Use when manufacturer's declared values."""
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["Efficiency", "Make_Model", "Test_Method"]
                        subclass_method_names = ["efficiency", "make_model", "test_method"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Efficiency")
                    
                        def add_efficiency(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Efficiency")
                    
                        @property
                        def make_model(self): return self.find(f"{{{self.__class__.namespace}}}Make-Model")
                    
                        def add_make_model(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Make-Model")
                    
                        @property
                        def test_method(self): return self.find(f"{{{self.__class__.namespace}}}Test-Method")
                    
                        def add_test_method(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Test-Method")
                    
                        class Efficiency(_Base, etree.ElementBase):
                            ""
                            element_name = "Efficiency"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Percentage"
                            class_name = "Efficiency"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Secondary_Heating_Declared_Values"
                            parent_method_name ="secondary_heating_declared_values"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def secondary_heating_declared_values(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Make_Model(_Base, etree.ElementBase):
                            ""
                            element_name = "Make-Model"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Make_Model"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Secondary_Heating_Declared_Values"
                            parent_method_name ="secondary_heating_declared_values"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def secondary_heating_declared_values(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Test_Method(_Base, etree.ElementBase):
                            ""
                            element_name = "Test-Method"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Test_Method"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Secondary_Heating_Declared_Values"
                            parent_method_name ="secondary_heating_declared_values"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def secondary_heating_declared_values(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                    class Primary_Pipework_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Primary-Pipework-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "PipeworkInsulationCode"
                        class_name = "Primary_Pipework_Insulation"
                        documentation = """Not applicable to combi boiler or instantaneous water heater."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'not insulated', '2': 'first 1 metre from cylinder insulated', '3': 'all accessible pipework insulated', '4': 'fully insulated'}
                        map_values = {'not insulated': '1', 'first 1 metre from cylinder insulated': '2', 'all accessible pipework insulated': '3', 'fully insulated': '4'}
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Solar_Heating_Details(_Base, etree.ElementBase):
                        ""
                        element_name = "Solar-Heating-Details"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Solar-Heating-Details"
                        class_name = "Solar_Heating_Details"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["Solar_Heating_Collector_Manufacturer", "Solar_Heating_Certificate", "Solar_Panel_Aperture_Area", "Solar_Panel_Collector_Type", "Solar_Panel_Collector_Data_Source", "Solar_Panel_Collector_Zero_Loss_Efficiency", "Solar_Panel_Collector_Heat_Loss_Rate", "Solar_Panel_Collector_Linear_Heat_Loss_Coefficient", "Solar_Panel_Collector_Second_Order_Heat_Loss_Coefficient", "Solar_Panel_Collector_Orientation", "Solar_Panel_Collector_Pitch", "Solar_Panel_Collector_Overshading", "Has_Solar_Powered_Pump", "Is_Solar_Store_Combined_Cylinder", "Solar_Store_Volume", "Collector_Loop_Efficiency", "Incidence_Angle_Modifier", "Is_Community_Solar", "Service_Provision", "Overall_Heat_Loss"]
                        subclass_method_names = ["solar_heating_collector_manufacturer", "solar_heating_certificate", "solar_panel_aperture_area", "solar_panel_collector_type", "solar_panel_collector_data_source", "solar_panel_collector_zero_loss_efficiency", "solar_panel_collector_heat_loss_rate", "solar_panel_collector_linear_heat_loss_coefficient", "solar_panel_collector_second_order_heat_loss_coefficient", "solar_panel_collector_orientation", "solar_panel_collector_pitch", "solar_panel_collector_overshading", "has_solar_powered_pump", "is_solar_store_combined_cylinder", "solar_store_volume", "collector_loop_efficiency", "incidence_angle_modifier", "is_community_solar", "service_provision", "overall_heat_loss"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def solar_heating_collector_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Heating-Collector-Manufacturer")
                    
                        def add_solar_heating_collector_manufacturer(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Heating-Collector-Manufacturer")
                    
                        @property
                        def solar_heating_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Heating-Certificate")
                    
                        def add_solar_heating_certificate(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Heating-Certificate")
                    
                        @property
                        def solar_panel_aperture_area(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Aperture-Area")
                    
                        def add_solar_panel_aperture_area(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Aperture-Area")
                    
                        @property
                        def solar_panel_collector_type(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Type")
                    
                        def add_solar_panel_collector_type(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Type")
                    
                        @property
                        def solar_panel_collector_data_source(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Data-Source")
                    
                        def add_solar_panel_collector_data_source(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Data-Source")
                    
                        @property
                        def solar_panel_collector_zero_loss_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Zero-Loss-Efficiency")
                    
                        def add_solar_panel_collector_zero_loss_efficiency(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Zero-Loss-Efficiency")
                    
                        @property
                        def solar_panel_collector_heat_loss_rate(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Heat-Loss-Rate")
                    
                        def add_solar_panel_collector_heat_loss_rate(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Heat-Loss-Rate")
                    
                        @property
                        def solar_panel_collector_linear_heat_loss_coefficient(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Linear-Heat-Loss-Coefficient")
                    
                        def add_solar_panel_collector_linear_heat_loss_coefficient(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Linear-Heat-Loss-Coefficient")
                    
                        @property
                        def solar_panel_collector_second_order_heat_loss_coefficient(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Second-Order-Heat-Loss-Coefficient")
                    
                        def add_solar_panel_collector_second_order_heat_loss_coefficient(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Second-Order-Heat-Loss-Coefficient")
                    
                        @property
                        def solar_panel_collector_orientation(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Orientation")
                    
                        def add_solar_panel_collector_orientation(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Orientation")
                    
                        @property
                        def solar_panel_collector_pitch(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Pitch")
                    
                        def add_solar_panel_collector_pitch(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Pitch")
                    
                        @property
                        def solar_panel_collector_overshading(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Overshading")
                    
                        def add_solar_panel_collector_overshading(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Panel-Collector-Overshading")
                    
                        @property
                        def has_solar_powered_pump(self): return self.find(f"{{{self.__class__.namespace}}}Has-Solar-Powered-Pump")
                    
                        def add_has_solar_powered_pump(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Solar-Powered-Pump")
                    
                        @property
                        def is_solar_store_combined_cylinder(self): return self.find(f"{{{self.__class__.namespace}}}Is-Solar-Store-Combined-Cylinder")
                    
                        def add_is_solar_store_combined_cylinder(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Solar-Store-Combined-Cylinder")
                    
                        @property
                        def solar_store_volume(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Store-Volume")
                    
                        def add_solar_store_volume(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Store-Volume")
                    
                        @property
                        def collector_loop_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Collector-Loop-Efficiency")
                    
                        def add_collector_loop_efficiency(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Collector-Loop-Efficiency")
                    
                        @property
                        def incidence_angle_modifier(self): return self.find(f"{{{self.__class__.namespace}}}Incidence-Angle-Modifier")
                    
                        def add_incidence_angle_modifier(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Incidence-Angle-Modifier")
                    
                        @property
                        def is_community_solar(self): return self.find(f"{{{self.__class__.namespace}}}Is-Community-Solar")
                    
                        def add_is_community_solar(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Community-Solar")
                    
                        @property
                        def service_provision(self): return self.find(f"{{{self.__class__.namespace}}}Service-Provision")
                    
                        def add_service_provision(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Service-Provision")
                    
                        @property
                        def overall_heat_loss(self): return self.find(f"{{{self.__class__.namespace}}}Overall-Heat-Loss")
                    
                        def add_overall_heat_loss(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Overall-Heat-Loss")
                    
                        class Solar_Heating_Collector_Manufacturer(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Heating-Collector-Manufacturer"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Solar_Heating_Collector_Manufacturer"
                            documentation = """Panel manufacturer"""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Heating_Certificate(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Heating-Certificate"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Solar_Heating_Certificate"
                            documentation = """Solar heating certificate"""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Aperture_Area(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Aperture-Area"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Measurement"
                            class_name = "Solar_Panel_Aperture_Area"
                            documentation = """Panel aperture area in square metres."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Type(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Type"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-SolarCollectorTypeCode"
                            class_name = "Solar_Panel_Collector_Type"
                            documentation = """Type of solar panel collector."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'unglazed', '2': 'flat panel', '3': 'evacuated tube', 'ND': 'for backwards compatability only; do not use'}
                            map_values = {'unglazed': '1', 'flat panel': '2', 'evacuated tube': '3', 'for backwards compatability only; do not use': 'ND'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Solar_Panel_Collector_Data_Source(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Data-Source"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-SolarCollectorDataSourceCode"
                            class_name = "Solar_Panel_Collector_Data_Source"
                            documentation = """Source of solar panel collector data."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'default', '2': 'declared values', 'ND': 'for backwards compatability only; do not use'}
                            map_values = {'default': '1', 'declared values': '2', 'for backwards compatability only; do not use': 'ND'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Solar_Panel_Collector_Zero_Loss_Efficiency(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Zero-Loss-Efficiency"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Percentage"
                            class_name = "Solar_Panel_Collector_Zero_Loss_Efficiency"
                            documentation = """Collector zero-loss efficiency; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Heat_Loss_Rate(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Heat-Loss-Rate"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Solar_Panel_Collector_Heat_Loss_Rate"
                            documentation = """Collector heat loss rate; for backward compatibility only, do not use."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Linear_Heat_Loss_Coefficient(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Linear-Heat-Loss-Coefficient"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Solar_Panel_Collector_Linear_Heat_Loss_Coefficient"
                            documentation = """Collector linear heat loss coefficient; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Second_Order_Heat_Loss_Coefficient(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Second-Order-Heat-Loss-Coefficient"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Solar_Panel_Collector_Second_Order_Heat_Loss_Coefficient"
                            documentation = """Collector 2nd order heat loss coefficient; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Orientation(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Orientation"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-CompassDirectionCode"
                            class_name = "Solar_Panel_Collector_Orientation"
                            documentation = """Collector orientation."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'North', '2': 'North East', '3': 'East', '4': 'South East', '5': 'South', '6': 'South West', '7': 'West', '8': 'North West', 'ND': 'To be used when the pitch is horizontal', 'NR': 'not recorded - for backwards compatibility only; do not use'}
                            map_values = {'North': '1', 'North East': '2', 'East': '3', 'South East': '4', 'South': '5', 'South West': '6', 'West': '7', 'North West': '8', 'To be used when the pitch is horizontal': 'ND', 'not recorded - for backwards compatibility only; do not use': 'NR'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Solar_Panel_Collector_Pitch(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Pitch"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-VerticalPitch"
                            class_name = "Solar_Panel_Collector_Pitch"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Solar_Panel_Collector_Overshading(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Panel-Collector-Overshading"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-SolarCollectorOvershadingCode"
                            class_name = "Solar_Panel_Collector_Overshading"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'none or very little', '2': 'modest', '3': 'significant', '4': 'heavy', '5': 'severe', 'ND': 'for backwards compatability only; do not use'}
                            map_values = {'none or very little': '1', 'modest': '2', 'significant': '3', 'heavy': '4', 'severe': '5', 'for backwards compatability only; do not use': 'ND'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Has_Solar_Powered_Pump(_Base, etree.ElementBase):
                            ""
                            element_name = "Has-Solar-Powered-Pump"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:boolean"
                            class_name = "Has_Solar_Powered_Pump"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = bool
                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                            map_values = {True: '1', False: '0'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Is_Solar_Store_Combined_Cylinder(_Base, etree.ElementBase):
                            ""
                            element_name = "Is-Solar-Store-Combined-Cylinder"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:boolean"
                            class_name = "Is_Solar_Store_Combined_Cylinder"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = bool
                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                            map_values = {True: '1', False: '0'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Solar_Store_Volume(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Store-Volume"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Measurement"
                            class_name = "Solar_Store_Volume"
                            documentation = """Dedicated solar store volume in litres."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Collector_Loop_Efficiency(_Base, etree.ElementBase):
                            ""
                            element_name = "Collector-Loop-Efficiency"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Collector_Loop_Efficiency"
                            documentation = """Collector loop efficiency; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Incidence_Angle_Modifier(_Base, etree.ElementBase):
                            ""
                            element_name = "Incidence-Angle-Modifier"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Incidence_Angle_Modifier"
                            documentation = """Incidence angle modifier; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Is_Community_Solar(_Base, etree.ElementBase):
                            ""
                            element_name = "Is-Community-Solar"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:boolean"
                            class_name = "Is_Community_Solar"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = bool
                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                            map_values = {True: '1', False: '0'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Service_Provision(_Base, etree.ElementBase):
                            ""
                            element_name = "Service-Provision"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "ServiceProvisionCode"
                            class_name = "Service_Provision"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'space and water heating', '2': 'space heating only', '3': 'water heating only'}
                            map_values = {'space and water heating': '1', 'space heating only': '2', 'water heating only': '3'}
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Overall_Heat_Loss(_Base, etree.ElementBase):
                            ""
                            element_name = "Overall-Heat-Loss"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Overall_Heat_Loss"
                            documentation = """Overall heat loss coefficient of system; only if declared values."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Solar_Heating_Details"
                            parent_method_name ="solar_heating_details"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def solar_heating_details(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                    class Instantaneous_WWHRS(_Base, etree.ElementBase):
                        ""
                        element_name = "Instantaneous-WWHRS"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Instantaneous-WWHRS"
                        class_name = "Instantaneous_WWHRS"
                        documentation = """Waste Water Heat Recovery System."""
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["WWHRS_Index_Number1", "WWHRS_Index_Number2", "WWHRS_Efficiency1", "WWHRS_Manufacturer1", "WWHRS_Model1", "WWHRS_Efficiency2", "WWHRS_Manufacturer2", "WWHRS_Model2"]
                        subclass_method_names = ["wwhrs_index_number1", "wwhrs_index_number2", "wwhrs_efficiency1", "wwhrs_manufacturer1", "wwhrs_model1", "wwhrs_efficiency2", "wwhrs_manufacturer2", "wwhrs_model2"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def wwhrs_index_number1(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Index-Number1")
                    
                        def add_wwhrs_index_number1(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Index-Number1")
                    
                        @property
                        def wwhrs_index_number2(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Index-Number2")
                    
                        def add_wwhrs_index_number2(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Index-Number2")
                    
                        @property
                        def wwhrs_efficiency1(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Efficiency1")
                    
                        def add_wwhrs_efficiency1(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Efficiency1")
                    
                        @property
                        def wwhrs_manufacturer1(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Manufacturer1")
                    
                        def add_wwhrs_manufacturer1(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Manufacturer1")
                    
                        @property
                        def wwhrs_model1(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Model1")
                    
                        def add_wwhrs_model1(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Model1")
                    
                        @property
                        def wwhrs_efficiency2(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Efficiency2")
                    
                        def add_wwhrs_efficiency2(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Efficiency2")
                    
                        @property
                        def wwhrs_manufacturer2(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Manufacturer2")
                    
                        def add_wwhrs_manufacturer2(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Manufacturer2")
                    
                        @property
                        def wwhrs_model2(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Model2")
                    
                        def add_wwhrs_model2(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Model2")
                    
                        class WWHRS_Index_Number1(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Index-Number1"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:positiveInteger"
                            class_name = "WWHRS_Index_Number1"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Index_Number2(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Index-Number2"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:positiveInteger"
                            class_name = "WWHRS_Index_Number2"
                            documentation = """Omit if no second system."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Efficiency1(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Efficiency1"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "WWHRS_Efficiency1"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Manufacturer1(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Manufacturer1"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "WWHRS_Manufacturer1"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Model1(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Model1"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "WWHRS_Model1"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Efficiency2(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Efficiency2"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "WWHRS_Efficiency2"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Manufacturer2(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Manufacturer2"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "WWHRS_Manufacturer2"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Model2(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Model2"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "WWHRS_Model2"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Instantaneous_WWHRS"
                            parent_method_name ="instantaneous_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def instantaneous_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                    class Storage_WWHRS(_Base, etree.ElementBase):
                        ""
                        element_name = "Storage-WWHRS"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Storage-WWHRS"
                        class_name = "Storage_WWHRS"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["WWHRS_Index_Number", "WWHRS_Store_Volume", "Storage_WWHRS_Efficiency", "Storage_WWHRS_Manufacturer", "Storage_WWHRS_Model"]
                        subclass_method_names = ["wwhrs_index_number", "wwhrs_store_volume", "storage_wwhrs_efficiency", "storage_wwhrs_manufacturer", "storage_wwhrs_model"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def wwhrs_index_number(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Index-Number")
                    
                        def add_wwhrs_index_number(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Index-Number")
                    
                        @property
                        def wwhrs_store_volume(self): return self.find(f"{{{self.__class__.namespace}}}WWHRS-Store-Volume")
                    
                        def add_wwhrs_store_volume(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}WWHRS-Store-Volume")
                    
                        @property
                        def storage_wwhrs_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Storage-WWHRS-Efficiency")
                    
                        def add_storage_wwhrs_efficiency(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-WWHRS-Efficiency")
                    
                        @property
                        def storage_wwhrs_manufacturer(self): return self.find(f"{{{self.__class__.namespace}}}Storage-WWHRS-Manufacturer")
                    
                        def add_storage_wwhrs_manufacturer(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-WWHRS-Manufacturer")
                    
                        @property
                        def storage_wwhrs_model(self): return self.find(f"{{{self.__class__.namespace}}}Storage-WWHRS-Model")
                    
                        def add_storage_wwhrs_model(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storage-WWHRS-Model")
                    
                        class WWHRS_Index_Number(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Index-Number"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:positiveInteger"
                            class_name = "WWHRS_Index_Number"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "Storage_WWHRS"
                            parent_method_name ="storage_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def storage_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class WWHRS_Store_Volume(_Base, etree.ElementBase):
                            ""
                            element_name = "WWHRS-Store-Volume"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Measurement"
                            class_name = "WWHRS_Store_Volume"
                            documentation = """Dedicated store volume in litres."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Storage_WWHRS"
                            parent_method_name ="storage_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def storage_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Storage_WWHRS_Efficiency(_Base, etree.ElementBase):
                            ""
                            element_name = "Storage-WWHRS-Efficiency"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Storage_WWHRS_Efficiency"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "Storage_WWHRS"
                            parent_method_name ="storage_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def storage_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Storage_WWHRS_Manufacturer(_Base, etree.ElementBase):
                            ""
                            element_name = "Storage-WWHRS-Manufacturer"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Storage_WWHRS_Manufacturer"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Storage_WWHRS"
                            parent_method_name ="storage_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def storage_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Storage_WWHRS_Model(_Base, etree.ElementBase):
                            ""
                            element_name = "Storage-WWHRS-Model"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Storage_WWHRS_Model"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "Storage_WWHRS"
                            parent_method_name ="storage_wwhrs"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def storage_wwhrs(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                    class Shower_Outlets(_Base, etree.ElementBase):
                        ""
                        element_name = "Shower-Outlets"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Shower-Outlets"
                        class_name = "Shower_Outlets"
                        documentation = None
                        type_documentation = """Shower outlets present in the dwelling. If there are more than 5 then only include the 5 with the highest flow rates used."""
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = ["Shower_Outlet"]
                        subclass_method_names = ["shower_outlet"]
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def shower_outlet(self): return self.findall(f"{{{self.__class__.namespace}}}Shower-Outlet")
                    
                        def add_shower_outlet(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-Outlet")
                    
                        class Shower_Outlet(_Base, etree.ElementBase):
                            ""
                            element_name = "Shower-Outlet"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Shower-Outlet"
                            class_name = "Shower_Outlet"
                            documentation = None
                            type_documentation = """Various details for each shower outlet."""
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 5
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Shower_Outlets"
                            parent_method_name ="shower_outlets"
                            subclass_class_names = ["Shower_Outlet_Type", "Shower_Flow_Rate", "Shower_Power", "Shower_WWHRS"]
                            subclass_method_names = ["shower_outlet_type", "shower_flow_rate", "shower_power", "shower_wwhrs"]
                        
                            @property
                            def shower_outlets(self): return self.getparent()
                        
                            @property
                            def shower_outlet_type(self): return self.find(f"{{{self.__class__.namespace}}}Shower-Outlet-Type")
                        
                            def add_shower_outlet_type(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-Outlet-Type")
                        
                            @property
                            def shower_flow_rate(self): return self.find(f"{{{self.__class__.namespace}}}Shower-Flow-Rate")
                        
                            def add_shower_flow_rate(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-Flow-Rate")
                        
                            @property
                            def shower_power(self): return self.find(f"{{{self.__class__.namespace}}}Shower-Power")
                        
                            def add_shower_power(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-Power")
                        
                            @property
                            def shower_wwhrs(self): return self.find(f"{{{self.__class__.namespace}}}Shower-WWHRS")
                        
                            def add_shower_wwhrs(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Shower-WWHRS")
                        
                            class Shower_Outlet_Type(_Base, etree.ElementBase):
                                ""
                                element_name = "Shower-Outlet-Type"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "ShowerOutletTypeCode"
                                class_name = "Shower_Outlet_Type"
                                documentation = """Hot water type for this shower outlet."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'Vented hot water system', '2': 'Vented hot water system + pump', '3': 'Unvented hot water system', '4': 'Instantaneous electric shower', '5': 'Part G 2015 compliant'}
                                map_values = {'Vented hot water system': '1', 'Vented hot water system + pump': '2', 'Unvented hot water system': '3', 'Instantaneous electric shower': '4', 'Part G 2015 compliant': '5'}
                                parent_class_name = "Shower_Outlet"
                                parent_method_name ="shower_outlet"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def shower_outlet(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Shower_Flow_Rate(_Base, etree.ElementBase):
                                ""
                                element_name = "Shower-Flow-Rate"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Shower_Flow_Rate"
                                documentation = """The flow rate. Only when a shower is not instantaneous electric. Leave blank if NO flow limiter fitted."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Shower_Outlet"
                                parent_method_name ="shower_outlet"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def shower_outlet(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Shower_Power(_Base, etree.ElementBase):
                                ""
                                element_name = "Shower-Power"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Shower_Power"
                                documentation = """The shower power, only if shower outlet type is instantaneous electric."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Shower_Outlet"
                                parent_method_name ="shower_outlet"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def shower_outlet(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Shower_WWHRS(_Base, etree.ElementBase):
                                ""
                                element_name = "Shower-WWHRS"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "ShowerWWHRSCode"
                                class_name = "Shower_WWHRS"
                                documentation = """The WWHRS with which the shower is connected. If shower outlet type is instantaneous electric shower then only a storage WWHRS can be selected or none."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'none', '2': 'Instantaneous WWHRS 1', '3': 'Instantaneous WWHRS 2', '4': 'Storage WWHRS'}
                                map_values = {'none': '1', 'Instantaneous WWHRS 1': '2', 'Instantaneous WWHRS 2': '3', 'Storage WWHRS': '4'}
                                parent_class_name = "Shower_Outlet"
                                parent_method_name ="shower_outlet"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def shower_outlet(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                    class Number_Baths(_Base, etree.ElementBase):
                        ""
                        element_name = "Number-Baths"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Number_Baths"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Number_Baths_WWHRS(_Base, etree.ElementBase):
                        ""
                        element_name = "Number-Baths-WWHRS"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Number_Baths_WWHRS"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Heating"
                        parent_method_name ="sap_heating"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_heating(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class SAP_Energy_Source(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Energy-Source"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Energy-Source"
                    class_name = "SAP_Energy_Source"
                    documentation = None
                    type_documentation = """Details of the main Electricity supply to the Property."""
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["PV_Arrays", "Wind_Turbines", "Electricity_Tariff", "Hydro_Electric_Generation", "Hydro_Electric_Certificate", "Hydro_Electric_Generation_Months", "Is_Hydro_Output_Connected_To_Dwelling_Meter"]
                    subclass_method_names = ["pv_arrays", "wind_turbines", "electricity_tariff", "hydro_electric_generation", "hydro_electric_certificate", "hydro_electric_generation_months", "is_hydro_output_connected_to_dwelling_meter"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def pv_arrays(self): return self.find(f"{{{self.__class__.namespace}}}PV-Arrays")
                
                    def add_pv_arrays(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Arrays")
                
                    @property
                    def wind_turbines(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbines")
                
                    def add_wind_turbines(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbines")
                
                    @property
                    def electricity_tariff(self): return self.find(f"{{{self.__class__.namespace}}}Electricity-Tariff")
                
                    def add_electricity_tariff(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Electricity-Tariff")
                
                    @property
                    def hydro_electric_generation(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation")
                
                    def add_hydro_electric_generation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation")
                
                    @property
                    def hydro_electric_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Certificate")
                
                    def add_hydro_electric_certificate(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Certificate")
                
                    @property
                    def hydro_electric_generation_months(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Months")
                
                    def add_hydro_electric_generation_months(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Months")
                
                    @property
                    def is_hydro_output_connected_to_dwelling_meter(self): return self.find(f"{{{self.__class__.namespace}}}Is-Hydro-Output-Connected-To-Dwelling-Meter")
                
                    def add_is_hydro_output_connected_to_dwelling_meter(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Hydro-Output-Connected-To-Dwelling-Meter")
                
                    class PV_Arrays(_Base, etree.ElementBase):
                        ""
                        element_name = "PV-Arrays"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "PV-Arrays"
                        class_name = "PV_Arrays"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = ["PV_Array"]
                        subclass_method_names = ["pv_array"]
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def pv_array(self): return self.findall(f"{{{self.__class__.namespace}}}PV-Array")
                    
                        def add_pv_array(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Array")
                    
                        class PV_Array(_Base, etree.ElementBase):
                            ""
                            element_name = "PV-Array"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "PV-Array"
                            class_name = "PV_Array"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 3
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "PV_Arrays"
                            parent_method_name ="pv_arrays"
                            subclass_class_names = ["Peak_Power", "Orientation", "Pitch", "Overshading", "MCS_Certificate", "MCS_Certificate_Reference", "PV_Panel_Manufacturer_Name", "Overshading_MCS"]
                            subclass_method_names = ["peak_power", "orientation", "pitch", "overshading", "mcs_certificate", "mcs_certificate_reference", "pv_panel_manufacturer_name", "overshading_mcs"]
                        
                            @property
                            def pv_arrays(self): return self.getparent()
                        
                            @property
                            def peak_power(self): return self.find(f"{{{self.__class__.namespace}}}Peak-Power")
                        
                            def add_peak_power(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Peak-Power")
                        
                            @property
                            def orientation(self): return self.find(f"{{{self.__class__.namespace}}}Orientation")
                        
                            def add_orientation(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Orientation")
                        
                            @property
                            def pitch(self): return self.find(f"{{{self.__class__.namespace}}}Pitch")
                        
                            def add_pitch(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Pitch")
                        
                            @property
                            def overshading(self): return self.find(f"{{{self.__class__.namespace}}}Overshading")
                        
                            def add_overshading(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Overshading")
                        
                            @property
                            def mcs_certificate(self): return self.find(f"{{{self.__class__.namespace}}}MCS-Certificate")
                        
                            def add_mcs_certificate(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}MCS-Certificate")
                        
                            @property
                            def mcs_certificate_reference(self): return self.find(f"{{{self.__class__.namespace}}}MCS-Certificate-Reference")
                        
                            def add_mcs_certificate_reference(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}MCS-Certificate-Reference")
                        
                            @property
                            def pv_panel_manufacturer_name(self): return self.find(f"{{{self.__class__.namespace}}}PV-Panel-Manufacturer-Name")
                        
                            def add_pv_panel_manufacturer_name(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}PV-Panel-Manufacturer-Name")
                        
                            @property
                            def overshading_mcs(self): return self.find(f"{{{self.__class__.namespace}}}Overshading-MCS")
                        
                            def add_overshading_mcs(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Overshading-MCS")
                        
                            class Peak_Power(_Base, etree.ElementBase):
                                ""
                                element_name = "Peak-Power"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Peak_Power"
                                documentation = """Peak kW of photovoltaics (PVs) (kWp); 0.0 if none."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Orientation(_Base, etree.ElementBase):
                                ""
                                element_name = "Orientation"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-CompassDirectionCode"
                                class_name = "Orientation"
                                documentation = """PV orientation; only if peak kWp > 0."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'North', '2': 'North East', '3': 'East', '4': 'South East', '5': 'South', '6': 'South West', '7': 'West', '8': 'North West', 'ND': 'To be used when the pitch is horizontal', 'NR': 'not recorded - for backwards compatibility only; do not use'}
                                map_values = {'North': '1', 'North East': '2', 'East': '3', 'South East': '4', 'South': '5', 'South West': '6', 'West': '7', 'North West': '8', 'To be used when the pitch is horizontal': 'ND', 'not recorded - for backwards compatibility only; do not use': 'NR'}
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Pitch(_Base, etree.ElementBase):
                                ""
                                element_name = "Pitch"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-VerticalPitchCode"
                                class_name = "Pitch"
                                documentation = """PV pitch; only if peak kWp > 0."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'horizontal', '2': '30 degrees', '3': '45 degrees', '4': '60 degrees', '5': 'vertical'}
                                map_values = {'horizontal': '1', '30 degrees': '2', '45 degrees': '3', '60 degrees': '4', 'vertical': '5'}
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Overshading(_Base, etree.ElementBase):
                                ""
                                element_name = "Overshading"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-SolarCollectorOvershadingCode"
                                class_name = "Overshading"
                                documentation = """PV overshading; only if peak kWp > 0 and no MCS certificate."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'none or very little', '2': 'modest', '3': 'significant', '4': 'heavy', '5': 'severe', 'ND': 'for backwards compatability only; do not use'}
                                map_values = {'none or very little': '1', 'modest': '2', 'significant': '3', 'heavy': '4', 'severe': '5', 'for backwards compatability only; do not use': 'ND'}
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class MCS_Certificate(_Base, etree.ElementBase):
                                ""
                                element_name = "MCS-Certificate"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:boolean"
                                class_name = "MCS_Certificate"
                                documentation = """Does the installation have a MCS certificate."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = bool
                                map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                map_values = {True: '1', False: '0'}
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class MCS_Certificate_Reference(_Base, etree.ElementBase):
                                ""
                                element_name = "MCS-Certificate-Reference"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "MCS_Certificate_Reference"
                                documentation = """MCS certificate reference number"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class PV_Panel_Manufacturer_Name(_Base, etree.ElementBase):
                                ""
                                element_name = "PV-Panel-Manufacturer-Name"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "PV_Panel_Manufacturer_Name"
                                documentation = """Manufacturer of PV panels"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Overshading_MCS(_Base, etree.ElementBase):
                                ""
                                element_name = "Overshading-MCS"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Overshading_MCS"
                                documentation = """Overshading factor calculated according to MCS."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "PV_Array"
                                parent_method_name ="pv_array"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def pv_array(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                    class Wind_Turbines(_Base, etree.ElementBase):
                        ""
                        element_name = "Wind-Turbines"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Wind-Turbines"
                        class_name = "Wind_Turbines"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = ["Wind_Turbine"]
                        subclass_method_names = ["wind_turbine"]
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def wind_turbine(self): return self.findall(f"{{{self.__class__.namespace}}}Wind-Turbine")
                    
                        def add_wind_turbine(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine")
                    
                        class Wind_Turbine(_Base, etree.ElementBase):
                            ""
                            element_name = "Wind-Turbine"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Wind-Turbine"
                            class_name = "Wind_Turbine"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 99
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Wind_Turbines"
                            parent_method_name ="wind_turbines"
                            subclass_class_names = ["Wind_Turbine_Manufacturer_Name", "Wind_Turbine_Certificate", "Wind_Turbine_Rotor_Diameter", "Wind_Turbine_Hub_Height"]
                            subclass_method_names = ["wind_turbine_manufacturer_name", "wind_turbine_certificate", "wind_turbine_rotor_diameter", "wind_turbine_hub_height"]
                        
                            @property
                            def wind_turbines(self): return self.getparent()
                        
                            @property
                            def wind_turbine_manufacturer_name(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Manufacturer-Name")
                        
                            def add_wind_turbine_manufacturer_name(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Manufacturer-Name")
                        
                            @property
                            def wind_turbine_certificate(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Certificate")
                        
                            def add_wind_turbine_certificate(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Certificate")
                        
                            @property
                            def wind_turbine_rotor_diameter(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Rotor-Diameter")
                        
                            def add_wind_turbine_rotor_diameter(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Rotor-Diameter")
                        
                            @property
                            def wind_turbine_hub_height(self): return self.find(f"{{{self.__class__.namespace}}}Wind-Turbine-Hub-Height")
                        
                            def add_wind_turbine_hub_height(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wind-Turbine-Hub-Height")
                        
                            class Wind_Turbine_Manufacturer_Name(_Base, etree.ElementBase):
                                ""
                                element_name = "Wind-Turbine-Manufacturer-Name"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Wind_Turbine_Manufacturer_Name"
                                documentation = """Wind turbine manufacturer name."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Wind_Turbine"
                                parent_method_name ="wind_turbine"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def wind_turbine(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Wind_Turbine_Certificate(_Base, etree.ElementBase):
                                ""
                                element_name = "Wind-Turbine-Certificate"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Wind_Turbine_Certificate"
                                documentation = """Wind turbine certificate."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "Wind_Turbine"
                                parent_method_name ="wind_turbine"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def wind_turbine(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Wind_Turbine_Rotor_Diameter(_Base, etree.ElementBase):
                                ""
                                element_name = "Wind-Turbine-Rotor-Diameter"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Wind_Turbine_Rotor_Diameter"
                                documentation = """Wind turbine rotor diameter in metres; only if wind turbine."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Wind_Turbine"
                                parent_method_name ="wind_turbine"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def wind_turbine(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Wind_Turbine_Hub_Height(_Base, etree.ElementBase):
                                ""
                                element_name = "Wind-Turbine-Hub-Height"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Wind_Turbine_Hub_Height"
                                documentation = """Wind turbine hub height above building in metres; only if wind turbine."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Wind_Turbine"
                                parent_method_name ="wind_turbine"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def wind_turbine(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                    class Electricity_Tariff(_Base, etree.ElementBase):
                        ""
                        element_name = "Electricity-Tariff"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ElectricityTariffCode"
                        class_name = "Electricity_Tariff"
                        documentation = """Type of electricity tariff."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'standard tariff', '2': 'off-peak 7 hour', '3': 'off-peak 10 hour', '4': '24 hour', '5': 'off-peak 18 hour', 'ND': 'not applicable'}
                        map_values = {'standard tariff': '1', 'off-peak 7 hour': '2', 'off-peak 10 hour': '3', '24 hour': '4', 'off-peak 18 hour': '5', 'not applicable': 'ND'}
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Hydro_Electric_Generation(_Base, etree.ElementBase):
                        ""
                        element_name = "Hydro-Electric-Generation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "Hydro_Electric_Generation"
                        documentation = """Electricity generated by hydro-electric generator, in kWh/year. To be provided if Hydro-Electric-Generation-Month is not provided."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hydro_Electric_Certificate(_Base, etree.ElementBase):
                        ""
                        element_name = "Hydro-Electric-Certificate"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Hydro_Electric_Certificate"
                        documentation = """Reference to certification of hydro electric output."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Hydro_Electric_Generation_Months(_Base, etree.ElementBase):
                        ""
                        element_name = "Hydro-Electric-Generation-Months"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Hydro-Electric-Generation-Months"
                        class_name = "Hydro_Electric_Generation_Months"
                        documentation = """Electricity generated by hydro-electric generator, in kWh/month. To be provided if Hydro-Electric-Generation is not provided."""
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = ["Hydro_Electric_Generation_Month"]
                        subclass_method_names = ["hydro_electric_generation_month"]
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def hydro_electric_generation_month(self): return self.findall(f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Month")
                    
                        def add_hydro_electric_generation_month(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Electric-Generation-Month")
                    
                        class Hydro_Electric_Generation_Month(_Base, etree.ElementBase):
                            ""
                            element_name = "Hydro-Electric-Generation-Month"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Hydro-Electric-Generation-Month"
                            class_name = "Hydro_Electric_Generation_Month"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 12
                            max_occurs = 12
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Hydro_Electric_Generation_Months"
                            parent_method_name ="hydro_electric_generation_months"
                            subclass_class_names = ["Hydro_Month", "Hydro_Value"]
                            subclass_method_names = ["hydro_month", "hydro_value"]
                        
                            @property
                            def hydro_electric_generation_months(self): return self.getparent()
                        
                            @property
                            def hydro_month(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Month")
                        
                            def add_hydro_month(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Month")
                        
                            @property
                            def hydro_value(self): return self.find(f"{{{self.__class__.namespace}}}Hydro-Value")
                        
                            def add_hydro_value(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Hydro-Value")
                        
                            class Hydro_Month(_Base, etree.ElementBase):
                                ""
                                element_name = "Hydro-Month"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "HydroElecMonth"
                                class_name = "Hydro_Month"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'Jan': '', 'Feb': '', 'Mar': '', 'Apr': '', 'May': '', 'Jun': '', 'Jul': '', 'Aug': '', 'Sep': '', 'Oct': '', 'Nov': '', 'Dec': ''}
                                map_values = {'': 'Dec'}
                                parent_class_name = "Hydro_Electric_Generation_Month"
                                parent_method_name ="hydro_electric_generation_month"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def hydro_electric_generation_month(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Hydro_Value(_Base, etree.ElementBase):
                                ""
                                element_name = "Hydro-Value"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Hydro_Value"
                                documentation = """Hydro electricity in kWh in month."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Hydro_Electric_Generation_Month"
                                parent_method_name ="hydro_electric_generation_month"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def hydro_electric_generation_month(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                    class Is_Hydro_Output_Connected_To_Dwelling_Meter(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Hydro-Output-Connected-To-Dwelling-Meter"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Hydro_Output_Connected_To_Dwelling_Meter"
                        documentation = """Whether the hydro-electric station is connected to dwelling's electricity meter"""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Energy_Source"
                        parent_method_name ="sap_energy_source"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_energy_source(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class SAP_Building_Parts(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Building-Parts"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Building-Parts"
                    class_name = "SAP_Building_Parts"
                    documentation = None
                    type_documentation = """Details of the significant building parts that comprise the main habitable building in the property. The main habitable area generally consists of a single main building but can over time be extended to include extensions such as new wings and additional storeys. For the purpose of calculating the overall Energy Assessment for the property details of each distinct Building Part, such as its construction, have to be gathered because different materials have different insulation ratings (obviously) which affects the overall rating."""
                    has_text_node = False
                    min_occurs = 1
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["SAP_Building_Part"]
                    subclass_method_names = ["sap_building_part"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def sap_building_part(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Building-Part")
                
                    def add_sap_building_part(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Building-Part")
                
                    class SAP_Building_Part(_Base, etree.ElementBase):
                        ""
                        element_name = "SAP-Building-Part"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-Building-Part"
                        class_name = "SAP_Building_Part"
                        documentation = None
                        type_documentation = """A permanent structure that forms part of the Property and is built primarily for human habitation. A Building Part is usually made up of one or more Storey's and may contain a number of Internal Structural Features. An extension is also a Building Part."""
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = "unbounded"
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Building_Parts"
                        parent_method_name ="sap_building_parts"
                        subclass_class_names = ["Building_Part_Number", "Identifier", "Construction_Year", "Construction_Age_Band", "SAP_Openings", "SAP_Roofs", "SAP_Floor_Dimensions", "SAP_Thermal_Bridges", "SAP_Walls"]
                        subclass_method_names = ["building_part_number", "identifier", "construction_year", "construction_age_band", "sap_openings", "sap_roofs", "sap_floor_dimensions", "sap_thermal_bridges", "sap_walls"]
                    
                        @property
                        def sap_building_parts(self): return self.getparent()
                    
                        @property
                        def building_part_number(self): return self.find(f"{{{self.__class__.namespace}}}Building-Part-Number")
                    
                        def add_building_part_number(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Building-Part-Number")
                    
                        @property
                        def identifier(self): return self.find(f"{{{self.__class__.namespace}}}Identifier")
                    
                        def add_identifier(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Identifier")
                    
                        @property
                        def construction_year(self): return self.find(f"{{{self.__class__.namespace}}}Construction-Year")
                    
                        def add_construction_year(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Construction-Year")
                    
                        @property
                        def construction_age_band(self): return self.find(f"{{{self.__class__.namespace}}}Construction-Age-Band")
                    
                        def add_construction_age_band(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Construction-Age-Band")
                    
                        @property
                        def sap_openings(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Openings")
                    
                        def add_sap_openings(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Openings")
                    
                        @property
                        def sap_roofs(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Roofs")
                    
                        def add_sap_roofs(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Roofs")
                    
                        @property
                        def sap_floor_dimensions(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Floor-Dimensions")
                    
                        def add_sap_floor_dimensions(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Floor-Dimensions")
                    
                        @property
                        def sap_thermal_bridges(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Thermal-Bridges")
                    
                        def add_sap_thermal_bridges(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Thermal-Bridges")
                    
                        @property
                        def sap_walls(self): return self.find(f"{{{self.__class__.namespace}}}SAP-Walls")
                    
                        def add_sap_walls(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Walls")
                    
                        class Building_Part_Number(_Base, etree.ElementBase):
                            ""
                            element_name = "Building-Part-Number"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:positiveInteger"
                            class_name = "Building_Part_Number"
                            documentation = """An integer value which uniquely identifies the building part in the property. The value "1" must be assigned to the main dwelling."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Identifier(_Base, etree.ElementBase):
                            ""
                            element_name = "Identifier"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "IDString"
                            class_name = "Identifier"
                            documentation = """Identifier for the Building part - generally only required if there are more that one Building Parts of the same type e.g. "West Wing" and "East Wing" Extensions"""
                            type_documentation = """A string containing a unique identifier for something. The underlying assumption is that each instance of a class or entity will have a unique identifier assigned to it which can then be assigned to any referencing entity as a reference to the entity instance. This is a very similar concept to XML ID datatype but is locally defined because of the need to extend the datatype with domain specific attributes."""
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Construction_Year(_Base, etree.ElementBase):
                            ""
                            element_name = "Construction-Year"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:nonNegativeInteger"
                            class_name = "Construction_Year"
                            documentation = """The year when this building part was constructed. Not used if 'Construction-Age-Band' is used."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = int
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Construction_Age_Band(_Base, etree.ElementBase):
                            ""
                            element_name = "Construction-Age-Band"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "ConstructionDateCode"
                            class_name = "Construction_Age_Band"
                            documentation = """The age band when this building part was constructed. Not used if 'Construction-Year' is used."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'A': 'England and Wales: before 1900; Scotland: before 1919; Northern Ireland: before 1919', 'B': 'England and Wales: 1900-1929; Scotland: 1919-1929; Northern Ireland: 1919-1929', 'C': 'England and Wales: 1930-1949; Scotland: 1930-1949; Northern Ireland: 1930-1949', 'D': 'England and Wales: 1950-1966; Scotland: 1950-1964; Northern Ireland: 1950-1973', 'E': 'England and Wales: 1967-1975; Scotland: 1965-1975; Northern Ireland: 1974-1977', 'F': 'England and Wales: 1976-1982; Scotland: 1976-1983; Northern Ireland: 1978-1985', 'G': 'England and Wales: 1983-1990; Scotland: 1984-1991; Northern Ireland: 1986-1991', 'H': 'England and Wales: 1991-1995; Scotland: 1992-1998; Northern Ireland: 1992-1999', 'I': 'England and Wales: 1996-2002; Scotland: 1999-2002; Northern Ireland: 2000-2006', 'J': 'England and Wales: 2003-2006; Scotland: 2003-2007; Northern Ireland: not applicable', 'K': 'England and Wales: 2007-2011; Scotland: 2008-2011; Northern Ireland: 2007-2013', 'L': 'England and Wales: 2012 onwards; Scotland: 2012 onwards; Northern Ireland: 2014 onwards'}
                            map_values = {'England and Wales: before 1900; Scotland: before 1919; Northern Ireland: before 1919': 'A', 'England and Wales: 1900-1929; Scotland: 1919-1929; Northern Ireland: 1919-1929': 'B', 'England and Wales: 1930-1949; Scotland: 1930-1949; Northern Ireland: 1930-1949': 'C', 'England and Wales: 1950-1966; Scotland: 1950-1964; Northern Ireland: 1950-1973': 'D', 'England and Wales: 1967-1975; Scotland: 1965-1975; Northern Ireland: 1974-1977': 'E', 'England and Wales: 1976-1982; Scotland: 1976-1983; Northern Ireland: 1978-1985': 'F', 'England and Wales: 1983-1990; Scotland: 1984-1991; Northern Ireland: 1986-1991': 'G', 'England and Wales: 1991-1995; Scotland: 1992-1998; Northern Ireland: 1992-1999': 'H', 'England and Wales: 1996-2002; Scotland: 1999-2002; Northern Ireland: 2000-2006': 'I', 'England and Wales: 2003-2006; Scotland: 2003-2007; Northern Ireland: not applicable': 'J', 'England and Wales: 2007-2011; Scotland: 2008-2011; Northern Ireland: 2007-2013': 'K', 'England and Wales: 2012 onwards; Scotland: 2012 onwards; Northern Ireland: 2014 onwards': 'L'}
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class SAP_Openings(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Openings"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Openings"
                            class_name = "SAP_Openings"
                            documentation = None
                            type_documentation = """Exposed openings that make up a particular Building-Part."""
                            has_text_node = False
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = ["SAP_Opening"]
                            subclass_method_names = ["sap_opening"]
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def sap_opening(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Opening")
                        
                            def add_sap_opening(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Opening")
                        
                            class SAP_Opening(_Base, etree.ElementBase):
                                ""
                                element_name = "SAP-Opening"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Opening"
                                class_name = "SAP_Opening"
                                documentation = None
                                type_documentation = """Various measurements for each exposed opening that makes up a particular Building-Part."""
                                has_text_node = False
                                min_occurs = 1
                                max_occurs = "unbounded"
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Openings"
                                parent_method_name ="sap_openings"
                                subclass_class_names = ["Name", "Type", "Location", "Orientation", "Width", "Height", "Pitch"]
                                subclass_method_names = ["name", "type", "location", "orientation", "width", "height", "pitch"]
                            
                                @property
                                def sap_openings(self): return self.getparent()
                            
                                @property
                                def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
                            
                                def add_name(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
                            
                                @property
                                def type(self): return self.find(f"{{{self.__class__.namespace}}}Type")
                            
                                def add_type(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Type")
                            
                                @property
                                def location(self): return self.find(f"{{{self.__class__.namespace}}}Location")
                            
                                def add_location(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Location")
                            
                                @property
                                def orientation(self): return self.find(f"{{{self.__class__.namespace}}}Orientation")
                            
                                def add_orientation(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Orientation")
                            
                                @property
                                def width(self): return self.find(f"{{{self.__class__.namespace}}}Width")
                            
                                def add_width(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Width")
                            
                                @property
                                def height(self): return self.find(f"{{{self.__class__.namespace}}}Height")
                            
                                def add_height(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Height")
                            
                                @property
                                def pitch(self): return self.find(f"{{{self.__class__.namespace}}}Pitch")
                            
                                def add_pitch(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Pitch")
                            
                                class Name(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Name"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Name"
                                    documentation = """Unique name which identifies this opening. Can be just a number, e.g. "1". However, an opening cannot have the same name as a wall."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Type(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Type"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Type"
                                    documentation = """The name of the SAP-Opening-Type for this opening."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Location(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Location"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Location"
                                    documentation = """Name of the wall or roof which contains the opening."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Orientation(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Orientation"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-OrientationCode"
                                    class_name = "Orientation"
                                    documentation = """Compass direction in which the opening faces."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'0': 'unknown or unspecified', '1': 'North', '2': 'North East', '3': 'East', '4': 'South East', '5': 'South', '6': 'South West', '7': 'West', '8': 'North West', '9': 'Horizontal (windows and roof windows only)'}
                                    map_values = {'unknown or unspecified': '0', 'North': '1', 'North East': '2', 'East': '3', 'South East': '4', 'South': '5', 'South West': '6', 'West': '7', 'North West': '8', 'Horizontal (windows and roof windows only)': '9'}
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Width(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Width"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Width"
                                    documentation = """The width of the opening in metres. If the Width field is used to record the opening area, set the Height to 1."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Height(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Height"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Height"
                                    documentation = """The height of the opening in metres. If the Height field is used to record the opening area, set the Width to 1."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Pitch(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Pitch"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-VerticalPitch"
                                    class_name = "Pitch"
                                    documentation = """Pitch of roof containing roof window."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = int
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Opening"
                                    parent_method_name ="sap_opening"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_opening(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                        class SAP_Roofs(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Roofs"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Roofs"
                            class_name = "SAP_Roofs"
                            documentation = None
                            type_documentation = """Exposed roofs that make up a particular Building-Part."""
                            has_text_node = False
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = ["SAP_Roof"]
                            subclass_method_names = ["sap_roof"]
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def sap_roof(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Roof")
                        
                            def add_sap_roof(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Roof")
                        
                            class SAP_Roof(_Base, etree.ElementBase):
                                ""
                                element_name = "SAP-Roof"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Roof"
                                class_name = "SAP_Roof"
                                documentation = None
                                type_documentation = """Various measurements for each exposed roof that makes up a particular Building-Part."""
                                has_text_node = False
                                min_occurs = 1
                                max_occurs = "unbounded"
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Roofs"
                                parent_method_name ="sap_roofs"
                                subclass_class_names = ["Name", "Description", "Roof_Type", "Total_Roof_Area", "U_Value", "Kappa_Value"]
                                subclass_method_names = ["name", "description", "roof_type", "total_roof_area", "u_value", "kappa_value"]
                            
                                @property
                                def sap_roofs(self): return self.getparent()
                            
                                @property
                                def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
                            
                                def add_name(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
                            
                                @property
                                def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                            
                                def add_description(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                            
                                @property
                                def roof_type(self): return self.find(f"{{{self.__class__.namespace}}}Roof-Type")
                            
                                def add_roof_type(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Roof-Type")
                            
                                @property
                                def total_roof_area(self): return self.find(f"{{{self.__class__.namespace}}}Total-Roof-Area")
                            
                                def add_total_roof_area(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Total-Roof-Area")
                            
                                @property
                                def u_value(self): return self.find(f"{{{self.__class__.namespace}}}U-Value")
                            
                                def add_u_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}U-Value")
                            
                                @property
                                def kappa_value(self): return self.find(f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                def add_kappa_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                class Name(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Name"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Name"
                                    documentation = """Unique name which identifies this roof. Can be just a number, e.g. "1". However, a roof cannot have the same name as a wall."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Description(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Description"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Sentence"
                                    class_name = "Description"
                                    documentation = """Descriptive notes about the roof."""
                                    type_documentation = """String value with a language code for natural-language text."""
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Roof_Type(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Roof-Type"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-RoofTypeCode"
                                    class_name = "Roof_Type"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'2': 'exposed roof', '4': 'party ceiling'}
                                    map_values = {'exposed roof': '2', 'party ceiling': '4'}
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Total_Roof_Area(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Total-Roof-Area"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Total_Roof_Area"
                                    documentation = """Total roof area in square metres, inclusive of any openings."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class U_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "U-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "U_Value"
                                    documentation = """Exposed roof U-value."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Kappa_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Kappa-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "Kappa_Value"
                                    documentation = """Heat capacity per unit area in kJ/m2K."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Roof"
                                    parent_method_name ="sap_roof"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_roof(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                        class SAP_Floor_Dimensions(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Floor-Dimensions"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Floor-Dimensions"
                            class_name = "SAP_Floor_Dimensions"
                            documentation = None
                            type_documentation = """Storeys that make up a particular Building-Part."""
                            has_text_node = False
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = ["SAP_Floor_Dimension"]
                            subclass_method_names = ["sap_floor_dimension"]
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def sap_floor_dimension(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Floor-Dimension")
                        
                            def add_sap_floor_dimension(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Floor-Dimension")
                        
                            class SAP_Floor_Dimension(_Base, etree.ElementBase):
                                ""
                                element_name = "SAP-Floor-Dimension"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Floor-Dimension"
                                class_name = "SAP_Floor_Dimension"
                                documentation = None
                                type_documentation = """Various measurements for the floor of a particular storey."""
                                has_text_node = False
                                min_occurs = 1
                                max_occurs = "unbounded"
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Floor_Dimensions"
                                parent_method_name ="sap_floor_dimensions"
                                subclass_class_names = ["Name", "Storey", "Description", "Floor_Type", "Total_Floor_Area", "Storey_Height", "Heat_Loss_Area", "U_Value", "Kappa_Value", "Kappa_Value_From_Below"]
                                subclass_method_names = ["name", "storey", "description", "floor_type", "total_floor_area", "storey_height", "heat_loss_area", "u_value", "kappa_value", "kappa_value_from_below"]
                            
                                @property
                                def sap_floor_dimensions(self): return self.getparent()
                            
                                @property
                                def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
                            
                                def add_name(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
                            
                                @property
                                def storey(self): return self.find(f"{{{self.__class__.namespace}}}Storey")
                            
                                def add_storey(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storey")
                            
                                @property
                                def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                            
                                def add_description(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                            
                                @property
                                def floor_type(self): return self.find(f"{{{self.__class__.namespace}}}Floor-Type")
                            
                                def add_floor_type(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Floor-Type")
                            
                                @property
                                def total_floor_area(self): return self.find(f"{{{self.__class__.namespace}}}Total-Floor-Area")
                            
                                def add_total_floor_area(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Total-Floor-Area")
                            
                                @property
                                def storey_height(self): return self.find(f"{{{self.__class__.namespace}}}Storey-Height")
                            
                                def add_storey_height(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storey-Height")
                            
                                @property
                                def heat_loss_area(self): return self.find(f"{{{self.__class__.namespace}}}Heat-Loss-Area")
                            
                                def add_heat_loss_area(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Heat-Loss-Area")
                            
                                @property
                                def u_value(self): return self.find(f"{{{self.__class__.namespace}}}U-Value")
                            
                                def add_u_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}U-Value")
                            
                                @property
                                def kappa_value(self): return self.find(f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                def add_kappa_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                @property
                                def kappa_value_from_below(self): return self.find(f"{{{self.__class__.namespace}}}Kappa-Value-From-Below")
                            
                                def add_kappa_value_from_below(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kappa-Value-From-Below")
                            
                                class Name(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Name"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Name"
                                    documentation = """A name describing the floor dimensioned."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Storey(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Storey"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-StoreyFloorCode"
                                    class_name = "Storey"
                                    documentation = """Building storey on which the floor is located."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'-1': 'Lower ground', '0': 'Ground', '1': '1st', '2': '2nd', '3': '3rd', '4': '4th', '5': '5th', '6': '6th', '99': 'Roof rooms'}
                                    map_values = {'Lower ground': '-1', 'Ground': '0', '1st': '1', '2nd': '2', '3rd': '3', '4th': '4', '5th': '5', '6th': '6', 'Roof rooms': '99'}
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Description(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Description"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Sentence"
                                    class_name = "Description"
                                    documentation = """Descriptive notes about the floor."""
                                    type_documentation = """String value with a language code for natural-language text."""
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Floor_Type(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Floor-Type"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-FloorTypeCode"
                                    class_name = "Floor_Type"
                                    documentation = """Type of floor (exposure)."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'1': 'basement floor', '2': 'ground floor', '3': 'upper floor (if heat loss area > 0, this area is an exposed floor)', '4': 'party floor'}
                                    map_values = {'basement floor': '1', 'ground floor': '2', 'upper floor (if heat loss area > 0, this area is an exposed floor)': '3', 'party floor': '4'}
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Total_Floor_Area(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Total-Floor-Area"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Total_Floor_Area"
                                    documentation = """The total floor area of the storey in square metres."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Storey_Height(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Storey-Height"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Storey_Height"
                                    documentation = """Average height of the storey in metres."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Heat_Loss_Area(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Heat-Loss-Area"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Heat_Loss_Area"
                                    documentation = """The estimated total heat loss area for the floor in square metres."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class U_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "U-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "U_Value"
                                    documentation = """Heat loss floor U-value."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Kappa_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Kappa-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "Kappa_Value"
                                    documentation = """Heat capacity of floor per unit area in kJ/m2K."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Kappa_Value_From_Below(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Kappa-Value-From-Below"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "Kappa_Value_From_Below"
                                    documentation = """Heat capacity of ceiling below. Applies to the non-heat-loss area of an upper floor."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Floor_Dimension"
                                    parent_method_name ="sap_floor_dimension"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_floor_dimension(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                        class SAP_Thermal_Bridges(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Thermal-Bridges"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Thermal-Bridges"
                            class_name = "SAP_Thermal_Bridges"
                            documentation = None
                            type_documentation = """Thermal bridges that make up a particular Building-Part."""
                            has_text_node = False
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = ["Thermal_Bridge_Code", "User_Defined_Y_Value", "Calculation_Reference", "SAP_Thermal_Bridge"]
                            subclass_method_names = ["thermal_bridge_code", "user_defined_y_value", "calculation_reference", "sap_thermal_bridge"]
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def thermal_bridge_code(self): return self.find(f"{{{self.__class__.namespace}}}Thermal-Bridge-Code")
                        
                            def add_thermal_bridge_code(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Thermal-Bridge-Code")
                        
                            @property
                            def user_defined_y_value(self): return self.find(f"{{{self.__class__.namespace}}}User-Defined-Y-Value")
                        
                            def add_user_defined_y_value(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}User-Defined-Y-Value")
                        
                            @property
                            def calculation_reference(self): return self.find(f"{{{self.__class__.namespace}}}Calculation-Reference")
                        
                            def add_calculation_reference(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Calculation-Reference")
                        
                            @property
                            def sap_thermal_bridge(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Thermal-Bridge")
                        
                            def add_sap_thermal_bridge(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Thermal-Bridge")
                        
                            class Thermal_Bridge_Code(_Base, etree.ElementBase):
                                ""
                                element_name = "Thermal-Bridge-Code"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-ThermalBridgeCode"
                                class_name = "Thermal_Bridge_Code"
                                documentation = """Code which indicates how the thermal bridge data has been recorded."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'default', '2': '2002 regulations. For backwards compatibility only, do not use.', '3': 'accredited. For backwards compatibility only, do not use.', '4': 'user defined (global y-value)', '5': 'user defined (individual values)'}
                                map_values = {'default': '1', '2002 regulations. For backwards compatibility only, do not use.': '2', 'accredited. For backwards compatibility only, do not use.': '3', 'user defined (global y-value)': '4', 'user defined (individual values)': '5'}
                                parent_class_name = "SAP_Thermal_Bridges"
                                parent_method_name ="sap_thermal_bridges"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_thermal_bridges(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class User_Defined_Y_Value(_Base, etree.ElementBase):
                                ""
                                element_name = "User-Defined-Y-Value"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "User_Defined_Y_Value"
                                documentation = """Global y-value for all thermal bridges in watts per square metre per kelvin; only if thermal bridge code is: user defined (global y-value)"""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Thermal_Bridges"
                                parent_method_name ="sap_thermal_bridges"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_thermal_bridges(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Calculation_Reference(_Base, etree.ElementBase):
                                ""
                                element_name = "Calculation-Reference"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:string"
                                class_name = "Calculation_Reference"
                                documentation = """Reference to the details of the calculation of the global y-value; only if thermal bridging is user defined global y-value."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Thermal_Bridges"
                                parent_method_name ="sap_thermal_bridges"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def sap_thermal_bridges(self): return self.getparent()
                            
                                @property
                                def value(self): return self.text
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class SAP_Thermal_Bridge(_Base, etree.ElementBase):
                                ""
                                element_name = "SAP-Thermal-Bridge"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Thermal-Bridge"
                                class_name = "SAP_Thermal_Bridge"
                                documentation = None
                                type_documentation = """Various measurements for each thermal bridge that makes up a particular Building-Part."""
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = "unbounded"
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Thermal_Bridges"
                                parent_method_name ="sap_thermal_bridges"
                                subclass_class_names = ["Thermal_Bridge_Type", "Length", "Psi_Value", "Psi_Value_Source", "Psi_Value_Calculation_Reference"]
                                subclass_method_names = ["thermal_bridge_type", "length", "psi_value", "psi_value_source", "psi_value_calculation_reference"]
                            
                                @property
                                def sap_thermal_bridges(self): return self.getparent()
                            
                                @property
                                def thermal_bridge_type(self): return self.find(f"{{{self.__class__.namespace}}}Thermal-Bridge-Type")
                            
                                def add_thermal_bridge_type(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Thermal-Bridge-Type")
                            
                                @property
                                def length(self): return self.find(f"{{{self.__class__.namespace}}}Length")
                            
                                def add_length(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Length")
                            
                                @property
                                def psi_value(self): return self.find(f"{{{self.__class__.namespace}}}Psi-Value")
                            
                                def add_psi_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Psi-Value")
                            
                                @property
                                def psi_value_source(self): return self.find(f"{{{self.__class__.namespace}}}Psi-Value-Source")
                            
                                def add_psi_value_source(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Psi-Value-Source")
                            
                                @property
                                def psi_value_calculation_reference(self): return self.find(f"{{{self.__class__.namespace}}}Psi-Value-Calculation-Reference")
                            
                                def add_psi_value_calculation_reference(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Psi-Value-Calculation-Reference")
                            
                                class Thermal_Bridge_Type(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Thermal-Bridge-Type"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-ThermalBridgeTypeCode"
                                    class_name = "Thermal_Bridge_Type"
                                    documentation = """Code to indicate a particular type of thermal bridge; only if thermal bridge code is: user defined (individual values)."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'ND': 'not defined (for backward compatibility only, do not use)', 'E1': 'Steel lintel with perforated steel base plate', 'E2': 'Other lintels (including other steel lintels)', 'E3': 'Sill', 'E4': 'Jamb', 'E5': 'Ground floor (normal)', 'E6': 'Intermediate floor within a dwelling', 'E7': 'Party floor between dwellings (in blocks of flats)', 'E8': 'Balcony within a dwelling, wall insulation continuous', 'E9': 'Balcony between dwellings, wall insulation continuous', 'E10': 'Eaves (insulation at ceiling level)', 'E11': 'Eaves (insulation at rafter level)', 'E12': 'Gable (insulation at ceiling level)', 'E13': 'Gable (insulation at rafter level)', 'E14': 'Flat roof', 'E15': 'Flat roof with parapet', 'E16': 'Corner (normal)', 'E17': 'Corner (inverted - internal area greater than external area)', 'E18': 'Party wall between dwellings', 'E19': 'Ground floor (inverted)', 'E20': 'Exposed floor (normal)', 'E21': 'Exposed floor (inverted)', 'E22': 'Basement floor', 'E23': 'Balcony within or between dwellings, balcony support penetrates wall insulation', 'E24': 'Eaves (insulation at ceiling level - inverted)', 'E25': 'Staggered party wall between dwellings', 'P1': 'Ground floor', 'P2': 'Intermediate floor within a dwelling', 'P3': 'Intermediate floor between dwellings (in blocks of flats)', 'P4': 'Roof (insulation at ceiling level)', 'P5': 'Roof (insulation at rafter level)', 'P6': 'Ground floor (inverted)', 'P7': 'Exposed floor (normal)', 'P8': 'Exposed floor (inverted)', 'R1': 'Head of roof window', 'R2': 'Sill of roof window', 'R3': 'Jamb of roof window', 'R4': 'Ridge (vaulted ceiling)', 'R5': 'Ridge (inverted)', 'R6': 'Flat ceiling', 'R7': 'Flat ceiling (inverted)', 'R8': 'Roof to wall (rafter)', 'R9': 'Roof to wall (flat ceiling)', 'R10': 'All other roof or room-in-roof junctions', 'R11': 'Upstands or kerbs of rooflights', 'O1': 'other type 1', 'O2': 'other type 2'}
                                    map_values = {'not defined (for backward compatibility only, do not use)': 'ND', 'Steel lintel with perforated steel base plate': 'E1', 'Other lintels (including other steel lintels)': 'E2', 'Sill': 'E3', 'Jamb': 'E4', 'Ground floor (normal)': 'E5', 'Intermediate floor within a dwelling': 'P2', 'Party floor between dwellings (in blocks of flats)': 'E7', 'Balcony within a dwelling, wall insulation continuous': 'E8', 'Balcony between dwellings, wall insulation continuous': 'E9', 'Eaves (insulation at ceiling level)': 'E10', 'Eaves (insulation at rafter level)': 'E11', 'Gable (insulation at ceiling level)': 'E12', 'Gable (insulation at rafter level)': 'E13', 'Flat roof': 'E14', 'Flat roof with parapet': 'E15', 'Corner (normal)': 'E16', 'Corner (inverted - internal area greater than external area)': 'E17', 'Party wall between dwellings': 'E18', 'Ground floor (inverted)': 'P6', 'Exposed floor (normal)': 'P7', 'Exposed floor (inverted)': 'P8', 'Basement floor': 'E22', 'Balcony within or between dwellings, balcony support penetrates wall insulation': 'E23', 'Eaves (insulation at ceiling level - inverted)': 'E24', 'Staggered party wall between dwellings': 'E25', 'Ground floor': 'P1', 'Intermediate floor between dwellings (in blocks of flats)': 'P3', 'Roof (insulation at ceiling level)': 'P4', 'Roof (insulation at rafter level)': 'P5', 'Head of roof window': 'R1', 'Sill of roof window': 'R2', 'Jamb of roof window': 'R3', 'Ridge (vaulted ceiling)': 'R4', 'Ridge (inverted)': 'R5', 'Flat ceiling': 'R6', 'Flat ceiling (inverted)': 'R7', 'Roof to wall (rafter)': 'R8', 'Roof to wall (flat ceiling)': 'R9', 'All other roof or room-in-roof junctions': 'R10', 'Upstands or kerbs of rooflights': 'R11', 'other type 1': 'O1', 'other type 2': 'O2'}
                                    parent_class_name = "SAP_Thermal_Bridge"
                                    parent_method_name ="sap_thermal_bridge"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_thermal_bridge(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Length(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Length"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Length"
                                    documentation = """Length of the thermal bridge in metres; only if thermal bridge code is: user defined (individual values)."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Thermal_Bridge"
                                    parent_method_name ="sap_thermal_bridge"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_thermal_bridge(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Psi_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Psi-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Psi_Value"
                                    documentation = """Linear thermal transmittance (psi-value); only if thermal bridging is user defined individual values."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Thermal_Bridge"
                                    parent_method_name ="sap_thermal_bridge"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_thermal_bridge(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Psi_Value_Source(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Psi-Value-Source"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "PsiValueSourceCode"
                                    class_name = "Psi_Value_Source"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'1': 'calculated by person with suitable expertise', '2': 'government-approved scheme', '3': 'not government-approved scheme', '4': 'SAP table default'}
                                    map_values = {'calculated by person with suitable expertise': '1', 'government-approved scheme': '2', 'not government-approved scheme': '3', 'SAP table default': '4'}
                                    parent_class_name = "SAP_Thermal_Bridge"
                                    parent_method_name ="sap_thermal_bridge"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_thermal_bridge(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Psi_Value_Calculation_Reference(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Psi-Value-Calculation-Reference"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Psi_Value_Calculation_Reference"
                                    documentation = """Reference to the details of the calculation of the psi-value."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Thermal_Bridge"
                                    parent_method_name ="sap_thermal_bridge"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_thermal_bridge(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                        class SAP_Walls(_Base, etree.ElementBase):
                            ""
                            element_name = "SAP-Walls"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-Walls"
                            class_name = "SAP_Walls"
                            documentation = None
                            type_documentation = """Exposed walls that make up a particular Storey."""
                            has_text_node = False
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Building_Part"
                            parent_method_name ="sap_building_part"
                            subclass_class_names = ["SAP_Wall"]
                            subclass_method_names = ["sap_wall"]
                        
                            @property
                            def sap_building_part(self): return self.getparent()
                        
                            @property
                            def sap_wall(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Wall")
                        
                            def add_sap_wall(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Wall")
                        
                            class SAP_Wall(_Base, etree.ElementBase):
                                ""
                                element_name = "SAP-Wall"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "SAP-Wall"
                                class_name = "SAP_Wall"
                                documentation = None
                                type_documentation = """Various measurements for each wall of a particular storey."""
                                has_text_node = False
                                min_occurs = 1
                                max_occurs = "unbounded"
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "SAP_Walls"
                                parent_method_name ="sap_walls"
                                subclass_class_names = ["Name", "Description", "Wall_Type", "Total_Wall_Area", "U_Value", "Is_Curtain_Walling", "Kappa_Value"]
                                subclass_method_names = ["name", "description", "wall_type", "total_wall_area", "u_value", "is_curtain_walling", "kappa_value"]
                            
                                @property
                                def sap_walls(self): return self.getparent()
                            
                                @property
                                def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
                            
                                def add_name(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
                            
                                @property
                                def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                            
                                def add_description(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                            
                                @property
                                def wall_type(self): return self.find(f"{{{self.__class__.namespace}}}Wall-Type")
                            
                                def add_wall_type(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wall-Type")
                            
                                @property
                                def total_wall_area(self): return self.find(f"{{{self.__class__.namespace}}}Total-Wall-Area")
                            
                                def add_total_wall_area(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Total-Wall-Area")
                            
                                @property
                                def u_value(self): return self.find(f"{{{self.__class__.namespace}}}U-Value")
                            
                                def add_u_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}U-Value")
                            
                                @property
                                def is_curtain_walling(self): return self.find(f"{{{self.__class__.namespace}}}Is-Curtain-Walling")
                            
                                def add_is_curtain_walling(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Curtain-Walling")
                            
                                @property
                                def kappa_value(self): return self.find(f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                def add_kappa_value(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kappa-Value")
                            
                                class Name(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Name"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:string"
                                    class_name = "Name"
                                    documentation = """Unique name which identifies this wall within its storey. Can be just a number, e.g. "1". However, a wall cannot have the same name as an opening or a roof."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Description(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Description"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Sentence"
                                    class_name = "Description"
                                    documentation = """Descriptive notes about the wall."""
                                    type_documentation = """String value with a language code for natural-language text."""
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.text
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Wall_Type(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Wall-Type"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "SAP-WallTypeCode"
                                    class_name = "Wall_Type"
                                    documentation = """Type of wall (exposure)."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = str
                                    map_codes = {'1': 'basement wall', '2': 'exposed wall', '3': 'sheltered wall', '4': 'party wall', '5': 'internal wall'}
                                    map_values = {'basement wall': '1', 'exposed wall': '2', 'sheltered wall': '3', 'party wall': '4', 'internal wall': '5'}
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Total_Wall_Area(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Total-Wall-Area"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Measurement"
                                    class_name = "Total_Wall_Area"
                                    documentation = """Total wall area in square metres, inclusive of any openings."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class U_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "U-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "U_Value"
                                    documentation = """Exposed wall U-value."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 1
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                                class Is_Curtain_Walling(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Is-Curtain-Walling"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:boolean"
                                    class_name = "Is_Curtain_Walling"
                                    documentation = """Whether the wall is curtain walling, i.e. a facade construction consisting of a frame of aluminium vertical and horizontal members, infilled with glazing units and opaque panels."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = bool
                                    map_codes = {'true': True, '1': True, 'false': False, '0': False}
                                    map_values = {True: '1', False: '0'}
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.map_codes[self.text]
                                
                                    @value.setter
                                    def value(self, value):
                                        if value in self.__class__.map_values:
                                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                        else:
                                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code):
                                        if code in self.__class__.map_codes:
                                            self.text = str(code)
                                        else:
                                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                
                                class Kappa_Value(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Kappa-Value"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "xs:decimal"
                                    class_name = "Kappa_Value"
                                    documentation = """Heat capacity per unit area in kJ/m2K."""
                                    type_documentation = None
                                    has_text_node = True
                                    min_occurs = 0
                                    max_occurs = 1
                                    python_type_convertor = float
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "SAP_Wall"
                                    parent_method_name ="sap_wall"
                                    subclass_class_names = []
                                    subclass_method_names = []
                                
                                    @property
                                    def sap_wall(self): return self.getparent()
                                
                                    @property
                                    def value(self): return self.__class__.python_type_convertor(self.text)
                                
                                    @value.setter
                                    def value(self, value): self.text = str(value)
                                
                                    @property
                                    def code(self): return self.text
                                
                                    @code.setter
                                    def code(self, code): self.text = str(code)
                                
                class SAP_Opening_Types(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Opening-Types"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Opening-Types"
                    class_name = "SAP_Opening_Types"
                    documentation = None
                    type_documentation = """Types of exposed openings that make up a particular property. Opening types are used to capture common features shared by multiple openings, to avoid having to record the same data explicitly for each opening."""
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["SAP_Opening_Type"]
                    subclass_method_names = ["sap_opening_type"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def sap_opening_type(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Opening-Type")
                
                    def add_sap_opening_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Opening-Type")
                
                    class SAP_Opening_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "SAP-Opening-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-Opening-Type"
                        class_name = "SAP_Opening_Type"
                        documentation = None
                        type_documentation = """Various measurements for a particular type of exposed opening that makes up a particular property. Opening types are used to capture common features shared by multiple openings, to avoid having to record the same data explicitly for each opening."""
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = "unbounded"
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Opening_Types"
                        parent_method_name ="sap_opening_types"
                        subclass_class_names = ["Name", "Description", "Data_Source", "Type", "Glazing_Type", "Glazing_Gap", "IsArgonFilled", "IsKryptonFilled", "Frame_Type", "Solar_Transmittance", "Frame_Factor", "U_Value"]
                        subclass_method_names = ["name", "description", "data_source", "type", "glazing_type", "glazing_gap", "isargonfilled", "iskryptonfilled", "frame_type", "solar_transmittance", "frame_factor", "u_value"]
                    
                        @property
                        def sap_opening_types(self): return self.getparent()
                    
                        @property
                        def name(self): return self.find(f"{{{self.__class__.namespace}}}Name")
                    
                        def add_name(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Name")
                    
                        @property
                        def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                    
                        def add_description(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                    
                        @property
                        def data_source(self): return self.find(f"{{{self.__class__.namespace}}}Data-Source")
                    
                        def add_data_source(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Data-Source")
                    
                        @property
                        def type(self): return self.find(f"{{{self.__class__.namespace}}}Type")
                    
                        def add_type(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Type")
                    
                        @property
                        def glazing_type(self): return self.find(f"{{{self.__class__.namespace}}}Glazing-Type")
                    
                        def add_glazing_type(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Glazing-Type")
                    
                        @property
                        def glazing_gap(self): return self.find(f"{{{self.__class__.namespace}}}Glazing-Gap")
                    
                        def add_glazing_gap(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Glazing-Gap")
                    
                        @property
                        def isargonfilled(self): return self.find(f"{{{self.__class__.namespace}}}IsArgonFilled")
                    
                        def add_isargonfilled(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}IsArgonFilled")
                    
                        @property
                        def iskryptonfilled(self): return self.find(f"{{{self.__class__.namespace}}}IsKryptonFilled")
                    
                        def add_iskryptonfilled(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}IsKryptonFilled")
                    
                        @property
                        def frame_type(self): return self.find(f"{{{self.__class__.namespace}}}Frame-Type")
                    
                        def add_frame_type(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Frame-Type")
                    
                        @property
                        def solar_transmittance(self): return self.find(f"{{{self.__class__.namespace}}}Solar-Transmittance")
                    
                        def add_solar_transmittance(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Solar-Transmittance")
                    
                        @property
                        def frame_factor(self): return self.find(f"{{{self.__class__.namespace}}}Frame-Factor")
                    
                        def add_frame_factor(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Frame-Factor")
                    
                        @property
                        def u_value(self): return self.find(f"{{{self.__class__.namespace}}}U-Value")
                    
                        def add_u_value(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}U-Value")
                    
                        class Name(_Base, etree.ElementBase):
                            ""
                            element_name = "Name"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Name"
                            documentation = """Unique name which identifies this opening type. Can be just a number, e.g. "1"."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Description(_Base, etree.ElementBase):
                            ""
                            element_name = "Description"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Sentence"
                            class_name = "Description"
                            documentation = """Descriptive notes about the opening type."""
                            type_documentation = """String value with a language code for natural-language text."""
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Data_Source(_Base, etree.ElementBase):
                            ""
                            element_name = "Data-Source"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-OpeningDataSourceCode"
                            class_name = "Data_Source"
                            documentation = """The source of the data for this type of opening."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'2': 'manufacturer declaration', '3': 'SAP table', '4': 'BFRC data'}
                            map_values = {'manufacturer declaration': '2', 'SAP table': '3', 'BFRC data': '4'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Type(_Base, etree.ElementBase):
                            ""
                            element_name = "Type"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-OpeningTypeCode"
                            class_name = "Type"
                            documentation = """The (physical) type of opening that this opening type represents."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'solid door', '2': 'semi-glazed door', '3': 'door to corridor', '4': 'window', '5': 'roof window', '6': 'rooflight'}
                            map_values = {'solid door': '1', 'semi-glazed door': '2', 'door to corridor': '3', 'window': '4', 'roof window': '5', 'rooflight': '6'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Glazing_Type(_Base, etree.ElementBase):
                            ""
                            element_name = "Glazing-Type"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-GlazingTypeCode"
                            class_name = "Glazing_Type"
                            documentation = """The type of glazing; if U-value is from BFRC or manufacturer declaration, give as one of - single - double - triple."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'not applicable (non-glazed door)', '2': 'single', '3': 'double', '4': 'double low-E hard 0.2', '5': 'double low-E hard 0.15', '6': 'double low-E soft 0.1', '7': 'double low-E soft 0.05', '8': 'triple', '9': 'triple low-E hard 0.2', '10': 'triple low-E hard 0.15', '11': 'triple low-E soft 0.1', '12': 'triple low-E soft 0.05', '13': 'secondary glazing'}
                            map_values = {'not applicable (non-glazed door)': '1', 'single': '2', 'double': '3', 'double low-E hard 0.2': '4', 'double low-E hard 0.15': '5', 'double low-E soft 0.1': '6', 'double low-E soft 0.05': '7', 'triple': '8', 'triple low-E hard 0.2': '9', 'triple low-E hard 0.15': '10', 'triple low-E soft 0.1': '11', 'triple low-E soft 0.05': '12', 'secondary glazing': '13'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Glazing_Gap(_Base, etree.ElementBase):
                            ""
                            element_name = "Glazing-Gap"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-GlazingGapTypeCode"
                            class_name = "Glazing_Gap"
                            documentation = """Gap between glass panes; only if SAP table and double, triple glazed or secondary glazing."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': '6 mm', '2': '12 mm', '3': '16 mm or more'}
                            map_values = {'6 mm': '1', '12 mm': '2', '16 mm or more': '3'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class IsArgonFilled(_Base, etree.ElementBase):
                            ""
                            element_name = "IsArgonFilled"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:boolean"
                            class_name = "IsArgonFilled"
                            documentation = """Is the opening argon-filled? Only if SAP table."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = bool
                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                            map_values = {True: '1', False: '0'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class IsKryptonFilled(_Base, etree.ElementBase):
                            ""
                            element_name = "IsKryptonFilled"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:boolean"
                            class_name = "IsKryptonFilled"
                            documentation = """Is the opening krypton-filled? Only if SAP table."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = bool
                            map_codes = {'true': True, '1': True, 'false': False, '0': False}
                            map_values = {True: '1', False: '0'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Frame_Type(_Base, etree.ElementBase):
                            ""
                            element_name = "Frame-Type"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "SAP-FrameTypeCode"
                            class_name = "Frame_Type"
                            documentation = """The type of frame, only if data source is SAP table and it is a window, roof window or half-glazed door."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = {'1': 'wood', '2': 'PVC', '3': 'metal no break', '4': 'metal 4 mm break', '5': 'metal 8 mm break', '6': 'metal 12 mm break', '7': 'metal 20 mm break', '8': 'metal 32 mm break', '9': 'unknown'}
                            map_values = {'wood': '1', 'PVC': '2', 'metal no break': '3', 'metal 4 mm break': '4', 'metal 8 mm break': '5', 'metal 12 mm break': '6', 'metal 20 mm break': '7', 'metal 32 mm break': '8', 'unknown': '9'}
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.map_codes[self.text]
                        
                            @value.setter
                            def value(self, value):
                                if value in self.__class__.map_values:
                                    self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                else:
                                    raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code):
                                if code in self.__class__.map_codes:
                                    self.text = str(code)
                                else:
                                    raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                        
                        class Solar_Transmittance(_Base, etree.ElementBase):
                            ""
                            element_name = "Solar-Transmittance"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Solar_Transmittance"
                            documentation = """The solar transmittance; not if a door."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Frame_Factor(_Base, etree.ElementBase):
                            ""
                            element_name = "Frame-Factor"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "Frame_Factor"
                            documentation = """The frame factor; not if a door."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 0
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class U_Value(_Base, etree.ElementBase):
                            ""
                            element_name = "U-Value"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:decimal"
                            class_name = "U_Value"
                            documentation = """The U-value. For rooflights, the U-value should be in the horizontal plane."""
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = float
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Opening_Type"
                            parent_method_name ="sap_opening_type"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_opening_type(self): return self.getparent()
                        
                            @property
                            def value(self): return self.__class__.python_type_convertor(self.text)
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                class SAP_Ventilation(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Ventilation"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Ventilation"
                    class_name = "SAP_Ventilation"
                    documentation = None
                    type_documentation = """Details of the means by which the building is ventilated"""
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Closed_Flues_Count", "Open_Flues_Count", "Boilers_Flues_Count", "Other_Flues_Count", "Open_Chimneys_Count", "Blocked_Chimneys_Count", "Fans_Vents_Count", "Flueless_Gas_Fires_Count", "Pressure_Test", "Pressure_Test_Certificate_Number", "Air_Permeability", "Ground_Floor_Type", "Wall_Type", "Has_Draught_Lobby", "DraughtStripping", "Sheltered_Sides_Count", "Ventilation_Type", "Mechanical_Ventilation_Data_Source", "Mechanical_Vent_System_Index_Number", "Mechanical_Vent_Commissioning_Certificate_Number", "Mechanical_Vent_Installation_Engineer", "Mechanical_Vent_System_Make_Model", "Wet_Rooms_Count", "Mechanical_Vent_Specific_Fan_Power", "Mechanical_Vent_Heat_Recovery_Efficiency", "Mechanical_Vent_Duct_Type", "Mechanical_Vent_Duct_Insulation", "Mechanical_Vent_Duct_Insulation_Level", "Mechanical_Vent_Duct_Placement", "Mechanical_Vent_Measured_Installation", "Kitchen_Room_Fans_Count", "Kitchen_Room_Fans_Specific_Power", "Non_Kitchen_Room_Fans_Count", "Non_Kitchen_Room_Fans_Specific_Power", "Kitchen_Duct_Fans_Count", "Kitchen_Duct_Fans_Specific_Power", "Non_Kitchen_Duct_Fans_Count", "Non_Kitchen_Duct_Fans_Specific_Power", "Kitchen_Wall_Fans_Count", "Kitchen_Wall_Fans_Specific_Power", "Non_Kitchen_Wall_Fans_Count", "Non_Kitchen_Wall_Fans_Specific_Power", "Extract_Fans_Count", "PSV_Count", "Is_Mechanical_Vent_Approved_Installer_Scheme", "Mechanical_Vent_Ducts_Index_Number"]
                    subclass_method_names = ["closed_flues_count", "open_flues_count", "boilers_flues_count", "other_flues_count", "open_chimneys_count", "blocked_chimneys_count", "fans_vents_count", "flueless_gas_fires_count", "pressure_test", "pressure_test_certificate_number", "air_permeability", "ground_floor_type", "wall_type", "has_draught_lobby", "draughtstripping", "sheltered_sides_count", "ventilation_type", "mechanical_ventilation_data_source", "mechanical_vent_system_index_number", "mechanical_vent_commissioning_certificate_number", "mechanical_vent_installation_engineer", "mechanical_vent_system_make_model", "wet_rooms_count", "mechanical_vent_specific_fan_power", "mechanical_vent_heat_recovery_efficiency", "mechanical_vent_duct_type", "mechanical_vent_duct_insulation", "mechanical_vent_duct_insulation_level", "mechanical_vent_duct_placement", "mechanical_vent_measured_installation", "kitchen_room_fans_count", "kitchen_room_fans_specific_power", "non_kitchen_room_fans_count", "non_kitchen_room_fans_specific_power", "kitchen_duct_fans_count", "kitchen_duct_fans_specific_power", "non_kitchen_duct_fans_count", "non_kitchen_duct_fans_specific_power", "kitchen_wall_fans_count", "kitchen_wall_fans_specific_power", "non_kitchen_wall_fans_count", "non_kitchen_wall_fans_specific_power", "extract_fans_count", "psv_count", "is_mechanical_vent_approved_installer_scheme", "mechanical_vent_ducts_index_number"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def closed_flues_count(self): return self.find(f"{{{self.__class__.namespace}}}Closed-Flues-Count")
                
                    def add_closed_flues_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Closed-Flues-Count")
                
                    @property
                    def open_flues_count(self): return self.find(f"{{{self.__class__.namespace}}}Open-Flues-Count")
                
                    def add_open_flues_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Open-Flues-Count")
                
                    @property
                    def boilers_flues_count(self): return self.find(f"{{{self.__class__.namespace}}}Boilers-Flues-Count")
                
                    def add_boilers_flues_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Boilers-Flues-Count")
                
                    @property
                    def other_flues_count(self): return self.find(f"{{{self.__class__.namespace}}}Other-Flues-Count")
                
                    def add_other_flues_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Other-Flues-Count")
                
                    @property
                    def open_chimneys_count(self): return self.find(f"{{{self.__class__.namespace}}}Open-Chimneys-Count")
                
                    def add_open_chimneys_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Open-Chimneys-Count")
                
                    @property
                    def blocked_chimneys_count(self): return self.find(f"{{{self.__class__.namespace}}}Blocked-Chimneys-Count")
                
                    def add_blocked_chimneys_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Blocked-Chimneys-Count")
                
                    @property
                    def fans_vents_count(self): return self.find(f"{{{self.__class__.namespace}}}Fans-Vents-Count")
                
                    def add_fans_vents_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Fans-Vents-Count")
                
                    @property
                    def flueless_gas_fires_count(self): return self.find(f"{{{self.__class__.namespace}}}Flueless-Gas-Fires-Count")
                
                    def add_flueless_gas_fires_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Flueless-Gas-Fires-Count")
                
                    @property
                    def pressure_test(self): return self.find(f"{{{self.__class__.namespace}}}Pressure-Test")
                
                    def add_pressure_test(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Pressure-Test")
                
                    @property
                    def pressure_test_certificate_number(self): return self.find(f"{{{self.__class__.namespace}}}Pressure-Test-Certificate-Number")
                
                    def add_pressure_test_certificate_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Pressure-Test-Certificate-Number")
                
                    @property
                    def air_permeability(self): return self.find(f"{{{self.__class__.namespace}}}Air-Permeability")
                
                    def add_air_permeability(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Permeability")
                
                    @property
                    def ground_floor_type(self): return self.find(f"{{{self.__class__.namespace}}}Ground-Floor-Type")
                
                    def add_ground_floor_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Ground-Floor-Type")
                
                    @property
                    def wall_type(self): return self.find(f"{{{self.__class__.namespace}}}Wall-Type")
                
                    def add_wall_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wall-Type")
                
                    @property
                    def has_draught_lobby(self): return self.find(f"{{{self.__class__.namespace}}}Has-Draught-Lobby")
                
                    def add_has_draught_lobby(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Has-Draught-Lobby")
                
                    @property
                    def draughtstripping(self): return self.find(f"{{{self.__class__.namespace}}}DraughtStripping")
                
                    def add_draughtstripping(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}DraughtStripping")
                
                    @property
                    def sheltered_sides_count(self): return self.find(f"{{{self.__class__.namespace}}}Sheltered-Sides-Count")
                
                    def add_sheltered_sides_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Sheltered-Sides-Count")
                
                    @property
                    def ventilation_type(self): return self.find(f"{{{self.__class__.namespace}}}Ventilation-Type")
                
                    def add_ventilation_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Ventilation-Type")
                
                    @property
                    def mechanical_ventilation_data_source(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Ventilation-Data-Source")
                
                    def add_mechanical_ventilation_data_source(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Ventilation-Data-Source")
                
                    @property
                    def mechanical_vent_system_index_number(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-System-Index-Number")
                
                    def add_mechanical_vent_system_index_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-System-Index-Number")
                
                    @property
                    def mechanical_vent_commissioning_certificate_number(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Commissioning-Certificate-Number")
                
                    def add_mechanical_vent_commissioning_certificate_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Commissioning-Certificate-Number")
                
                    @property
                    def mechanical_vent_installation_engineer(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Installation-Engineer")
                
                    def add_mechanical_vent_installation_engineer(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Installation-Engineer")
                
                    @property
                    def mechanical_vent_system_make_model(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-System-Make-Model")
                
                    def add_mechanical_vent_system_make_model(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-System-Make-Model")
                
                    @property
                    def wet_rooms_count(self): return self.find(f"{{{self.__class__.namespace}}}Wet-Rooms-Count")
                
                    def add_wet_rooms_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Wet-Rooms-Count")
                
                    @property
                    def mechanical_vent_specific_fan_power(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Specific-Fan-Power")
                
                    def add_mechanical_vent_specific_fan_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Specific-Fan-Power")
                
                    @property
                    def mechanical_vent_heat_recovery_efficiency(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Heat-Recovery-Efficiency")
                
                    def add_mechanical_vent_heat_recovery_efficiency(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Heat-Recovery-Efficiency")
                
                    @property
                    def mechanical_vent_duct_type(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Type")
                
                    def add_mechanical_vent_duct_type(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Type")
                
                    @property
                    def mechanical_vent_duct_insulation(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Insulation")
                
                    def add_mechanical_vent_duct_insulation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Insulation")
                
                    @property
                    def mechanical_vent_duct_insulation_level(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Insulation-Level")
                
                    def add_mechanical_vent_duct_insulation_level(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Insulation-Level")
                
                    @property
                    def mechanical_vent_duct_placement(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Placement")
                
                    def add_mechanical_vent_duct_placement(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Duct-Placement")
                
                    @property
                    def mechanical_vent_measured_installation(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Measured-Installation")
                
                    def add_mechanical_vent_measured_installation(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Measured-Installation")
                
                    @property
                    def kitchen_room_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Room-Fans-Count")
                
                    def add_kitchen_room_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Room-Fans-Count")
                
                    @property
                    def kitchen_room_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Room-Fans-Specific-Power")
                
                    def add_kitchen_room_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Room-Fans-Specific-Power")
                
                    @property
                    def non_kitchen_room_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Room-Fans-Count")
                
                    def add_non_kitchen_room_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Room-Fans-Count")
                
                    @property
                    def non_kitchen_room_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Room-Fans-Specific-Power")
                
                    def add_non_kitchen_room_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Room-Fans-Specific-Power")
                
                    @property
                    def kitchen_duct_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Duct-Fans-Count")
                
                    def add_kitchen_duct_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Duct-Fans-Count")
                
                    @property
                    def kitchen_duct_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Duct-Fans-Specific-Power")
                
                    def add_kitchen_duct_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Duct-Fans-Specific-Power")
                
                    @property
                    def non_kitchen_duct_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Duct-Fans-Count")
                
                    def add_non_kitchen_duct_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Duct-Fans-Count")
                
                    @property
                    def non_kitchen_duct_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Duct-Fans-Specific-Power")
                
                    def add_non_kitchen_duct_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Duct-Fans-Specific-Power")
                
                    @property
                    def kitchen_wall_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Wall-Fans-Count")
                
                    def add_kitchen_wall_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Wall-Fans-Count")
                
                    @property
                    def kitchen_wall_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Kitchen-Wall-Fans-Specific-Power")
                
                    def add_kitchen_wall_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Kitchen-Wall-Fans-Specific-Power")
                
                    @property
                    def non_kitchen_wall_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Wall-Fans-Count")
                
                    def add_non_kitchen_wall_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Wall-Fans-Count")
                
                    @property
                    def non_kitchen_wall_fans_specific_power(self): return self.find(f"{{{self.__class__.namespace}}}Non-Kitchen-Wall-Fans-Specific-Power")
                
                    def add_non_kitchen_wall_fans_specific_power(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Non-Kitchen-Wall-Fans-Specific-Power")
                
                    @property
                    def extract_fans_count(self): return self.find(f"{{{self.__class__.namespace}}}Extract-Fans-Count")
                
                    def add_extract_fans_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Extract-Fans-Count")
                
                    @property
                    def psv_count(self): return self.find(f"{{{self.__class__.namespace}}}PSV-Count")
                
                    def add_psv_count(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}PSV-Count")
                
                    @property
                    def is_mechanical_vent_approved_installer_scheme(self): return self.find(f"{{{self.__class__.namespace}}}Is-Mechanical-Vent-Approved-Installer-Scheme")
                
                    def add_is_mechanical_vent_approved_installer_scheme(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Is-Mechanical-Vent-Approved-Installer-Scheme")
                
                    @property
                    def mechanical_vent_ducts_index_number(self): return self.find(f"{{{self.__class__.namespace}}}Mechanical-Vent-Ducts-Index-Number")
                
                    def add_mechanical_vent_ducts_index_number(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Mechanical-Vent-Ducts-Index-Number")
                
                    class Closed_Flues_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Closed-Flues-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Closed_Flues_Count"
                        documentation = """The number of Closed Flues or chimneys in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Open_Flues_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Open-Flues-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Open_Flues_Count"
                        documentation = """The number of Open Flues in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Boilers_Flues_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Boilers-Flues-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Boilers_Flues_Count"
                        documentation = """The number of Boiler Flues or chimneys in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Other_Flues_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Other-Flues-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Other_Flues_Count"
                        documentation = """The number of Other Flues or chimneys in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Open_Chimneys_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Open-Chimneys-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Open_Chimneys_Count"
                        documentation = """The number of Open Chimneys in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Blocked_Chimneys_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Blocked-Chimneys-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Blocked_Chimneys_Count"
                        documentation = """The number of Blocked Chimneys in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Fans_Vents_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Fans-Vents-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Fans_Vents_Count"
                        documentation = """For backward compatibility only, do not use."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Flueless_Gas_Fires_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Flueless-Gas-Fires-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Flueless_Gas_Fires_Count"
                        documentation = """The number of flueless gas fires in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Pressure_Test(_Base, etree.ElementBase):
                        ""
                        element_name = "Pressure-Test"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-PressureTestCode"
                        class_name = "Pressure_Test"
                        documentation = """Whether there has been a pressure test, or whether an assumed value is used for the air permeability."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'yes (new dwelling, value measured in this dwelling)', '2': 'yes (new dwelling, design value)', '3': 'no test, value assumed for calculation (new dwelling)', '4': 'no test, SAP algorithm used (existing dwelling)', '5': 'average for other dwellings of the same type (new dwelling)', '6': 'yes (existing dwelling)', '7': 'yes (measured value) - low-pressure pulse'}
                        map_values = {'yes (new dwelling, value measured in this dwelling)': '1', 'yes (new dwelling, design value)': '2', 'no test, value assumed for calculation (new dwelling)': '3', 'no test, SAP algorithm used (existing dwelling)': '4', 'average for other dwellings of the same type (new dwelling)': '5', 'yes (existing dwelling)': '6', 'yes (measured value) - low-pressure pulse': '7'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Pressure_Test_Certificate_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Pressure-Test-Certificate-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Pressure_Test_Certificate_Number"
                        documentation = """The pressure test certificate number or test engineer reference."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Air_Permeability(_Base, etree.ElementBase):
                        ""
                        element_name = "Air-Permeability"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "Air_Permeability"
                        documentation = """Air permeability; only if pressure test (yes or assumed)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Ground_Floor_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Ground-Floor-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-FloorConstructionCode"
                        class_name = "Ground_Floor_Type"
                        documentation = """The type of ground floor; nly if no pressure test."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'not suspended timber', '2': 'suspended timber, sealed', '3': 'suspended timber, unsealed'}
                        map_values = {'not suspended timber': '1', 'suspended timber, sealed': '2', 'suspended timber, unsealed': '3'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Wall_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Wall-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-WallConstructionCode"
                        class_name = "Wall_Type"
                        documentation = """The construction of the walls; only if no pressure test."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'steel or timber frame', '2': 'other'}
                        map_values = {'steel or timber frame': '1', 'other': '2'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Has_Draught_Lobby(_Base, etree.ElementBase):
                        ""
                        element_name = "Has-Draught-Lobby"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Has_Draught_Lobby"
                        documentation = """Is there a draft lobby? Only if no pressure test."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class DraughtStripping(_Base, etree.ElementBase):
                        ""
                        element_name = "DraughtStripping"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Percentage"
                        class_name = "DraughtStripping"
                        documentation = """Draughtstripping percentage; only if no pressure test."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Sheltered_Sides_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Sheltered-Sides-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Sheltered_Sides_Count"
                        documentation = """The number of sheltered sides in the Property."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Ventilation_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Ventilation-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-VentilationTypeCode"
                        class_name = "Ventilation_Type"
                        documentation = """The type of ventilation."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'natural with intermittent extract fans', '2': 'natural with passive vents', '3': 'positive input from loft', '4': 'positive input from outside', '5': 'mechanical extract, centralised (MEV c)', '6': 'mechanical extract, decentralised (MEV dc)', '7': 'balanced without heat recovery (MV)', '8': 'balanced with heat recovery (MVHR)', '9': 'natural with intermittent extract fans and/or passive vents. For backwards compatibility only, do not use.', '10': 'natural with intermittent extract fans and passive vents'}
                        map_values = {'natural with intermittent extract fans': '1', 'natural with passive vents': '2', 'positive input from loft': '3', 'positive input from outside': '4', 'mechanical extract, centralised (MEV c)': '5', 'mechanical extract, decentralised (MEV dc)': '6', 'balanced without heat recovery (MV)': '7', 'balanced with heat recovery (MVHR)': '8', 'natural with intermittent extract fans and/or passive vents. For backwards compatibility only, do not use.': '9', 'natural with intermittent extract fans and passive vents': '10'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Ventilation_Data_Source(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Ventilation-Data-Source"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DataSourceCode"
                        class_name = "Mechanical_Ventilation_Data_Source"
                        documentation = """Source of mechanical ventilation data; only if mechanical ventilation."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'from database', '2': 'from manufacturer declaration', '3': 'from SAP table'}
                        map_values = {'from database': '1', 'from manufacturer declaration': '2', 'from SAP table': '3'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_System_Index_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-System-Index-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:nonNegativeInteger"
                        class_name = "Mechanical_Vent_System_Index_Number"
                        documentation = """Mechanical vent system index number; if mechanical vent data from database (MEV c, MEV dc, MV, MVHR)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_Commissioning_Certificate_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Commissioning-Certificate-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Mechanical_Vent_Commissioning_Certificate_Number"
                        documentation = """Mechanical ventilation Commissioning certificate number ."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_Installation_Engineer(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Installation-Engineer"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Mechanical_Vent_Installation_Engineer"
                        documentation = """Mechanical ventilation installation engineer registration reference."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_System_Make_Model(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-System-Make-Model"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:string"
                        class_name = "Mechanical_Vent_System_Make_Model"
                        documentation = """Mechanical ventilation system make and model."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.text
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Wet_Rooms_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Wet-Rooms-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "NonZeroCount"
                        class_name = "Wet_Rooms_Count"
                        documentation = """Number of wet rooms, including the kitchen; if mech vent data from manufacturer declaration or database (MEV c, MV, MVHR)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_Specific_Fan_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Specific-Fan-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Mechanical_Vent_Specific_Fan_Power"
                        documentation = """Mechanical vent specific fan power in watts per (litres per second); if mechanical vent data (PIV from outside, MEV c or dc, MV, MVHR)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_Heat_Recovery_Efficiency(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Heat-Recovery-Efficiency"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Percentage"
                        class_name = "Mechanical_Vent_Heat_Recovery_Efficiency"
                        documentation = """Mechanical vent heat recovery efficiency percentage; if mechanical vent (MVHR)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Mechanical_Vent_Duct_Type(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Duct-Type"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DuctTypeCode"
                        class_name = "Mechanical_Vent_Duct_Type"
                        documentation = """Mechanical vent duct type; if MEV c, MV or MVHR."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'flexible', '2': 'rigid', '3': 'semi-rigid'}
                        map_values = {'flexible': '1', 'rigid': '2', 'semi-rigid': '3'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_Duct_Insulation(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Duct-Insulation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DuctInsulationCode"
                        class_name = "Mechanical_Vent_Duct_Insulation"
                        documentation = """Mechanical vent duct insulation; if MVHR."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'not insulated', '2': 'insulated'}
                        map_values = {'not insulated': '1', 'insulated': '2'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_Duct_Insulation_Level(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Duct-Insulation-Level"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DuctInsulationLevel"
                        class_name = "Mechanical_Vent_Duct_Insulation_Level"
                        documentation = """Mechanical vent duct insulation; if MVHR."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'level 1', '2': 'level 2'}
                        map_values = {'level 1': '1', 'level 2': '2'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_Duct_Placement(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Duct-Placement"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DuctPlacement"
                        class_name = "Mechanical_Vent_Duct_Placement"
                        documentation = """Mechanical ventilation duct insulation; if MVHR."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'inside heated envelope', '2': 'outside heated envelope'}
                        map_values = {'inside heated envelope': '1', 'outside heated envelope': '2'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_Measured_Installation(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Measured-Installation"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Mechanical_Vent_Measured_Installation"
                        documentation = """Mechanical ventilation SPF measured in situ; if MVHR or balanced."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Kitchen_Room_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Room-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Kitchen_Room_Fans_Count"
                        documentation = """MEV dc, number of fans in room, kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Kitchen_Room_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Room-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Kitchen_Room_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans in room, kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Room_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Room-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Non_Kitchen_Room_Fans_Count"
                        documentation = """MEV dc, number of fans in room, rooms other than kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Room_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Room-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Non_Kitchen_Room_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans in room, rooms other than kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Kitchen_Duct_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Duct-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Kitchen_Duct_Fans_Count"
                        documentation = """MEV dc, number of fans via duct, kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Kitchen_Duct_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Duct-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Kitchen_Duct_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans via duct, kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Duct_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Duct-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Non_Kitchen_Duct_Fans_Count"
                        documentation = """MEV dc, number of fans via duct, rooms other than kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Duct_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Duct-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Non_Kitchen_Duct_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans via duct, rooms other than kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Kitchen_Wall_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Wall-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Kitchen_Wall_Fans_Count"
                        documentation = """MEV dc, number of fans through wall, kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Kitchen_Wall_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Kitchen-Wall-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Kitchen_Wall_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans through wall, kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Wall_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Wall-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Non_Kitchen_Wall_Fans_Count"
                        documentation = """MEV dc, number of fans through wall, rooms other than kitchen; if mechanical vent data from database or manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Non_Kitchen_Wall_Fans_Specific_Power(_Base, etree.ElementBase):
                        ""
                        element_name = "Non-Kitchen-Wall-Fans-Specific-Power"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Measurement"
                        class_name = "Non_Kitchen_Wall_Fans_Specific_Power"
                        documentation = """MEV dc, specific fan power of fans through wall, rooms other than kitchen, in watts per (litres per second); if mechanical vent data from manufacturer declaration (MEV dc)."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Extract_Fans_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "Extract-Fans-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "Extract_Fans_Count"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class PSV_Count(_Base, etree.ElementBase):
                        ""
                        element_name = "PSV-Count"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Count"
                        class_name = "PSV_Count"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Is_Mechanical_Vent_Approved_Installer_Scheme(_Base, etree.ElementBase):
                        ""
                        element_name = "Is-Mechanical-Vent-Approved-Installer-Scheme"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:boolean"
                        class_name = "Is_Mechanical_Vent_Approved_Installer_Scheme"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = bool
                        map_codes = {'true': True, '1': True, 'false': False, '0': False}
                        map_values = {True: '1', False: '0'}
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Mechanical_Vent_Ducts_Index_Number(_Base, etree.ElementBase):
                        ""
                        element_name = "Mechanical-Vent-Ducts-Index-Number"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:positiveInteger"
                        class_name = "Mechanical_Vent_Ducts_Index_Number"
                        documentation = """Mechanical vent ducts index number; if applicable."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Ventilation"
                        parent_method_name ="sap_ventilation"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_ventilation(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class SAP_Lighting(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Lighting"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Lighting"
                    class_name = "SAP_Lighting"
                    documentation = None
                    type_documentation = """Details of the main lighting for the property"""
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Fixed_Lights"]
                    subclass_method_names = ["fixed_lights"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def fixed_lights(self): return self.find(f"{{{self.__class__.namespace}}}Fixed-Lights")
                
                    def add_fixed_lights(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Fixed-Lights")
                
                    class Fixed_Lights(_Base, etree.ElementBase):
                        ""
                        element_name = "Fixed-Lights"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "Fixed-Lights"
                        class_name = "Fixed_Lights"
                        documentation = """The record of a lighting type within the building."""
                        type_documentation = """Fixed lighting present in the property."""
                        has_text_node = False
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Lighting"
                        parent_method_name ="sap_lighting"
                        subclass_class_names = ["Fixed_Light"]
                        subclass_method_names = ["fixed_light"]
                    
                        @property
                        def sap_lighting(self): return self.getparent()
                    
                        @property
                        def fixed_light(self): return self.findall(f"{{{self.__class__.namespace}}}Fixed-Light")
                    
                        def add_fixed_light(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Fixed-Light")
                    
                        class Fixed_Light(_Base, etree.ElementBase):
                            ""
                            element_name = "Fixed-Light"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Fixed-Light"
                            class_name = "Fixed_Light"
                            documentation = None
                            type_documentation = """Various details for each fixed lighting type in the property."""
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = "unbounded"
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "Fixed_Lights"
                            parent_method_name ="fixed_lights"
                            subclass_class_names = ["Lighting_Efficacy", "Lighting_Power", "Lighting_Outlets"]
                            subclass_method_names = ["lighting_efficacy", "lighting_power", "lighting_outlets"]
                        
                            @property
                            def fixed_lights(self): return self.getparent()
                        
                            @property
                            def lighting_efficacy(self): return self.find(f"{{{self.__class__.namespace}}}Lighting-Efficacy")
                        
                            def add_lighting_efficacy(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting-Efficacy")
                        
                            @property
                            def lighting_power(self): return self.find(f"{{{self.__class__.namespace}}}Lighting-Power")
                        
                            def add_lighting_power(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting-Power")
                        
                            @property
                            def lighting_outlets(self): return self.find(f"{{{self.__class__.namespace}}}Lighting-Outlets")
                        
                            def add_lighting_outlets(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Lighting-Outlets")
                        
                            class Lighting_Efficacy(_Base, etree.ElementBase):
                                ""
                                element_name = "Lighting-Efficacy"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Lighting_Efficacy"
                                documentation = """The efficacy of the lighting type in lumens/Watt."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Fixed_Light"
                                parent_method_name ="fixed_light"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def fixed_light(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Lighting_Power(_Base, etree.ElementBase):
                                ""
                                element_name = "Lighting-Power"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "xs:decimal"
                                class_name = "Lighting_Power"
                                documentation = """The power of the selected lighting type in Watts."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Fixed_Light"
                                parent_method_name ="fixed_light"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def fixed_light(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Lighting_Outlets(_Base, etree.ElementBase):
                                ""
                                element_name = "Lighting-Outlets"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Count"
                                class_name = "Lighting_Outlets"
                                documentation = """The number of light fitting outlets of that type."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = int
                                map_codes = None
                                map_values = None
                                parent_class_name = "Fixed_Light"
                                parent_method_name ="fixed_light"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def fixed_light(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                class SAP_Deselected_Improvements(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Deselected-Improvements"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Deselected-Improvements"
                    class_name = "SAP_Deselected_Improvements"
                    documentation = None
                    type_documentation = """There are 22 possible improvement measures, designated from A to V. This must record measures deselected by DEA (A to V is the full set, only E, N, U and V are considered at the moment for new build)."""
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Deselected_Improvement_Measure"]
                    subclass_method_names = ["deselected_improvement_measure"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def deselected_improvement_measure(self): return self.findall(f"{{{self.__class__.namespace}}}Deselected-Improvement-Measure")
                
                    def add_deselected_improvement_measure(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Deselected-Improvement-Measure")
                
                    class Deselected_Improvement_Measure(_Base, etree.ElementBase):
                        ""
                        element_name = "Deselected-Improvement-Measure"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-ImprovementMeasureCode"
                        class_name = "Deselected_Improvement_Measure"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = "unbounded"
                        python_type_convertor = str
                        map_codes = {'A': 'Loft insulation', 'A2': 'Flat roof insulation', 'A3': 'Room-in-roof insulation', 'B': 'Cavity wall insulation', 'C': 'Hot water cylinder insulation', 'D': 'Draughtproofing', 'E': 'Low energy lights', 'F': 'Cylinder thermostat', 'G': 'Heating controls for wet central heating system', 'H': 'Heating controls for warm air system', 'I': 'Upgrade boiler, same fuel', 'J': 'Biomass boiler', 'J2': 'Biomass boiler as alternative improvement', 'K': 'Biomass room heater with boiler', 'L': 'New or replacement fan-assisted storage heaters', 'L2': 'New or replacement high heat retention storage heaters', 'M': 'Replacement warm-air unit', 'N': 'Solar water heating', 'O': 'Replacement double glazed windows', 'O3': 'Replacement double glazing units', 'P': 'Secondary glazing', 'Q': 'Solid wall insulation', 'Q2': 'External insulation with cavity wall insulation', 'R': 'Condensing oil boiler', 'S': 'Change heating to Band A gas condensing boiler (no fuel switch)', 'T': 'Change heating to Band A gas condensing boiler (fuel switch)', 'T2': 'Flue gas heat recovery', 'U': 'Photovoltaics', 'V': 'Wind turbine (roof mounted)', 'V2': 'Wind turbine (on mast)', 'W': 'Floor insulation', 'X': 'Insulated doors', 'Y': 'Instantaneous waste water heat recovery', 'Y2': 'Storage waste water heat recovery', 'Z1': 'Air or ground source heat pump', 'Z2': 'Air or ground source heat pump with underfloor heating', 'Z3': 'Micro-CHP'}
                        map_values = {'Loft insulation': 'A', 'Flat roof insulation': 'A2', 'Room-in-roof insulation': 'A3', 'Cavity wall insulation': 'B', 'Hot water cylinder insulation': 'C', 'Draughtproofing': 'D', 'Low energy lights': 'E', 'Cylinder thermostat': 'F', 'Heating controls for wet central heating system': 'G', 'Heating controls for warm air system': 'H', 'Upgrade boiler, same fuel': 'I', 'Biomass boiler': 'J', 'Biomass boiler as alternative improvement': 'J2', 'Biomass room heater with boiler': 'K', 'New or replacement fan-assisted storage heaters': 'L', 'New or replacement high heat retention storage heaters': 'L2', 'Replacement warm-air unit': 'M', 'Solar water heating': 'N', 'Replacement double glazed windows': 'O', 'Replacement double glazing units': 'O3', 'Secondary glazing': 'P', 'Solid wall insulation': 'Q', 'External insulation with cavity wall insulation': 'Q2', 'Condensing oil boiler': 'R', 'Change heating to Band A gas condensing boiler (no fuel switch)': 'S', 'Change heating to Band A gas condensing boiler (fuel switch)': 'T', 'Flue gas heat recovery': 'T2', 'Photovoltaics': 'U', 'Wind turbine (roof mounted)': 'V', 'Wind turbine (on mast)': 'V2', 'Floor insulation': 'W', 'Insulated doors': 'X', 'Instantaneous waste water heat recovery': 'Y', 'Storage waste water heat recovery': 'Y2', 'Air or ground source heat pump': 'Z1', 'Air or ground source heat pump with underfloor heating': 'Z2', 'Micro-CHP': 'Z3'}
                        parent_class_name = "SAP_Deselected_Improvements"
                        parent_method_name ="sap_deselected_improvements"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_deselected_improvements(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                class SAP_Flat_Details(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Flat-Details"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Flat-Details"
                    class_name = "SAP_Flat_Details"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Level", "Storeys"]
                    subclass_method_names = ["level", "storeys"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def level(self): return self.find(f"{{{self.__class__.namespace}}}Level")
                
                    def add_level(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Level")
                
                    @property
                    def storeys(self): return self.find(f"{{{self.__class__.namespace}}}Storeys")
                
                    def add_storeys(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Storeys")
                
                    class Level(_Base, etree.ElementBase):
                        ""
                        element_name = "Level"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-FlatLevelCode"
                        class_name = "Level"
                        documentation = """Indication of where a flat is located in a building."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'0': 'basement', '1': 'ground floor', '2': 'mid floor', '3': 'top floor'}
                        map_values = {'basement': '0', 'ground floor': '1', 'mid floor': '2', 'top floor': '3'}
                        parent_class_name = "SAP_Flat_Details"
                        parent_method_name ="sap_flat_details"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_flat_details(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Storeys(_Base, etree.ElementBase):
                        ""
                        element_name = "Storeys"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "NonZeroCount"
                        class_name = "Storeys"
                        documentation = """Count of number of storeys present in the block of flats."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 1
                        max_occurs = 1
                        python_type_convertor = int
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Flat_Details"
                        parent_method_name ="sap_flat_details"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_flat_details(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                class SAP_Special_Features(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Special-Features"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Special-Features"
                    class_name = "SAP_Special_Features"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["SAP_Special_Feature"]
                    subclass_method_names = ["sap_special_feature"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def sap_special_feature(self): return self.findall(f"{{{self.__class__.namespace}}}SAP-Special-Feature")
                
                    def add_sap_special_feature(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}SAP-Special-Feature")
                
                    class SAP_Special_Feature(_Base, etree.ElementBase):
                        ""
                        element_name = "SAP-Special-Feature"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-Special-Feature"
                        class_name = "SAP_Special_Feature"
                        documentation = None
                        type_documentation = None
                        has_text_node = False
                        min_occurs = 1
                        max_occurs = "unbounded"
                        python_type_convertor = None
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Special_Features"
                        parent_method_name ="sap_special_features"
                        subclass_class_names = ["Description", "Energy_Feature", "Emissions_Feature"]
                        subclass_method_names = ["description", "energy_feature", "emissions_feature"]
                    
                        @property
                        def sap_special_features(self): return self.getparent()
                    
                        @property
                        def description(self): return self.find(f"{{{self.__class__.namespace}}}Description")
                    
                        def add_description(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Description")
                    
                        @property
                        def energy_feature(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Feature")
                    
                        def add_energy_feature(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Feature")
                    
                        @property
                        def emissions_feature(self): return self.find(f"{{{self.__class__.namespace}}}Emissions-Feature")
                    
                        def add_emissions_feature(self):
                            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Emissions-Feature")
                    
                        class Description(_Base, etree.ElementBase):
                            ""
                            element_name = "Description"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "xs:string"
                            class_name = "Description"
                            documentation = None
                            type_documentation = None
                            has_text_node = True
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = str
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Special_Feature"
                            parent_method_name ="sap_special_feature"
                            subclass_class_names = []
                            subclass_method_names = []
                        
                            @property
                            def sap_special_feature(self): return self.getparent()
                        
                            @property
                            def value(self): return self.text
                        
                            @value.setter
                            def value(self, value): self.text = str(value)
                        
                            @property
                            def code(self): return self.text
                        
                            @code.setter
                            def code(self, code): self.text = str(code)
                        
                        class Energy_Feature(_Base, etree.ElementBase):
                            ""
                            element_name = "Energy-Feature"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Energy-Feature"
                            class_name = "Energy_Feature"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Special_Feature"
                            parent_method_name ="sap_special_feature"
                            subclass_class_names = ["Energy_Saved_Or_Generated", "Saved_Or_Generated_Fuel", "Energy_Used", "Energy_Used_Fuel", "Air_Change_Rates"]
                            subclass_method_names = ["energy_saved_or_generated", "saved_or_generated_fuel", "energy_used", "energy_used_fuel", "air_change_rates"]
                        
                            @property
                            def sap_special_feature(self): return self.getparent()
                        
                            @property
                            def energy_saved_or_generated(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Saved-Or-Generated")
                        
                            def add_energy_saved_or_generated(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Saved-Or-Generated")
                        
                            @property
                            def saved_or_generated_fuel(self): return self.find(f"{{{self.__class__.namespace}}}Saved-Or-Generated-Fuel")
                        
                            def add_saved_or_generated_fuel(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Saved-Or-Generated-Fuel")
                        
                            @property
                            def energy_used(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Used")
                        
                            def add_energy_used(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Used")
                        
                            @property
                            def energy_used_fuel(self): return self.find(f"{{{self.__class__.namespace}}}Energy-Used-Fuel")
                        
                            def add_energy_used_fuel(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Energy-Used-Fuel")
                        
                            @property
                            def air_change_rates(self): return self.find(f"{{{self.__class__.namespace}}}Air-Change-Rates")
                        
                            def add_air_change_rates(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Change-Rates")
                        
                            class Energy_Saved_Or_Generated(_Base, etree.ElementBase):
                                ""
                                element_name = "Energy-Saved-Or-Generated"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Energy_Saved_Or_Generated"
                                documentation = """Energy saved or generated in kWh/year."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Energy_Feature"
                                parent_method_name ="energy_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def energy_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Saved_Or_Generated_Fuel(_Base, etree.ElementBase):
                                ""
                                element_name = "Saved-Or-Generated-Fuel"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "HeatingFuelTypeCode"
                                class_name = "Saved_Or_Generated_Fuel"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                                map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                                parent_class_name = "Energy_Feature"
                                parent_method_name ="energy_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def energy_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Energy_Used(_Base, etree.ElementBase):
                                ""
                                element_name = "Energy-Used"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Energy_Used"
                                documentation = """Energy used in kWh/year."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Energy_Feature"
                                parent_method_name ="energy_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def energy_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Energy_Used_Fuel(_Base, etree.ElementBase):
                                ""
                                element_name = "Energy-Used-Fuel"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "HeatingFuelTypeCode"
                                class_name = "Energy_Used_Fuel"
                                documentation = None
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = str
                                map_codes = {'1': 'Gas: mains gas', '2': 'Gas: bulk LPG', '3': 'Gas: bottled LPG', '4': 'Oil: heating oil', '7': 'Gas: biogas', '8': 'LNG', '9': 'LPG subject to Special Condition 18', '10': 'Solid fuel: dual fuel appliance (mineral and wood)', '11': 'Solid fuel: house coal', '12': 'Solid fuel: manufactured smokeless fuel', '15': 'Solid fuel: anthracite', '20': 'Solid fuel: wood logs', '21': 'Solid fuel: wood chips', '22': 'Solid fuel: wood pellets (in bags, for secondary heating)', '23': 'Solid fuel: wood pellets (bulk supply in bags, for main heating)', '36': 'Electricity: electricity sold to grid', '37': 'Electricity: electricity displaced from grid', '39': 'Electricity: electricity, unspecified tariff', '41': 'Community heating schemes: heat from electric heat pump', '42': 'Community heating schemes: heat from boilers - waste combustion', '43': 'Community heating schemes: heat from boilers - biomass', '44': 'Community heating schemes: heat from boilers - biogas', '45': 'Community heating schemes: waste heat from power stations', '46': 'Community heating schemes: geothermal heat source', '47': 'Community heating schemes: high grade heat recovered from process', '48': 'Community heating schemes: heat from CHP', '49': 'Community heating schemes: low grade heat recovered from process', '50': 'Community heating schemes: electricity for pumping in distribution network', '51': 'Community heating schemes: heat from mains gas', '52': 'Community heating schemes: heat from LPG', '53': 'Community heating schemes: heat from oil', '54': 'Community heating schemes: heat from coal', '55': 'Community heating schemes: heat from B30D', '56': 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel', '57': 'Community heating schemes: heat from boilers using biodiesel from any biomass source', '58': 'Community heating schemes: biodiesel from vegetable oil only', '71': 'biodiesel from any biomass source', '72': 'biodiesel from used cooking oil only', '73': 'biodiesel from vegetable oil only', '74': 'appliances able to use mineral oil or liquid biofuel', '75': 'B30K', '76': 'bioethanol from any biomass source', '99': 'Fuel data from pcdb'}
                                map_values = {'Gas: mains gas': '1', 'Gas: bulk LPG': '2', 'Gas: bottled LPG': '3', 'Oil: heating oil': '4', 'Gas: biogas': '7', 'LNG': '8', 'LPG subject to Special Condition 18': '9', 'Solid fuel: dual fuel appliance (mineral and wood)': '10', 'Solid fuel: house coal': '11', 'Solid fuel: manufactured smokeless fuel': '12', 'Solid fuel: anthracite': '15', 'Solid fuel: wood logs': '20', 'Solid fuel: wood chips': '21', 'Solid fuel: wood pellets (in bags, for secondary heating)': '22', 'Solid fuel: wood pellets (bulk supply in bags, for main heating)': '23', 'Electricity: electricity sold to grid': '36', 'Electricity: electricity displaced from grid': '37', 'Electricity: electricity, unspecified tariff': '39', 'Community heating schemes: heat from electric heat pump': '41', 'Community heating schemes: heat from boilers - waste combustion': '42', 'Community heating schemes: heat from boilers - biomass': '43', 'Community heating schemes: heat from boilers - biogas': '44', 'Community heating schemes: waste heat from power stations': '45', 'Community heating schemes: geothermal heat source': '46', 'Community heating schemes: high grade heat recovered from process': '47', 'Community heating schemes: heat from CHP': '48', 'Community heating schemes: low grade heat recovered from process': '49', 'Community heating schemes: electricity for pumping in distribution network': '50', 'Community heating schemes: heat from mains gas': '51', 'Community heating schemes: heat from LPG': '52', 'Community heating schemes: heat from oil': '53', 'Community heating schemes: heat from coal': '54', 'Community heating schemes: heat from B30D': '55', 'Community heating schemes: heat from boilers that can use mineral oil or biodiesel': '56', 'Community heating schemes: heat from boilers using biodiesel from any biomass source': '57', 'Community heating schemes: biodiesel from vegetable oil only': '58', 'biodiesel from any biomass source': '71', 'biodiesel from used cooking oil only': '72', 'biodiesel from vegetable oil only': '73', 'appliances able to use mineral oil or liquid biofuel': '74', 'B30K': '75', 'bioethanol from any biomass source': '76', 'Fuel data from pcdb': '99'}
                                parent_class_name = "Energy_Feature"
                                parent_method_name ="energy_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def energy_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.map_codes[self.text]
                            
                                @value.setter
                                def value(self, value):
                                    if value in self.__class__.map_values:
                                        self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                    else:
                                        raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code):
                                    if code in self.__class__.map_codes:
                                        self.text = str(code)
                                    else:
                                        raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                            
                            class Air_Change_Rates(_Base, etree.ElementBase):
                                ""
                                element_name = "Air-Change-Rates"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Air-Change-Rates"
                                class_name = "Air_Change_Rates"
                                documentation = """For Appendix Q procedure that provides air change rates. Only one Special Feature can have data on air change rates."""
                                type_documentation = None
                                has_text_node = False
                                min_occurs = 0
                                max_occurs = 1
                                python_type_convertor = None
                                map_codes = None
                                map_values = None
                                parent_class_name = "Energy_Feature"
                                parent_method_name ="energy_feature"
                                subclass_class_names = ["Air_Change_Rate"]
                                subclass_method_names = ["air_change_rate"]
                            
                                @property
                                def energy_feature(self): return self.getparent()
                            
                                @property
                                def air_change_rate(self): return self.findall(f"{{{self.__class__.namespace}}}Air-Change-Rate")
                            
                                def add_air_change_rate(self):
                                    return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Change-Rate")
                            
                                class Air_Change_Rate(_Base, etree.ElementBase):
                                    ""
                                    element_name = "Air-Change-Rate"
                                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                    element_type = "Air-Change-Rate"
                                    class_name = "Air_Change_Rate"
                                    documentation = None
                                    type_documentation = None
                                    has_text_node = False
                                    min_occurs = 12
                                    max_occurs = 12
                                    python_type_convertor = None
                                    map_codes = None
                                    map_values = None
                                    parent_class_name = "Air_Change_Rates"
                                    parent_method_name ="air_change_rates"
                                    subclass_class_names = ["Air_Change_Rate_Month", "Air_Change_Rate_Value"]
                                    subclass_method_names = ["air_change_rate_month", "air_change_rate_value"]
                                
                                    @property
                                    def air_change_rates(self): return self.getparent()
                                
                                    @property
                                    def air_change_rate_month(self): return self.find(f"{{{self.__class__.namespace}}}Air-Change-Rate-Month")
                                
                                    def add_air_change_rate_month(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Change-Rate-Month")
                                
                                    @property
                                    def air_change_rate_value(self): return self.find(f"{{{self.__class__.namespace}}}Air-Change-Rate-Value")
                                
                                    def add_air_change_rate_value(self):
                                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Air-Change-Rate-Value")
                                
                                    class Air_Change_Rate_Month(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Air-Change-Rate-Month"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "AirChangeRateMonth"
                                        class_name = "Air_Change_Rate_Month"
                                        documentation = None
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = str
                                        map_codes = {'Jan': '', 'Feb': '', 'Mar': '', 'Apr': '', 'May': '', 'Jun': '', 'Jul': '', 'Aug': '', 'Sep': '', 'Oct': '', 'Nov': '', 'Dec': ''}
                                        map_values = {'': 'Dec'}
                                        parent_class_name = "Air_Change_Rate"
                                        parent_method_name ="air_change_rate"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def air_change_rate(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.map_codes[self.text]
                                    
                                        @value.setter
                                        def value(self, value):
                                            if value in self.__class__.map_values:
                                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                                            else:
                                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code):
                                            if code in self.__class__.map_codes:
                                                self.text = str(code)
                                            else:
                                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                                    
                                    class Air_Change_Rate_Value(_Base, etree.ElementBase):
                                        ""
                                        element_name = "Air-Change-Rate-Value"
                                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                        element_type = "xs:decimal"
                                        class_name = "Air_Change_Rate_Value"
                                        documentation = """Air change rate in month."""
                                        type_documentation = None
                                        has_text_node = True
                                        min_occurs = 1
                                        max_occurs = 1
                                        python_type_convertor = float
                                        map_codes = None
                                        map_values = None
                                        parent_class_name = "Air_Change_Rate"
                                        parent_method_name ="air_change_rate"
                                        subclass_class_names = []
                                        subclass_method_names = []
                                    
                                        @property
                                        def air_change_rate(self): return self.getparent()
                                    
                                        @property
                                        def value(self): return self.__class__.python_type_convertor(self.text)
                                    
                                        @value.setter
                                        def value(self, value): self.text = str(value)
                                    
                                        @property
                                        def code(self): return self.text
                                    
                                        @code.setter
                                        def code(self, code): self.text = str(code)
                                    
                        class Emissions_Feature(_Base, etree.ElementBase):
                            ""
                            element_name = "Emissions-Feature"
                            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                            element_type = "Emission-Feature"
                            class_name = "Emissions_Feature"
                            documentation = None
                            type_documentation = None
                            has_text_node = False
                            min_occurs = 1
                            max_occurs = 1
                            python_type_convertor = None
                            map_codes = None
                            map_values = None
                            parent_class_name = "SAP_Special_Feature"
                            parent_method_name ="sap_special_feature"
                            subclass_class_names = ["Emissions_Saved", "Emissions_Created"]
                            subclass_method_names = ["emissions_saved", "emissions_created"]
                        
                            @property
                            def sap_special_feature(self): return self.getparent()
                        
                            @property
                            def emissions_saved(self): return self.find(f"{{{self.__class__.namespace}}}Emissions-Saved")
                        
                            def add_emissions_saved(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Emissions-Saved")
                        
                            @property
                            def emissions_created(self): return self.find(f"{{{self.__class__.namespace}}}Emissions-Created")
                        
                            def add_emissions_created(self):
                                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Emissions-Created")
                        
                            class Emissions_Saved(_Base, etree.ElementBase):
                                ""
                                element_name = "Emissions-Saved"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Emissions_Saved"
                                documentation = """Emissions saved in kg/year."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Emissions_Feature"
                                parent_method_name ="emissions_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def emissions_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                            class Emissions_Created(_Base, etree.ElementBase):
                                ""
                                element_name = "Emissions-Created"
                                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                                element_type = "Measurement"
                                class_name = "Emissions_Created"
                                documentation = """Additional emissions in kg/year."""
                                type_documentation = None
                                has_text_node = True
                                min_occurs = 1
                                max_occurs = 1
                                python_type_convertor = float
                                map_codes = None
                                map_values = None
                                parent_class_name = "Emissions_Feature"
                                parent_method_name ="emissions_feature"
                                subclass_class_names = []
                                subclass_method_names = []
                            
                                @property
                                def emissions_feature(self): return self.getparent()
                            
                                @property
                                def value(self): return self.__class__.python_type_convertor(self.text)
                            
                                @value.setter
                                def value(self, value): self.text = str(value)
                            
                                @property
                                def code(self): return self.text
                            
                                @code.setter
                                def code(self, code): self.text = str(code)
                            
                class Design_Water_Use(_Base, etree.ElementBase):
                    ""
                    element_name = "Design-Water-Use"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "DesignWaterUseCode"
                    class_name = "Design_Water_Use"
                    documentation = """Design limit for total water use."""
                    type_documentation = None
                    has_text_node = True
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = str
                    map_codes = {'1': '<= 125 litres per person per day'}
                    map_values = {'<= 125 litres per person per day': '1'}
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = []
                    subclass_method_names = []
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def value(self): return self.__class__.map_codes[self.text]
                
                    @value.setter
                    def value(self, value):
                        if value in self.__class__.map_values:
                            self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                        else:
                            raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                
                    @property
                    def code(self): return self.text
                
                    @code.setter
                    def code(self, code):
                        if code in self.__class__.map_codes:
                            self.text = str(code)
                        else:
                            raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                
                class SAP_Cooling(_Base, etree.ElementBase):
                    ""
                    element_name = "SAP-Cooling"
                    namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                    element_type = "SAP-Cooling"
                    class_name = "SAP_Cooling"
                    documentation = None
                    type_documentation = None
                    has_text_node = False
                    min_occurs = 0
                    max_occurs = 1
                    python_type_convertor = None
                    map_codes = None
                    map_values = None
                    parent_class_name = "SAP_Property_Details"
                    parent_method_name ="sap_property_details"
                    subclass_class_names = ["Cooled_Area", "Cooling_System_Data_Source", "Cooling_System_Class", "System_Energy_Efficiency_Ratio"]
                    subclass_method_names = ["cooled_area", "cooling_system_data_source", "cooling_system_class", "system_energy_efficiency_ratio"]
                
                    @property
                    def sap_property_details(self): return self.getparent()
                
                    @property
                    def cooled_area(self): return self.find(f"{{{self.__class__.namespace}}}Cooled-Area")
                
                    def add_cooled_area(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Cooled-Area")
                
                    @property
                    def cooling_system_data_source(self): return self.find(f"{{{self.__class__.namespace}}}Cooling-System-Data-Source")
                
                    def add_cooling_system_data_source(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Cooling-System-Data-Source")
                
                    @property
                    def cooling_system_class(self): return self.find(f"{{{self.__class__.namespace}}}Cooling-System-Class")
                
                    def add_cooling_system_class(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}Cooling-System-Class")
                
                    @property
                    def system_energy_efficiency_ratio(self): return self.find(f"{{{self.__class__.namespace}}}System-Energy-Efficiency-Ratio")
                
                    def add_system_energy_efficiency_ratio(self):
                        return etree.SubElement(self,f"{{{self.__class__.namespace}}}System-Energy-Efficiency-Ratio")
                
                    class Cooled_Area(_Base, etree.ElementBase):
                        ""
                        element_name = "Cooled-Area"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "Cooled_Area"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Cooling"
                        parent_method_name ="sap_cooling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_cooling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
                    class Cooling_System_Data_Source(_Base, etree.ElementBase):
                        ""
                        element_name = "Cooling-System-Data-Source"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-DataSourceCode"
                        class_name = "Cooling_System_Data_Source"
                        documentation = None
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'1': 'from database', '2': 'from manufacturer declaration', '3': 'from SAP table'}
                        map_values = {'from database': '1', 'from manufacturer declaration': '2', 'from SAP table': '3'}
                        parent_class_name = "SAP_Cooling"
                        parent_method_name ="sap_cooling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_cooling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class Cooling_System_Class(_Base, etree.ElementBase):
                        ""
                        element_name = "Cooling-System-Class"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "SAP-CoolingSystemClassCode"
                        class_name = "Cooling_System_Class"
                        documentation = """Data set includes either class or SEER, not both."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = str
                        map_codes = {'A+++': '', 'A++': '', 'A+': '', 'A': '', 'B': '', 'C': '', 'D': '', 'E': '', 'F': '', 'G': '', 'ND': '', 'Unknown': ''}
                        map_values = {'': 'Unknown'}
                        parent_class_name = "SAP_Cooling"
                        parent_method_name ="sap_cooling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_cooling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.map_codes[self.text]
                    
                        @value.setter
                        def value(self, value):
                            if value in self.__class__.map_values:
                                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
                            else:
                                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code):
                            if code in self.__class__.map_codes:
                                self.text = str(code)
                            else:
                                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
                    
                    class System_Energy_Efficiency_Ratio(_Base, etree.ElementBase):
                        ""
                        element_name = "System-Energy-Efficiency-Ratio"
                        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                        element_type = "xs:decimal"
                        class_name = "System_Energy_Efficiency_Ratio"
                        documentation = """SEER."""
                        type_documentation = None
                        has_text_node = True
                        min_occurs = 0
                        max_occurs = 1
                        python_type_convertor = float
                        map_codes = None
                        map_values = None
                        parent_class_name = "SAP_Cooling"
                        parent_method_name ="sap_cooling"
                        subclass_class_names = []
                        subclass_method_names = []
                    
                        @property
                        def sap_cooling(self): return self.getparent()
                    
                        @property
                        def value(self): return self.__class__.python_type_convertor(self.text)
                    
                        @value.setter
                        def value(self, value): self.text = str(value)
                    
                        @property
                        def code(self): return self.text
                    
                        @code.setter
                        def code(self, code): self.text = str(code)
                    
        class PDF(_Base, etree.ElementBase):
            ""
            element_name = "PDF"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:base64Binary"
            class_name = "PDF"
            documentation = """DEPRECATED - DO NOT USE This element is allowed for backwards-compatibility but any data sent here will not be read, processed or stored by the register."""
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = base64.b64encode
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.__class__.python_type_convertor(self.text)
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Insurance_Details(_Base, etree.ElementBase):
            ""
            element_name = "Insurance-Details"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "Insurance-Details"
            class_name = "Insurance_Details"
            documentation = None
            type_documentation = """Details of the Professional Indemnity Insurance policy used to provide cover against a compensation claim against any particular Home Condition Report. A particular Home Condition Report may be covered by an Professional Indemnity Insurance policy in one of three different ways: * The Home Inspector has personal Professional Indemnity Insurance and the Home Condition Report is covered by this. * The Home Condition Report is covered by an umbrella Professional Indemnity Insurance policy held by the Home Condition Report Supplier that assigned the inspection to the Home Inspector. * An individual insurance policy is taken out to cover the individual report such as the case where the property is unusual and falls outside the Home Inspectors normal Professional Indemnity Insurance policy. A Home Inspector may use any or all of these methods to providing Professional Indemnity Insurance for a Home Condition Report on a case-by-case basis."""
            has_text_node = False
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = None
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = ["Insurer", "Policy_No", "Effective_Date", "Expiry_Date", "PI_Limit"]
            subclass_method_names = ["insurer", "policy_no", "effective_date", "expiry_date", "pi_limit"]
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def insurer(self): return self.find(f"{{{self.__class__.namespace}}}Insurer")
        
            def add_insurer(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Insurer")
        
            @property
            def policy_no(self): return self.find(f"{{{self.__class__.namespace}}}Policy-No")
        
            def add_policy_no(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Policy-No")
        
            @property
            def effective_date(self): return self.find(f"{{{self.__class__.namespace}}}Effective-Date")
        
            def add_effective_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Effective-Date")
        
            @property
            def expiry_date(self): return self.find(f"{{{self.__class__.namespace}}}Expiry-Date")
        
            def add_expiry_date(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}Expiry-Date")
        
            @property
            def pi_limit(self): return self.find(f"{{{self.__class__.namespace}}}PI-Limit")
        
            def add_pi_limit(self):
                return etree.SubElement(self,f"{{{self.__class__.namespace}}}PI-Limit")
        
            class Insurer(_Base, etree.ElementBase):
                ""
                element_name = "Insurer"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:string"
                class_name = "Insurer"
                documentation = """The name of the insurance company that underwrites / issued the insurance policy"""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = None
                map_values = None
                parent_class_name = "Insurance_Details"
                parent_method_name ="insurance_details"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def insurance_details(self): return self.getparent()
            
                @property
                def value(self): return self.text
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Policy_No(_Base, etree.ElementBase):
                ""
                element_name = "Policy-No"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:string"
                class_name = "Policy_No"
                documentation = """The policy number of the insurance policy"""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = str
                map_codes = None
                map_values = None
                parent_class_name = "Insurance_Details"
                parent_method_name ="insurance_details"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def insurance_details(self): return self.getparent()
            
                @property
                def value(self): return self.text
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Effective_Date(_Base, etree.ElementBase):
                ""
                element_name = "Effective-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Effective_Date"
                documentation = """The date that the insurance policy becomes effective (commences cover)"""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Insurance_Details"
                parent_method_name ="insurance_details"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def insurance_details(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class Expiry_Date(_Base, etree.ElementBase):
                ""
                element_name = "Expiry-Date"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "xs:date"
                class_name = "Expiry_Date"
                documentation = """The date that the insurance policy is supposed to expire."""
                type_documentation = None
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = datetime.date.fromisoformat
                map_codes = None
                map_values = None
                parent_class_name = "Insurance_Details"
                parent_method_name ="insurance_details"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def insurance_details(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
            class PI_Limit(_Base, etree.ElementBase):
                ""
                element_name = "PI-Limit"
                namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
                element_type = "Money"
                class_name = "PI_Limit"
                documentation = """The upper limit of the Professional Indemnity cover provided by the insurance policy."""
                type_documentation = """Extension of a Decimal value for use with monetary values where a currency code needs to be specified. The currency code is actually metadata about the value so, in line with good XML practice, the Currency Code is declared as an XML-Attribute of the Money datatype rather than as a separate XML-Element. The currency attribute should then include a list of valid currencies codes that are supported."""
                has_text_node = True
                min_occurs = 1
                max_occurs = 1
                python_type_convertor = float
                map_codes = None
                map_values = None
                parent_class_name = "Insurance_Details"
                parent_method_name ="insurance_details"
                subclass_class_names = []
                subclass_method_names = []
            
                @property
                def insurance_details(self): return self.getparent()
            
                @property
                def value(self): return self.__class__.python_type_convertor(self.text)
            
                @value.setter
                def value(self, value): self.text = str(value)
            
                @property
                def code(self): return self.text
            
                @code.setter
                def code(self, code): self.text = str(code)
            
        class ExternalDefinitions_Revision_Number(_Base, etree.ElementBase):
            ""
            element_name = "ExternalDefinitions-Revision-Number"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "ExternalDefinitions_Revision_Number"
            documentation = """A number indicating the version of related ExternalDefinitions.xsd"""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "SAP_Report"
            parent_method_name ="sap_report"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def sap_report(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
    class Client_Name(_Base, etree.ElementBase):
        ""
        element_name = "Client-Name"
        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
        element_type = "xs:string"
        class_name = "Client_Name"
        documentation = """Name of the client. External to the EPC schema for GDPR purposes."""
        type_documentation = None
        has_text_node = True
        min_occurs = 1
        max_occurs = 1
        python_type_convertor = str
        map_codes = None
        map_values = None
        parent_class_name = "SAP_Compliance_Report"
        parent_method_name ="sap_compliance_report"
        subclass_class_names = []
        subclass_method_names = []
    
        @property
        def sap_compliance_report(self): return self.getparent()
    
        @property
        def value(self): return self.text
    
        @value.setter
        def value(self, value): self.text = str(value)
    
        @property
        def code(self): return self.text
    
        @code.setter
        def code(self, code): self.text = str(code)
    
    class Client_Company(_Base, etree.ElementBase):
        ""
        element_name = "Client-Company"
        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
        element_type = "xs:string"
        class_name = "Client_Company"
        documentation = """Company name of the client. External to the EPC schema for GDPR purposes."""
        type_documentation = None
        has_text_node = True
        min_occurs = 1
        max_occurs = 1
        python_type_convertor = str
        map_codes = None
        map_values = None
        parent_class_name = "SAP_Compliance_Report"
        parent_method_name ="sap_compliance_report"
        subclass_class_names = []
        subclass_method_names = []
    
        @property
        def sap_compliance_report(self): return self.getparent()
    
        @property
        def value(self): return self.text
    
        @value.setter
        def value(self, value): self.text = str(value)
    
        @property
        def code(self): return self.text
    
        @code.setter
        def code(self, code): self.text = str(code)
    
    class Client_Address(_Base, etree.ElementBase):
        ""
        element_name = "Client-Address"
        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
        element_type = "AddressType"
        class_name = "Client_Address"
        documentation = """Address of the client. External to the EPC schema for GDPR purposes."""
        type_documentation = """An address is composed of a number of structured elements such as Postcode, Post-Town, Street etc."""
        has_text_node = False
        min_occurs = 1
        max_occurs = 1
        python_type_convertor = None
        map_codes = None
        map_values = None
        parent_class_name = "SAP_Compliance_Report"
        parent_method_name ="sap_compliance_report"
        subclass_class_names = ["Address_Line_1", "Address_Line_2", "Address_Line_3", "Post_Town", "Postcode"]
        subclass_method_names = ["address_line_1", "address_line_2", "address_line_3", "post_town", "postcode"]
    
        @property
        def sap_compliance_report(self): return self.getparent()
    
        @property
        def address_line_1(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-1")
    
        def add_address_line_1(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-1")
    
        @property
        def address_line_2(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-2")
    
        def add_address_line_2(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-2")
    
        @property
        def address_line_3(self): return self.find(f"{{{self.__class__.namespace}}}Address-Line-3")
    
        def add_address_line_3(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Address-Line-3")
    
        @property
        def post_town(self): return self.find(f"{{{self.__class__.namespace}}}Post-Town")
    
        def add_post_town(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Post-Town")
    
        @property
        def postcode(self): return self.find(f"{{{self.__class__.namespace}}}Postcode")
    
        def add_postcode(self):
            return etree.SubElement(self,f"{{{self.__class__.namespace}}}Postcode")
    
        class Address_Line_1(_Base, etree.ElementBase):
            ""
            element_name = "Address-Line-1"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Address_Line_1"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "Client_Address"
            parent_method_name ="client_address"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def client_address(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Address_Line_2(_Base, etree.ElementBase):
            ""
            element_name = "Address-Line-2"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Address_Line_2"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "Client_Address"
            parent_method_name ="client_address"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def client_address(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Address_Line_3(_Base, etree.ElementBase):
            ""
            element_name = "Address-Line-3"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Address_Line_3"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 0
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "Client_Address"
            parent_method_name ="client_address"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def client_address(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Post_Town(_Base, etree.ElementBase):
            ""
            element_name = "Post-Town"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "xs:string"
            class_name = "Post_Town"
            documentation = None
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "Client_Address"
            parent_method_name ="client_address"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def client_address(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
        class Postcode(_Base, etree.ElementBase):
            ""
            element_name = "Postcode"
            namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
            element_type = "PostcodeType"
            class_name = "Postcode"
            documentation = """The Postcode for the Address"""
            type_documentation = None
            has_text_node = True
            min_occurs = 1
            max_occurs = 1
            python_type_convertor = str
            map_codes = None
            map_values = None
            parent_class_name = "Client_Address"
            parent_method_name ="client_address"
            subclass_class_names = []
            subclass_method_names = []
        
            @property
            def client_address(self): return self.getparent()
        
            @property
            def value(self): return self.text
        
            @value.setter
            def value(self, value): self.text = str(value)
        
            @property
            def code(self): return self.text
        
            @code.setter
            def code(self, code): self.text = str(code)
        
    class Is_Multiple_Compliance(_Base, etree.ElementBase):
        ""
        element_name = "Is-Multiple-Compliance"
        namespace = "https://epbr.digital.communities.gov.uk/xsd/sap"
        element_type = "xs:boolean"
        class_name = "Is_Multiple_Compliance"
        documentation = """Is the compliance report part of a multiple compliance calculation."""
        type_documentation = None
        has_text_node = True
        min_occurs = 0
        max_occurs = 1
        python_type_convertor = bool
        map_codes = {'true': True, '1': True, 'false': False, '0': False}
        map_values = {True: '1', False: '0'}
        parent_class_name = "SAP_Compliance_Report"
        parent_method_name ="sap_compliance_report"
        subclass_class_names = []
        subclass_method_names = []
    
        @property
        def sap_compliance_report(self): return self.getparent()
    
        @property
        def value(self): return self.__class__.map_codes[self.text]
    
        @value.setter
        def value(self, value):
            if value in self.__class__.map_values:
                self.text = self.__class__.map_values[value] if self.__class__.python_type_convertor == bool else self.__class__.map_values[str(value)]
            else:
                raise ValueError(f'value "{value}" is not in "{str(list(self.__class__.map_values))}")')
    
        @property
        def code(self): return self.text
    
        @code.setter
        def code(self, code):
            if code in self.__class__.map_codes:
                self.text = str(code)
            else:
                raise ValueError(f'code "{code}" is not in "{str(list(self.__class__.map_codes))}")')
    
