diff --git a/src/ifcopenshell-python/ifcopenshell/api/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/__init__.py index 9c352f652d..7ecf53329f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/__init__.py @@ -350,7 +350,8 @@ def wrap_usecases(path, name): module_name = name.split(".")[-1] module = sys.modules[name] for loader, usecase_name, is_pkg in pkgutil.iter_modules(path): - usecase = getattr(module, usecase_name) + # We may not be able to get the usecase if we are missing a dependency. + usecase = getattr(module, usecase_name, None) if callable(usecase): usecase_path = f"{module_name}.{usecase_name}" setattr(module, usecase_name, wrap_usecase(usecase_path, usecase)) diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py b/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py index 86db04421c..a055399ba3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py @@ -56,11 +56,8 @@ def add_information( attributes={"Identification": "A-GA-6100", "Name": "Overall Plan", "Location": "A-GA-6100 - Overall Plan.pdf"}) """ - settings = {"parent": parent} - id_attribute = "DocumentId" if file.schema == "IFC2X3" else "Identification" information = file.create_entity("IfcDocumentInformation", **{id_attribute: "X", "Name": "Unnamed"}) - parent = settings["parent"] if not parent and file.by_type("IfcProject"): parent = file.by_type("IfcProject")[0] if parent.is_a("IfcProject") or parent.is_a("IfcContext"): diff --git a/src/ifcopenshell-python/test/api/document/test_remove_information.py b/src/ifcopenshell-python/test/api/document/test_remove_information.py index f84d313fe9..7615a6e277 100644 --- a/src/ifcopenshell-python/test/api/document/test_remove_information.py +++ b/src/ifcopenshell-python/test/api/document/test_remove_information.py @@ -22,14 +22,14 @@ import ifcopenshell.api class TestRemoveInformation(test.bootstrap.IFC4): def test_remove_information(self): - project = self.file.createIfcProject() + self.file.createIfcProject() element = ifcopenshell.api.run("document.add_information", self.file, parent=None) ifcopenshell.api.run("document.remove_information", self.file, information=element) assert len(self.file.by_type("IfcDocumentInformation")) == 0 assert len(self.file.by_type("IfcRelAssociatesDocument")) == 0 def test_removing_all_references_of_an_information(self): - project = self.file.createIfcProject() + self.file.createIfcProject() information = ifcopenshell.api.run("document.add_information", self.file, parent=None) ifcopenshell.api.run("document.add_reference", self.file, information=information) ifcopenshell.api.run("document.remove_information", self.file, information=information) @@ -51,7 +51,7 @@ class TestRemoveInformation(test.bootstrap.IFC4): assert len(self.file.by_type("IfcDocumentInformationRelationship")) == 0 def test_removing_all_subdocuments_and_their_references_too(self): - project = self.file.createIfcProject() + self.file.createIfcProject() information = ifcopenshell.api.run("document.add_information", self.file, parent=None) information2 = ifcopenshell.api.run("document.add_information", self.file, parent=information) ifcopenshell.api.run("document.add_reference", self.file, information=information2) @@ -62,5 +62,5 @@ class TestRemoveInformation(test.bootstrap.IFC4): assert len(self.file.by_type("IfcDocumentInformationRelationship")) == 0 -class TestRemoveInformationIFC2X3(test.bootstrap.IFC2X3, TestRemoveInformation): +class TestRemoveInformationIFC2X3(TestRemoveInformation, test.bootstrap.IFC2X3): pass