From f6640d3904df276959706981f6c4b02dc4e6804e Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 12 Mar 2025 16:48:06 +0500 Subject: [PATCH] typing --- src/bonsai/bonsai/bim/module/system/data.py | 15 +++++++++------ .../ifcopenshell/util/schema.py | 14 +++++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/system/data.py b/src/bonsai/bonsai/bim/module/system/data.py index aa36696965..908248203b 100644 --- a/src/bonsai/bonsai/bim/module/system/data.py +++ b/src/bonsai/bonsai/bim/module/system/data.py @@ -130,7 +130,10 @@ class PortData: @classmethod def load(cls): - element = tool.Ifc.get_entity(bpy.context.active_object) + obj = bpy.context.active_object + assert obj + element = tool.Ifc.get_entity(obj) + assert element cls.element = element is_port = cls.is_port() cls.data = { @@ -145,19 +148,19 @@ class PortData: cls.is_loaded = True @classmethod - def total_ports(cls): + def total_ports(cls) -> int: return len(ifcopenshell.util.system.get_ports(cls.element)) @classmethod - def is_port(cls): - return cls.element and cls.element.is_a("IfcDistributionPort") + def is_port(cls) -> bool: + return bool(cls.element and cls.element.is_a("IfcDistributionPort")) @classmethod - def port_relating_object_name(cls): + def port_relating_object_name(cls) -> str: return tool.Ifc.get_object(tool.System.get_port_relating_element(cls.element)).name @classmethod - def port_connected_object_name(cls): + def port_connected_object_name(cls) -> Union[str, None]: connected_port = tool.System.get_connected_port(cls.element) if not connected_port: return diff --git a/src/ifcopenshell-python/ifcopenshell/util/schema.py b/src/ifcopenshell-python/ifcopenshell/util/schema.py index 79c8a9c499..edffea2b2f 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/schema.py +++ b/src/ifcopenshell-python/ifcopenshell/util/schema.py @@ -30,13 +30,21 @@ cwd = os.path.dirname(os.path.realpath(__file__)) IFC_SCHEMA = Literal["IFC2X3", "IFC4", "IFC4X3"] -def get_fallback_schema(version: str) -> str: - """fallback to the schema version we do have docs and mapping for, - needed to support IFC versions like 4X3_RC1, 4X1 etc""" +def get_fallback_schema(version: str) -> IFC_SCHEMA: + """Fallback to the schema version we do have docs and mapping for. + + Needed to support IFC versions like 4X3_RC1, 4X1 etc. + + :param version: Typically a string from ``ifcopenshell.file.schema_identifier``, e.g. IFC4X3_ADD2 + """ if version.startswith("IFC4X3"): version = "IFC4X3" elif version.startswith("IFC4"): version = "IFC4" + elif version.startswith("IFC2X3"): + version = "IFC2X3" + else: + assert False, f"Unexpected schema version: {version}." return version