file.get_inverse: document with_attribute_indices overload

This commit is contained in:
Andrej730
2026-07-14 18:42:42 +05:00
parent d772b24bd6
commit 1b1da821f1
2 changed files with 35 additions and 2 deletions
+13 -2
View File
@@ -911,9 +911,16 @@ class file:
self, self,
inst: ifcopenshell.entity_instance, inst: ifcopenshell.entity_instance,
allow_duplicate: Literal[True], allow_duplicate: Literal[True],
with_attribute_indices: bool = False, with_attribute_indices: Literal[False] = False,
) -> list[ifcopenshell.entity_instance]: ... ) -> list[ifcopenshell.entity_instance]: ...
@overload @overload
def get_inverse(
self,
inst: ifcopenshell.entity_instance,
allow_duplicate: Literal[True],
with_attribute_indices: Literal[True],
) -> list[tuple[ifcopenshell.entity_instance, int]]: ...
@overload
def get_inverse( def get_inverse(
self, self,
inst: ifcopenshell.entity_instance, inst: ifcopenshell.entity_instance,
@@ -925,7 +932,11 @@ class file:
inst: ifcopenshell.entity_instance, inst: ifcopenshell.entity_instance,
allow_duplicate: bool = False, allow_duplicate: bool = False,
with_attribute_indices: bool = False, with_attribute_indices: bool = False,
) -> Union[list[ifcopenshell.entity_instance], set[ifcopenshell.entity_instance]]: ) -> (
list[ifcopenshell.entity_instance]
| set[ifcopenshell.entity_instance]
| list[tuple[ifcopenshell.entity_instance, int]]
):
"""Return a list of entities that reference this entity """Return a list of entities that reference this entity
Warning: this is a slow function, especially when there is a large Warning: this is a slow function, especially when there is a large
@@ -39,3 +39,25 @@ def ifcopenshell_open_test(str_: str, bool_: bool):
assert_type(ifc_file, ifcopenshell.stream) assert_type(ifc_file, ifcopenshell.stream)
ifc_file = ifcopenshell.open(str_, readonly=True) ifc_file = ifcopenshell.open(str_, readonly=True)
def get_inverse_test(ifc_file: ifcopenshell.file, inst: ifcopenshell.entity_instance, bool_: bool):
# Default: allow_duplicate=False, with_attribute_indices=False
result = ifc_file.get_inverse(inst)
assert_type(result, set[ifcopenshell.entity_instance])
# Explicit allow_duplicate=False
result = ifc_file.get_inverse(inst, allow_duplicate=False)
assert_type(result, set[ifcopenshell.entity_instance])
# allow_duplicate=True without indices
result = ifc_file.get_inverse(inst, allow_duplicate=True)
assert_type(result, list[ifcopenshell.entity_instance])
# allow_duplicate=True with indices
result = ifc_file.get_inverse(inst, allow_duplicate=True, with_attribute_indices=True)
assert_type(result, list[tuple[ifcopenshell.entity_instance, int]])
# Dynamic bool values (falls back to generic overload)
result = ifc_file.get_inverse(inst, allow_duplicate=bool_)
assert_type(result, list[ifcopenshell.entity_instance] | set[ifcopenshell.entity_instance])