diff --git a/src/bcf/bcf/agnostic/topic.py b/src/bcf/bcf/agnostic/topic.py
index 1e77f40e97..a25f4af482 100644
--- a/src/bcf/bcf/agnostic/topic.py
+++ b/src/bcf/bcf/agnostic/topic.py
@@ -2,6 +2,8 @@ import tempfile
from pathlib import Path
from typing import Optional, Union
+from typing_extensions import assert_never
+
import bcf.agnostic.model as mdl
import bcf.v2.bcfxml
import bcf.v2.model
@@ -9,7 +11,6 @@ import bcf.v2.topic
import bcf.v3.bcfxml
import bcf.v3.model
import bcf.v3.topic
-from typing_extensions import assert_never
TopicHandler = Union[bcf.v2.topic.TopicHandler, bcf.v3.topic.TopicHandler]
diff --git a/src/bcf/tests/conftest.py b/src/bcf/tests/conftest.py
index f19792122a..ea1b2aee8b 100644
--- a/src/bcf/tests/conftest.py
+++ b/src/bcf/tests/conftest.py
@@ -1,4 +1,5 @@
import pytest
+
from bcf.xml_parser import XmlParserSerializer
diff --git a/src/bcf/tests/v2/test_bcf_xml.py b/src/bcf/tests/v2/test_bcf_xml.py
index 1b5128e96f..fed1428e73 100644
--- a/src/bcf/tests/v2/test_bcf_xml.py
+++ b/src/bcf/tests/v2/test_bcf_xml.py
@@ -4,8 +4,9 @@ import uuid
from pathlib import Path
from tempfile import TemporaryDirectory
-import bcf.v2.model as mdl
import pytest
+
+import bcf.v2.model as mdl
from bcf.v2.bcfxml import BcfXml
from bcf.v2.topic import TopicHandler
from bcf.v2.visinfo import (
diff --git a/src/bcf/tests/v2/test_example_files.py b/src/bcf/tests/v2/test_example_files.py
index 6d964bd0e9..3821569c28 100644
--- a/src/bcf/tests/v2/test_example_files.py
+++ b/src/bcf/tests/v2/test_example_files.py
@@ -3,10 +3,11 @@ import os
import zipfile
from pathlib import Path
+from xsdata.models.datatype import XmlDateTime
+
import bcf.v2.model as mdl
from bcf.v2.bcfxml import BcfXml
from bcf.v2.topic import TopicHandler
-from xsdata.models.datatype import XmlDateTime
def test_maximum_information() -> None:
diff --git a/src/bcf/tests/v2/test_ifcclash_api.py b/src/bcf/tests/v2/test_ifcclash_api.py
index 34c3a493e4..14945e8392 100644
--- a/src/bcf/tests/v2/test_ifcclash_api.py
+++ b/src/bcf/tests/v2/test_ifcclash_api.py
@@ -1,5 +1,6 @@
import numpy as np
import pytest
+
from bcf.v2.bcfxml import BcfXml
diff --git a/src/bcf/tests/v3/test_bcf_xml.py b/src/bcf/tests/v3/test_bcf_xml.py
index ae658ca55f..50664b98c7 100644
--- a/src/bcf/tests/v3/test_bcf_xml.py
+++ b/src/bcf/tests/v3/test_bcf_xml.py
@@ -4,8 +4,9 @@ import uuid
from pathlib import Path
from tempfile import TemporaryDirectory
-import bcf.v3.model as mdl
import pytest
+
+import bcf.v3.model as mdl
from bcf.v3.bcfxml import BcfXml
from bcf.v3.topic import TopicHandler
from bcf.v3.visinfo import (
diff --git a/src/bcf/tests/v3/test_example_files.py b/src/bcf/tests/v3/test_example_files.py
index c25a3f3f7e..3f141afda6 100644
--- a/src/bcf/tests/v3/test_example_files.py
+++ b/src/bcf/tests/v3/test_example_files.py
@@ -2,9 +2,10 @@ import os
import zipfile
from pathlib import Path
+from xsdata.models.datatype import XmlDateTime
+
import bcf.v3.model as mdl
from bcf.v3.bcfxml import BcfXml
-from xsdata.models.datatype import XmlDateTime
def test_doc_ref_internal() -> None:
diff --git a/src/bcf/tests/v3/test_ifcclash_api.py b/src/bcf/tests/v3/test_ifcclash_api.py
index faea9b6a1a..d470f1ffb8 100644
--- a/src/bcf/tests/v3/test_ifcclash_api.py
+++ b/src/bcf/tests/v3/test_ifcclash_api.py
@@ -1,5 +1,6 @@
import numpy as np
import pytest
+
from bcf.v3.bcfxml import BcfXml
diff --git a/src/bonsai/bonsai/__init__.py b/src/bonsai/bonsai/__init__.py
index ab5d46607b..b4083b0eef 100644
--- a/src/bonsai/bonsai/__init__.py
+++ b/src/bonsai/bonsai/__init__.py
@@ -32,17 +32,16 @@ if IN_BLENDER:
# and then as a bonsai-package.
IN_PACKAGE = __package__ == "bonsai"
-import re
import platform
-import traceback
-import webbrowser
-import uuid
+import re
import shutil
+import traceback
+import uuid
+import webbrowser
from collections import deque
-from pathlib import Path
-from typing import Union, Any
from collections.abc import Generator
-
+from pathlib import Path
+from typing import Any, Union
last_commit_hash = "8888888"
last_commit_date = "9999999"
diff --git a/src/bonsai/bonsai/bim/__init__.py b/src/bonsai/bonsai/bim/__init__.py
index a7dc729881..4302739aab 100644
--- a/src/bonsai/bonsai/bim/__init__.py
+++ b/src/bonsai/bonsai/bim/__init__.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import importlib
import os
+from collections.abc import Callable
+from typing import Union
+
import bpy
import bpy.utils.previews
-import importlib
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from . import handler, ui, prop, operator
-from typing import Union
-from collections.abc import Callable
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
+from . import handler, operator, prop, ui
try:
from bonsai.translations import translations_dict
diff --git a/src/bonsai/bonsai/bim/data/webui/sioserver.py b/src/bonsai/bonsai/bim/data/webui/sioserver.py
index 4701268232..91c3c4e8eb 100644
--- a/src/bonsai/bonsai/bim/data/webui/sioserver.py
+++ b/src/bonsai/bonsai/bim/data/webui/sioserver.py
@@ -1,6 +1,5 @@
-import sys
import os
-
+import sys
bonsai_lib_path = os.environ.get("BONSAI_LIB_PATH")
bonsai_version = os.environ.get("BONSAI_VERSION")
@@ -9,13 +8,14 @@ if bonsai_lib_path:
sys.path.insert(0, bonsai_lib_path)
import argparse
-from aiohttp import web
-import socketio
-import pystache
-import json
import base64
+import json
import xml.etree.ElementTree as ET
+import pystache
+import socketio
+from aiohttp import web
+
sio_port = 8080 # default port
sio = socketio.AsyncServer(cors_allowed_origins="*", async_mode="aiohttp", max_http_buffer_size=10000000)
diff --git a/src/bonsai/bonsai/bim/export_ifc.py b/src/bonsai/bonsai/bim/export_ifc.py
index 6134786124..7295c72e34 100644
--- a/src/bonsai/bonsai/bim/export_ifc.py
+++ b/src/bonsai/bonsai/bim/export_ifc.py
@@ -17,27 +17,30 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
-import json
+
import datetime
-import zipfile
+import json
+import os
import tempfile
+import zipfile
+from logging import Logger
+from math import radians
+from typing import Union
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.core.geometry
+from mathutils import Vector
+
import bonsai.core.aggregate
+import bonsai.core.geometry
import bonsai.core.spatial
import bonsai.core.style
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from mathutils import Vector
-from typing import Union
-from logging import Logger
-from math import radians
class IfcExporter:
diff --git a/src/bonsai/bonsai/bim/handler.py b/src/bonsai/bonsai/bim/handler.py
index c7cb10cdde..231b44c671 100644
--- a/src/bonsai/bonsai/bim/handler.py
+++ b/src/bonsai/bonsai/bim/handler.py
@@ -17,26 +17,31 @@
# along with Bonsai. If not, see .
import os
+import weakref
+from collections.abc import Callable
+from math import cos
+from typing import Union
+
import bpy
+import ifcopenshell.api.owner.settings
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import ifcopenshell.api.owner.settings
+from bpy.app.handlers import persistent
+from mathutils import Vector
+
import bonsai.bim
import bonsai.tool as tool
-import weakref
-from bpy.app.handlers import persistent
from bonsai.bim.ifc import IfcStore
-from bonsai.bim.module.model.data import AuthoringData
from bonsai.bim.module.aggregate.decorator import AggregateDecorator
from bonsai.bim.module.georeference.decorator import GeoreferenceDecorator
-from bonsai.bim.module.model.decorator import WallAxisDecorator, SlabDirectionDecorator, BoundingBoxDecorator
+from bonsai.bim.module.model.data import AuthoringData
+from bonsai.bim.module.model.decorator import (
+ BoundingBoxDecorator,
+ SlabDirectionDecorator,
+ WallAxisDecorator,
+)
from bonsai.bim.module.nest.decorator import NestDecorator
-from mathutils import Vector
-from math import cos
-from typing import Union
-from collections.abc import Callable
-
cwd = os.path.dirname(os.path.realpath(__file__))
global_subscription_owner = object()
@@ -202,8 +207,8 @@ def refresh_ui_data():
Note that calling non-ifc-operators by itself doesn't refresh the UI data
and it need to be refreshed manually if needed.
"""
- from bonsai.bim import modules
import bonsai.bim.ui
+ from bonsai.bim import modules
bonsai.bim.ui.refresh()
diff --git a/src/bonsai/bonsai/bim/helper.py b/src/bonsai/bonsai/bim/helper.py
index e81c483216..9267134988 100644
--- a/src/bonsai/bonsai/bim/helper.py
+++ b/src/bonsai/bonsai/bim/helper.py
@@ -17,24 +17,31 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import importlib
-import bpy
import json
+from collections.abc import Callable, Iterable, Sequence
+from types import EllipsisType
+from typing import TYPE_CHECKING, Any, Optional, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.attribute
import ifcopenshell.util.element
import ifcopenshell.util.unit
-from ifcopenshell.util.doc import get_attribute_doc, get_predefined_type_doc, get_property_doc
+from ifcopenshell.util.doc import (
+ get_attribute_doc,
+ get_predefined_type_doc,
+ get_property_doc,
+)
+
import bonsai.tool as tool
-from types import EllipsisType
-from typing import Optional, Any, Union, TYPE_CHECKING
-from collections.abc import Callable, Iterable, Sequence
if TYPE_CHECKING:
import bonsai.bim.prop
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.search.prop import BIMFilterGroup
+ from bonsai.bim.prop import Attribute
# ImportCallback return values:
# - None - property should be imported by default workflow
diff --git a/src/bonsai/bonsai/bim/ifc.py b/src/bonsai/bonsai/bim/ifc.py
index 881de8adf9..f7d23e1dbe 100644
--- a/src/bonsai/bonsai/bim/ifc.py
+++ b/src/bonsai/bonsai/bim/ifc.py
@@ -17,26 +17,28 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
-import uuid
-import shutil
+
import hashlib
-import zipfile
+import os
+import shutil
import tempfile
import traceback
+import uuid
+import zipfile
+from collections.abc import Callable
+from pathlib import Path
+from typing import Literal, NotRequired, Optional, TypedDict, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper
+from ifcopenshell.file import UndoSystemError
+
import bonsai
import bonsai.bim.handler
import bonsai.tool as tool
-from ifcopenshell.file import UndoSystemError
-from pathlib import Path
from bonsai.tool.brick import BrickStore
-from typing import Union, Optional, TypedDict, NotRequired, Literal
-from collections.abc import Callable
-
IFC_CONNECTED_TYPE = Union[bpy.types.Material, bpy.types.Object]
diff --git a/src/bonsai/bonsai/bim/import_ifc.py b/src/bonsai/bonsai/bim/import_ifc.py
index d8ecfd6894..6e04800dd4 100644
--- a/src/bonsai/bonsai/bim/import_ifc.py
+++ b/src/bonsai/bonsai/bim/import_ifc.py
@@ -17,33 +17,36 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import time
+
import json
-import ifcpatch
import logging
-import traceback
-import mathutils
-import numpy as np
-import numpy.typing as npt
import multiprocessing
+import time
+import traceback
+from collections.abc import Iterable
+from typing import Any, Literal, Optional, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
-import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape
-import bonsai.tool as tool
-from bonsai.bim.ifc import IfcStore, IFC_CONNECTED_TYPE
-from bonsai.tool.loader import OBJECT_DATA_TYPE
-from typing import Union, Optional, Any, Literal
-from collections.abc import Iterable
+import ifcopenshell.util.unit
+import ifcpatch
+import mathutils
+import numpy as np
+import numpy.typing as npt
from ifcopenshell.util.shape import MatrixType
+import bonsai.tool as tool
+from bonsai.bim.ifc import IFC_CONNECTED_TYPE, IfcStore
+from bonsai.tool.loader import OBJECT_DATA_TYPE
+
class MaterialCreator:
mesh: bpy.types.Mesh
diff --git a/src/bonsai/bonsai/bim/module/aggregate/__init__.py b/src/bonsai/bonsai/bim/module/aggregate/__init__.py
index daafdf201c..9f081ecaec 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/__init__.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.BIM_OT_add_aggregate,
diff --git a/src/bonsai/bonsai/bim/module/aggregate/data.py b/src/bonsai/bonsai/bim/module/aggregate/data.py
index ad58f6defb..22c7505bf3 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/data.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/data.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-import ifcopenshell.util.element
from typing import Union
+import bpy
+import ifcopenshell.util.element
+
+import bonsai.tool as tool
+
def refresh():
AggregateData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/aggregate/decorator.py b/src/bonsai/bonsai/bim/module/aggregate/decorator.py
index 877e7f41e0..080f965bf8 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/decorator.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/decorator.py
@@ -21,11 +21,12 @@ import bpy
import gpu
import ifcopenshell
import ifcopenshell.util.element
-import bonsai.tool as tool
from bpy.types import SpaceView3D
from bpy_extras import view3d_utils
from gpu_extras.batch import batch_for_shader
from mathutils import Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.geometry.decorator import ItemDecorator
diff --git a/src/bonsai/bonsai/bim/module/aggregate/operator.py b/src/bonsai/bonsai/bim/module/aggregate/operator.py
index 32d06dd94e..be6272c3ab 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/operator.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/operator.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell
import ifcopenshell.api
@@ -23,10 +25,10 @@ import ifcopenshell.api.group
import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.util.element
-import bonsai.tool as tool
+
import bonsai.core.aggregate as core
import bonsai.core.spatial
-from typing import TYPE_CHECKING
+import bonsai.tool as tool
class BIM_OT_aggregate_assign_object(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/aggregate/prop.py b/src/bonsai/bonsai/bim/module/aggregate/prop.py
index 03a3d0f533..241663882f 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/prop.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/prop.py
@@ -16,24 +16,29 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell.util.element
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.spatial.data import SpatialData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from bonsai.bim.module.aggregate.decorator import AggregateDecorator, AggregateModeDecorator
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.aggregate.decorator import (
+ AggregateDecorator,
+ AggregateModeDecorator,
+)
+from bonsai.bim.module.spatial.data import SpatialData
+from bonsai.bim.prop import Attribute, StrProperty
def can_aggregate(relating_obj: bpy.types.Object, related_obj: bpy.types.Object) -> bool:
diff --git a/src/bonsai/bonsai/bim/module/aggregate/ui.py b/src/bonsai/bonsai/bim/module/aggregate/ui.py
index e9c596f9ac..d693843401 100644
--- a/src/bonsai/bonsai/bim/module/aggregate/ui.py
+++ b/src/bonsai/bonsai/bim/module/aggregate/ui.py
@@ -17,10 +17,11 @@
# along with Bonsai. If not, see .
from bpy.types import Panel
+
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
from bonsai.bim.module.aggregate.data import AggregateData
from bonsai.bim.module.group.data import GroupsData, ObjectGroupsData
-from bonsai.bim.ifc import IfcStore
-import bonsai.tool as tool
class BIM_PT_aggregate(Panel):
diff --git a/src/bonsai/bonsai/bim/module/alignment/operator.py b/src/bonsai/bonsai/bim/module/alignment/operator.py
index 58c139b639..0705dcb1b9 100644
--- a/src/bonsai/bonsai/bim/module/alignment/operator.py
+++ b/src/bonsai/bonsai/bim/module/alignment/operator.py
@@ -18,25 +18,25 @@
# pyright: reportUnnecessaryTypeIgnoreComment=error
+import calendar
+import json
import os
-
-import ifcopenshell.api.alignment
+import time
+from datetime import datetime
import bpy
-import json
-import time
-import calendar
-import isodate
-import bonsai.core.sequence as core
-import bonsai.tool as tool
-import bonsai.bim.module.sequence.helper as helper
+import ifcopenshell.api.alignment
import ifcopenshell.api.spatial
import ifcopenshell.geom
-import ifcopenshell.util.sequence
import ifcopenshell.util.selector
-from datetime import datetime
-from dateutil import parser, relativedelta
+import ifcopenshell.util.sequence
+import isodate
from bpy_extras.io_utils import ImportHelper
+from dateutil import parser, relativedelta
+
+import bonsai.bim.module.sequence.helper as helper
+import bonsai.core.sequence as core
+import bonsai.tool as tool
class ImportAlignmentCSV(bpy.types.Operator, tool.Ifc.Operator, ImportHelper):
diff --git a/src/bonsai/bonsai/bim/module/attribute/__init__.py b/src/bonsai/bonsai/bim/module/attribute/__init__.py
index 7348a2cffb..1e1402d6f5 100644
--- a/src/bonsai/bonsai/bim/module/attribute/__init__.py
+++ b/src/bonsai/bonsai/bim/module/attribute/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.EnableEditingAttributes,
diff --git a/src/bonsai/bonsai/bim/module/attribute/data.py b/src/bonsai/bonsai/bim/module/attribute/data.py
index 8c5000a128..32f6f895ce 100644
--- a/src/bonsai/bonsai/bim/module/attribute/data.py
+++ b/src/bonsai/bonsai/bim/module/attribute/data.py
@@ -18,6 +18,7 @@
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/attribute/operator.py b/src/bonsai/bonsai/bim/module/attribute/operator.py
index fb39efe91e..13901c0f81 100644
--- a/src/bonsai/bonsai/bim/module/attribute/operator.py
+++ b/src/bonsai/bonsai/bim/module/attribute/operator.py
@@ -16,22 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+from typing import TYPE_CHECKING, Any, Literal, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.api.attribute
import ifcopenshell.guid
import ifcopenshell.util.element
+
import bonsai.bim.helper
-import bonsai.tool as tool
import bonsai.core.attribute as core
import bonsai.core.spatial
-from typing import TYPE_CHECKING, Any, Union, Literal
+import bonsai.tool as tool
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
import bpy.stub_internal.rna_enums as rna_enums
+ from bonsai.bim.prop import Attribute
+
def get_objs_for_operation(
operator_properties: "AttributesOperator", context: bpy.types.Context
diff --git a/src/bonsai/bonsai/bim/module/attribute/prop.py b/src/bonsai/bonsai/bim/module/attribute/prop.py
index 97246cf7ce..98ffb00c5c 100644
--- a/src/bonsai/bonsai/bim/module/attribute/prop.py
+++ b/src/bonsai/bonsai/bim/module/attribute/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.prop import Attribute, StrProperty
class BIMAttributeProperties(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/attribute/ui.py b/src/bonsai/bonsai/bim/module/attribute/ui.py
index 0665c84dd5..84813e8d1e 100644
--- a/src/bonsai/bonsai/bim/module/attribute/ui.py
+++ b/src/bonsai/bonsai/bim/module/attribute/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.bim.helper
+
+from typing import TYPE_CHECKING
+
import bpy.types
from bpy.types import Panel
-from bonsai.bim.module.attribute.data import AttributesData
+
+import bonsai.bim.helper
import bonsai.tool as tool
-from typing import TYPE_CHECKING
+from bonsai.bim.module.attribute.data import AttributesData
if TYPE_CHECKING:
from bonsai.bim.module.attribute.prop import BIMExplorerProperties, ExplorerEntity
diff --git a/src/bonsai/bonsai/bim/module/augin/__init__.py b/src/bonsai/bonsai/bim/module/augin/__init__.py
index 8b8009c4e6..bff5e9449d 100644
--- a/src/bonsai/bonsai/bim/module/augin/__init__.py
+++ b/src/bonsai/bonsai/bim/module/augin/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
prop.AuginProperties,
diff --git a/src/bonsai/bonsai/bim/module/augin/operator.py b/src/bonsai/bonsai/bim/module/augin/operator.py
index b578beb554..10d802569a 100644
--- a/src/bonsai/bonsai/bim/module/augin/operator.py
+++ b/src/bonsai/bonsai/bim/module/augin/operator.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import datetime
import os
-import bpy
-import string
import random
import shutil
-import requests
+import string
import tempfile
-import datetime
+
+import bpy
+import requests
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/augin/ui.py b/src/bonsai/bonsai/bim/module/augin/ui.py
index 65ca3ac7f9..dfd6e49730 100644
--- a/src/bonsai/bonsai/bim/module/augin/ui.py
+++ b/src/bonsai/bonsai/bim/module/augin/ui.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy.types
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/bcf/__init__.py b/src/bonsai/bonsai/bim/module/bcf/__init__.py
index e7153974f4..000f343727 100644
--- a/src/bonsai/bonsai/bim/module/bcf/__init__.py
+++ b/src/bonsai/bonsai/bim/module/bcf/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ActivateBcfViewpoint,
diff --git a/src/bonsai/bonsai/bim/module/bcf/bcfstore.py b/src/bonsai/bonsai/bim/module/bcf/bcfstore.py
index 13be3faf1d..a1fec8aa6e 100644
--- a/src/bonsai/bonsai/bim/module/bcf/bcfstore.py
+++ b/src/bonsai/bonsai/bim/module/bcf/bcfstore.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
import os
-import bpy
+from typing import Union
+
import bcf
import bcf.bcfxml
import bcf.v2.bcfxml
+import bpy
+
import bonsai.tool as tool
-from typing import Union
class BcfStore:
diff --git a/src/bonsai/bonsai/bim/module/bcf/operator.py b/src/bonsai/bonsai/bim/module/bcf/operator.py
index 1c6137e93b..b0a6f1f699 100644
--- a/src/bonsai/bonsai/bim/module/bcf/operator.py
+++ b/src/bonsai/bonsai/bim/module/bcf/operator.py
@@ -17,6 +17,20 @@
# along with Bonsai. If not, see .
import os
+import tempfile
+import uuid
+import webbrowser
+from math import atan, cos, degrees, radians, sin, tan
+from pathlib import Path
+
+import bcf
+import bcf.agnostic.topic
+import bcf.agnostic.visinfo
+import bcf.bcfxml
+import bcf.v2.bcfxml
+import bcf.v2.model
+import bcf.v2.topic
+import bcf.v2.visinfo
import bcf.v3
import bcf.v3.bcfxml
import bcf.v3.document
@@ -24,30 +38,18 @@ import bcf.v3.model
import bcf.v3.topic
import bcf.v3.visinfo
import bpy
-import bcf
-import bcf.bcfxml
-import bcf.v2.bcfxml
-import bcf.v2.model
-import bcf.v2.topic
-import bcf.v2.visinfo
-import bcf.agnostic.topic
-import bcf.agnostic.visinfo
-import uuid
-import numpy as np
-import tempfile
-import webbrowser
import ifcopenshell
import ifcopenshell.util.geolocation
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.bim.module.bcf.prop as bcf_prop
-import bonsai.bim.module.bcf.bcfstore as bcfstore
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from pathlib import Path
-from math import radians, degrees, atan, tan, cos, sin
-from mathutils import Vector, Matrix, Euler, geometry
+import numpy as np
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+from mathutils import Euler, Matrix, Vector, geometry
from xsdata.models.datatype import XmlDateTime
+import bonsai.bim.module.bcf.bcfstore as bcfstore
+import bonsai.bim.module.bcf.prop as bcf_prop
+import bonsai.tool as tool
+
class NewBcfProject(bpy.types.Operator):
bl_idname = "bim.new_bcf_project"
diff --git a/src/bonsai/bonsai/bim/module/bcf/prop.py b/src/bonsai/bonsai/bim/module/bcf/prop.py
index 6a01115821..b720a2ff74 100644
--- a/src/bonsai/bonsai/bim/module/bcf/prop.py
+++ b/src/bonsai/bonsai/bim/module/bcf/prop.py
@@ -16,24 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-from . import bcfstore
-from bonsai.bim.prop import StrProperty
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-from bcf.agnostic.extensions import get_extensions_attributes
from typing import TYPE_CHECKING, Union
+import bpy
+from bcf.agnostic.extensions import get_extensions_attributes
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.prop import StrProperty
+
+from . import bcfstore
bcfviewpoints_enum = None
diff --git a/src/bonsai/bonsai/bim/module/bcf/ui.py b/src/bonsai/bonsai/bim/module/bcf/ui.py
index d0d25ecd10..e3478f63cf 100644
--- a/src/bonsai/bonsai/bim/module/bcf/ui.py
+++ b/src/bonsai/bonsai/bim/module/bcf/ui.py
@@ -17,15 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import os
-import bpy
-import bonsai.tool as tool
-from . import bcfstore
-from bpy.types import Panel
from typing import TYPE_CHECKING
+import bpy
+from bpy.types import Panel
+
+import bonsai.tool as tool
+
+from . import bcfstore
+
if TYPE_CHECKING:
- from bonsai.bim.module.bcf.prop import BcfTopic, BCFProperties
+ from bonsai.bim.module.bcf.prop import BCFProperties, BcfTopic
class BIM_PT_bcf(Panel):
diff --git a/src/bonsai/bonsai/bim/module/boundary/__init__.py b/src/bonsai/bonsai/bim/module/boundary/__init__.py
index cf2f78a7da..fe11440adc 100644
--- a/src/bonsai/bonsai/bim/module/boundary/__init__.py
+++ b/src/bonsai/bonsai/bim/module/boundary/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, operator, prop
+
+from . import operator, prop, ui
classes = (
operator.AddBoundary,
diff --git a/src/bonsai/bonsai/bim/module/boundary/data.py b/src/bonsai/bonsai/bim/module/boundary/data.py
index e7f82caf4c..58ccadc713 100644
--- a/src/bonsai/bonsai/bim/module/boundary/data.py
+++ b/src/bonsai/bonsai/bim/module/boundary/data.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/boundary/decorator.py b/src/bonsai/bonsai/bim/module/boundary/decorator.py
index c7875c94bf..1f5859824e 100644
--- a/src/bonsai/bonsai/bim/module/boundary/decorator.py
+++ b/src/bonsai/bonsai/bim/module/boundary/decorator.py
@@ -16,12 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import gpu
import bmesh
-import bonsai.tool as tool
+import gpu
from bpy.types import SpaceView3D
-from mathutils import Vector
from gpu_extras.batch import batch_for_shader
+from mathutils import Vector
+
+import bonsai.tool as tool
class BoundaryDecorator:
diff --git a/src/bonsai/bonsai/bim/module/boundary/operator.py b/src/bonsai/bonsai/bim/module/boundary/operator.py
index 89b4bf6e72..4b26a0a4d9 100644
--- a/src/bonsai/bonsai/bim/module/boundary/operator.py
+++ b/src/bonsai/bonsai/bim/module/boundary/operator.py
@@ -16,34 +16,36 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
import logging
-import shapely
-import shapely.ops
-import mathutils
-import numpy as np
import multiprocessing
+from math import acos, degrees, inf, pi, radians
+from typing import Optional, Union
+
+import bmesh
+import bpy
import ifcopenshell.api
import ifcopenshell.api.boundary
import ifcopenshell.api.root
import ifcopenshell.geom
-import ifcopenshell.util.unit
-import ifcopenshell.util.shape
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
-import bonsai.tool as tool
-import bonsai.bim.import_ifc as import_ifc
-from math import pi, inf, degrees, acos, radians
-from mathutils import Vector, Matrix
-from bonsai.bim.ifc import IfcStore
-from bonsai.bim.module.model.decorator import ProfileDecorator
-from bonsai.bim.module.boundary.decorator import BoundaryDecorator
+import ifcopenshell.util.shape
+import ifcopenshell.util.unit
+import mathutils
+import numpy as np
+import shapely
+import shapely.ops
from ifcopenshell.util.shape_builder import ShapeBuilder
+from mathutils import Matrix, Vector
+
+import bonsai.bim.import_ifc as import_ifc
import bonsai.core
import bonsai.core.geometry
-from typing import Union, Optional
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.boundary.decorator import BoundaryDecorator
+from bonsai.bim.module.model.decorator import ProfileDecorator
def disable_editing_boundary_geometry(context):
diff --git a/src/bonsai/bonsai/bim/module/boundary/prop.py b/src/bonsai/bonsai/bim/module/boundary/prop.py
index dc76de0e00..cd7e0b9de3 100644
--- a/src/bonsai/bonsai/bim/module/boundary/prop.py
+++ b/src/bonsai/bonsai/bim/module/boundary/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
-from bpy.types import PropertyGroup
-from bonsai.bim.prop import ObjProperty
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
import bonsai.tool as tool
-from typing import TYPE_CHECKING, Union
+from bonsai.bim.prop import ObjProperty
def space_filter(self: "BIMObjectBoundaryProperties", object: bpy.types.Object) -> bool:
diff --git a/src/bonsai/bonsai/bim/module/boundary/ui.py b/src/bonsai/bonsai/bim/module/boundary/ui.py
index ba7592b34c..54694d752c 100644
--- a/src/bonsai/bonsai/bim/module/boundary/ui.py
+++ b/src/bonsai/bonsai/bim/module/boundary/ui.py
@@ -18,6 +18,7 @@
import bpy
from bpy.types import Panel, UIList
+
import bonsai.tool as tool
from bonsai.bim.module.boundary.data import SpaceBoundariesData
diff --git a/src/bonsai/bonsai/bim/module/brick/__init__.py b/src/bonsai/bonsai/bim/module/brick/__init__.py
index 6f5077f767..64d1bd3156 100644
--- a/src/bonsai/bonsai/bim/module/brick/__init__.py
+++ b/src/bonsai/bonsai/bim/module/brick/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddBrick,
diff --git a/src/bonsai/bonsai/bim/module/brick/data.py b/src/bonsai/bonsai/bim/module/brick/data.py
index b7ac6f61e1..bae294d713 100644
--- a/src/bonsai/bonsai/bim/module/brick/data.py
+++ b/src/bonsai/bonsai/bim/module/brick/data.py
@@ -17,11 +17,12 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.tool as tool
from bonsai.tool.brick import BrickStore
try:
- from rdflib import URIRef, BNode
+ from rdflib import BNode, URIRef
except:
# See #1860
print("Warning: brickschema not available.")
diff --git a/src/bonsai/bonsai/bim/module/brick/operator.py b/src/bonsai/bonsai/bim/module/brick/operator.py
index 94a9f9fe54..cb0a5f675f 100644
--- a/src/bonsai/bonsai/bim/module/brick/operator.py
+++ b/src/bonsai/bonsai/bim/module/brick/operator.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell.api
-import bonsai.tool as tool
-import bonsai.core.brick as core
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
import bonsai.bim.handler
-from bpy_extras.io_utils import ImportHelper, ExportHelper
+import bonsai.core.brick as core
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
from bonsai.tool.brick import BrickStore
diff --git a/src/bonsai/bonsai/bim/module/brick/prop.py b/src/bonsai/bonsai/bim/module/brick/prop.py
index 4b738a0c77..9fe6d78407 100644
--- a/src/bonsai/bonsai/bim/module/brick/prop.py
+++ b/src/bonsai/bonsai/bim/module/brick/prop.py
@@ -16,24 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
-from bonsai.bim.module.brick.data import BrickschemaData, BrickschemaReferencesData
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
import bonsai.core.brick as core
import bonsai.tool.brick as tool
+from bonsai.bim.module.brick.data import BrickschemaData, BrickschemaReferencesData
+from bonsai.bim.prop import Attribute, StrProperty
from bonsai.tool.brick import BrickStore
-from typing import TYPE_CHECKING
def update_active_brick_index(self, context):
diff --git a/src/bonsai/bonsai/bim/module/brick/ui.py b/src/bonsai/bonsai/bim/module/brick/ui.py
index a845b12e8e..aa910c272f 100644
--- a/src/bonsai/bonsai/bim/module/brick/ui.py
+++ b/src/bonsai/bonsai/bim/module/brick/ui.py
@@ -16,8 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bonsai.tool as tool
from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.brick.data import BrickschemaData, BrickschemaReferencesData
from bonsai.tool.brick import BrickStore
diff --git a/src/bonsai/bonsai/bim/module/bsdd/__init__.py b/src/bonsai/bonsai/bim/module/bsdd/__init__.py
index 607e2754c2..25d6f501f0 100644
--- a/src/bonsai/bonsai/bim/module/bsdd/__init__.py
+++ b/src/bonsai/bonsai/bim/module/bsdd/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddBSDDProperties,
diff --git a/src/bonsai/bonsai/bim/module/bsdd/data.py b/src/bonsai/bonsai/bim/module/bsdd/data.py
index 7905ca75c1..6e916d3355 100644
--- a/src/bonsai/bonsai/bim/module/bsdd/data.py
+++ b/src/bonsai/bonsai/bim/module/bsdd/data.py
@@ -18,8 +18,9 @@
import bpy
import ifcopenshell
-import ifcopenshell.util.date
import ifcopenshell.util.classification
+import ifcopenshell.util.date
+
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
diff --git a/src/bonsai/bonsai/bim/module/bsdd/operator.py b/src/bonsai/bonsai/bim/module/bsdd/operator.py
index 3a6d46d1fa..d3f5533c1a 100644
--- a/src/bonsai/bonsai/bim/module/bsdd/operator.py
+++ b/src/bonsai/bonsai/bim/module/bsdd/operator.py
@@ -16,13 +16,15 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
import textwrap
+from typing import Any
+
import bpy
import bsdd
-import bonsai.tool as tool
import ifcopenshell.api.pset
import ifcopenshell.util.element
+
+import bonsai.tool as tool
from bonsai.core import bsdd as core
-from typing import Any
class LoadBSDDDictionaries(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/bsdd/prop.py b/src/bonsai/bonsai/bim/module/bsdd/prop.py
index 3b427ba626..347cdab1b2 100644
--- a/src/bonsai/bonsai/bim/module/bsdd/prop.py
+++ b/src/bonsai/bonsai/bim/module/bsdd/prop.py
@@ -16,23 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
-import bonsai.tool as tool
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
from bonsai.bim.module.bsdd.data import BSDDData
from bonsai.bim.module.classification.data import ClassificationsData
from bonsai.bim.prop import Attribute, StrProperty
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-from typing import Union, TYPE_CHECKING, Literal
def get_active_dictionary(self: "BIMBSDDProperties", context: object) -> tool.Blender.BLENDER_ENUM_ITEMS:
diff --git a/src/bonsai/bonsai/bim/module/bsdd/ui.py b/src/bonsai/bonsai/bim/module/bsdd/ui.py
index 39b2f9140e..c6966c01d8 100644
--- a/src/bonsai/bonsai/bim/module/bsdd/ui.py
+++ b/src/bonsai/bonsai/bim/module/bsdd/ui.py
@@ -17,14 +17,22 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.tool as tool
-from bonsai.bim.module.bsdd.data import BSDDData
-from bpy.types import Panel, UIList
+
from typing import TYPE_CHECKING
+import bpy
+from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
+from bonsai.bim.module.bsdd.data import BSDDData
+
if TYPE_CHECKING:
- from bonsai.bim.module.bsdd.prop import BIMBSDDProperties, BSDDDictionary, BSDDClassification, BSDDProperty
+ from bonsai.bim.module.bsdd.prop import (
+ BIMBSDDProperties,
+ BSDDClassification,
+ BSDDDictionary,
+ BSDDProperty,
+ )
class BIM_PT_bsdd(Panel):
diff --git a/src/bonsai/bonsai/bim/module/cad/__init__.py b/src/bonsai/bonsai/bim/module/cad/__init__.py
index 601c4da1c3..6ddca2dd96 100644
--- a/src/bonsai/bonsai/bim/module/cad/__init__.py
+++ b/src/bonsai/bonsai/bim/module/cad/__init__.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
from . import operator, prop, workspace
classes = (
diff --git a/src/bonsai/bonsai/bim/module/cad/operator.py b/src/bonsai/bonsai/bim/module/cad/operator.py
index 06f026a577..857d757ca1 100644
--- a/src/bonsai/bonsai/bim/module/cad/operator.py
+++ b/src/bonsai/bonsai/bim/module/cad/operator.py
@@ -16,17 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
-import bmesh
-import mathutils
-import bpy_extras
-import bonsai.tool as tool
-from mathutils import Vector, Matrix
-from math import pi, radians, sin, cos, sqrt
-import ifcopenshell.util.unit
+from math import cos, pi, radians, sin, sqrt
from typing import Union
+import bmesh
+import bpy
+import bpy_extras
+import ifcopenshell.util.unit
+import mathutils
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
messages = {
"SHARED_VERTEX": "Shared Vertex, no intersection possible",
diff --git a/src/bonsai/bonsai/bim/module/cad/prop.py b/src/bonsai/bonsai/bim/module/cad/prop.py
index 7247408f00..db737b51dc 100644
--- a/src/bonsai/bonsai/bim/module/cad/prop.py
+++ b/src/bonsai/bonsai/bim/module/cad/prop.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-from bonsai.bim.module.model.data import AuthoringData
-from bpy.types import PropertyGroup
from math import pi
from typing import TYPE_CHECKING
+import bpy
+from bpy.types import PropertyGroup
+
+from bonsai.bim.module.model.data import AuthoringData
+
class BIMCadProperties(PropertyGroup):
resolution: bpy.props.IntProperty(name="Arc Resolution", min=1, default=1)
diff --git a/src/bonsai/bonsai/bim/module/cad/workspace.py b/src/bonsai/bonsai/bim/module/cad/workspace.py
index 017f493682..b384463ac2 100644
--- a/src/bonsai/bonsai/bim/module/cad/workspace.py
+++ b/src/bonsai/bonsai/bim/module/cad/workspace.py
@@ -17,13 +17,15 @@
# along with Bonsai. If not, see .
import os
+from functools import partial
+
import bpy
-import bonsai.tool as tool
-import bonsai.bim.module.type.prop as type_prop
import ifcopenshell.util.unit
from bpy.types import WorkSpaceTool
+
+import bonsai.bim.module.type.prop as type_prop
+import bonsai.tool as tool
from bonsai.bim.module.model.data import AuthoringData, RailingData, RoofData
-from functools import partial
def load_custom_icons():
diff --git a/src/bonsai/bonsai/bim/module/clash/__init__.py b/src/bonsai/bonsai/bim/module/clash/__init__.py
index a3ada1bc72..6bfabacfab 100644
--- a/src/bonsai/bonsai/bim/module/clash/__init__.py
+++ b/src/bonsai/bonsai/bim/module/clash/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddClashSet,
diff --git a/src/bonsai/bonsai/bim/module/clash/data.py b/src/bonsai/bonsai/bim/module/clash/data.py
index b994a1b750..4ecbb229a4 100644
--- a/src/bonsai/bonsai/bim/module/clash/data.py
+++ b/src/bonsai/bonsai/bim/module/clash/data.py
@@ -16,9 +16,11 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
+import bpy
import ifcopenshell.util.element
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/clash/decorator.py b/src/bonsai/bonsai/bim/module/clash/decorator.py
index 91ecc1fc16..d1d0daf095 100644
--- a/src/bonsai/bonsai/bim/module/clash/decorator.py
+++ b/src/bonsai/bonsai/bim/module/clash/decorator.py
@@ -17,13 +17,14 @@
# along with Bonsai. If not, see .
import blf
-import gpu
import bmesh
-import bonsai.tool as tool
+import gpu
from bpy.types import SpaceView3D
-from mathutils import Vector
-from gpu_extras.batch import batch_for_shader
from bpy_extras.view3d_utils import location_3d_to_region_2d
+from gpu_extras.batch import batch_for_shader
+from mathutils import Vector
+
+import bonsai.tool as tool
class ClashDecorator:
diff --git a/src/bonsai/bonsai/bim/module/clash/operator.py b/src/bonsai/bonsai/bim/module/clash/operator.py
index 3463b8fc10..688568270f 100644
--- a/src/bonsai/bonsai/bim/module/clash/operator.py
+++ b/src/bonsai/bonsai/bim/module/clash/operator.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import json
-import tempfile
-import bmesh
import logging
-import numpy as np
-import ifcopenshell
-import bonsai.tool as tool
-from pathlib import Path
-from bpy_extras.io_utils import ExportHelper, ImportHelper
+import os
+import tempfile
from math import radians
+from pathlib import Path
+from typing import TYPE_CHECKING
+
+import bmesh
+import bpy
+import ifcopenshell
+import numpy as np
+from bpy_extras.io_utils import ExportHelper, ImportHelper
from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
from bonsai.bim.module.clash.decorator import ClashDecorator
-from typing import TYPE_CHECKING
class ExportClashSets(bpy.types.Operator, ExportHelper):
diff --git a/src/bonsai/bonsai/bim/module/clash/prop.py b/src/bonsai/bonsai/bim/module/clash/prop.py
index a7c6101b73..5f42a400e7 100644
--- a/src/bonsai/bonsai/bim/module/clash/prop.py
+++ b/src/bonsai/bonsai/bim/module/clash/prop.py
@@ -16,23 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute, BIMFilterGroup
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from ifcopenshell.geom.main import ClashType, CLASH_TYPE_ITEMS
+from bpy.types import PropertyGroup
+from ifcopenshell.geom.main import CLASH_TYPE_ITEMS, ClashType
from mathutils import Vector
-from typing import TYPE_CHECKING, Literal, Union
+
+import bonsai.tool as tool
+from bonsai.bim.prop import Attribute, BIMFilterGroup, StrProperty
class ClashSource(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/clash/ui.py b/src/bonsai/bonsai/bim/module/clash/ui.py
index 5e3711efe0..a6ef267d84 100644
--- a/src/bonsai/bonsai/bim/module/clash/ui.py
+++ b/src/bonsai/bonsai/bim/module/clash/ui.py
@@ -17,15 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.tool as tool
-import bonsai.bim.helper
-from bpy.types import Panel
-from bonsai.bim.module.clash.data import ClashData
+
from typing import TYPE_CHECKING, assert_never
+import bpy
+from bpy.types import Panel
+
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai.bim.module.clash.data import ClashData
+
if TYPE_CHECKING:
- from bonsai.bim.module.clash.prop import BIMClashProperties, ClashSet, SmartClashGroup, Clash
+ from bonsai.bim.module.clash.prop import (
+ BIMClashProperties,
+ Clash,
+ ClashSet,
+ SmartClashGroup,
+ )
class BIM_PT_ifcclash(Panel):
diff --git a/src/bonsai/bonsai/bim/module/classification/__init__.py b/src/bonsai/bonsai/bim/module/classification/__init__.py
index 6d33b50ee6..155bbdd6ee 100644
--- a/src/bonsai/bonsai/bim/module/classification/__init__.py
+++ b/src/bonsai/bonsai/bim/module/classification/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddClassification,
diff --git a/src/bonsai/bonsai/bim/module/classification/data.py b/src/bonsai/bonsai/bim/module/classification/data.py
index a1fa3a6d58..9685e8faa9 100644
--- a/src/bonsai/bonsai/bim/module/classification/data.py
+++ b/src/bonsai/bonsai/bim/module/classification/data.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any, Literal, Union
+
import bpy
import ifcopenshell
-import ifcopenshell.util.date
import ifcopenshell.util.classification
+import ifcopenshell.util.date
+
import bonsai.tool as tool
-from typing import Any, Literal, Union
from bonsai.bim.ifc import IfcStore
diff --git a/src/bonsai/bonsai/bim/module/classification/operator.py b/src/bonsai/bonsai/bim/module/classification/operator.py
index a6fd0c6df5..7bf699cc31 100644
--- a/src/bonsai/bonsai/bim/module/classification/operator.py
+++ b/src/bonsai/bonsai/bim/module/classification/operator.py
@@ -19,13 +19,14 @@
import bpy
import ifcopenshell
import ifcopenshell.api
-import ifcopenshell.api.pset
import ifcopenshell.api.classification
+import ifcopenshell.api.pset
import ifcopenshell.util.classification
import ifcopenshell.util.element
-import bonsai.tool as tool
-import bonsai.bim.helper
from bpy_extras.io_utils import ImportHelper
+
+import bonsai.bim.helper
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
diff --git a/src/bonsai/bonsai/bim/module/classification/prop.py b/src/bonsai/bonsai/bim/module/classification/prop.py
index 4e2de0119d..454f861f07 100644
--- a/src/bonsai/bonsai/bim/module/classification/prop.py
+++ b/src/bonsai/bonsai/bim/module/classification/prop.py
@@ -16,22 +16,27 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import Attribute
-from bonsai.bim.module.classification.data import ClassificationsData, ObjectClassificationsData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.classification.data import (
+ ClassificationsData,
+ ObjectClassificationsData,
+)
+from bonsai.bim.prop import Attribute
def get_available_classifications(
diff --git a/src/bonsai/bonsai/bim/module/classification/ui.py b/src/bonsai/bonsai/bim/module/classification/ui.py
index 077f97553f..77310be49a 100644
--- a/src/bonsai/bonsai/bim/module/classification/ui.py
+++ b/src/bonsai/bonsai/bim/module/classification/ui.py
@@ -17,24 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.bim.helper
-import bonsai.tool as tool
-import bonsai.bim.module.classification.prop as classification_prop
-import ifcopenshell.util.classification
-from bpy.types import Panel, UIList
-from bonsai.bim.module.classification.data import (
- ClassificationsData,
- ObjectClassificationsData,
- MaterialClassificationsData,
- CostClassificationsData,
- ZoneClassificationsData,
-)
from typing import TYPE_CHECKING, Any, Union
+import bpy
+import ifcopenshell.util.classification
+from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.bim.module.classification.prop as classification_prop
+import bonsai.tool as tool
+from bonsai.bim.module.classification.data import (
+ ClassificationsData,
+ CostClassificationsData,
+ MaterialClassificationsData,
+ ObjectClassificationsData,
+ ZoneClassificationsData,
+)
+
if TYPE_CHECKING:
- from bonsai.bim.module.classification.prop import BIMClassificationProperties, ClassificationReference
+ from bonsai.bim.module.classification.prop import (
+ BIMClassificationProperties,
+ ClassificationReference,
+ )
class BIM_PT_classifications(Panel):
diff --git a/src/bonsai/bonsai/bim/module/constraint/__init__.py b/src/bonsai/bonsai/bim/module/constraint/__init__.py
index 54b5183023..858c1da130 100644
--- a/src/bonsai/bonsai/bim/module/constraint/__init__.py
+++ b/src/bonsai/bonsai/bim/module/constraint/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.LoadObjectives,
diff --git a/src/bonsai/bonsai/bim/module/constraint/data.py b/src/bonsai/bonsai/bim/module/constraint/data.py
index 8a92de2c71..d44a7d2a55 100644
--- a/src/bonsai/bonsai/bim/module/constraint/data.py
+++ b/src/bonsai/bonsai/bim/module/constraint/data.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
from ifcopenshell.util.doc import get_entity_doc
+import bonsai.tool as tool
+
def refresh():
ConstraintsData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/constraint/operator.py b/src/bonsai/bonsai/bim/module/constraint/operator.py
index 4297642c3b..976f4ff6a3 100644
--- a/src/bonsai/bonsai/bim/module/constraint/operator.py
+++ b/src/bonsai/bonsai/bim/module/constraint/operator.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.constraint
+
import bonsai.bim.helper
import bonsai.tool as tool
-from typing import TYPE_CHECKING
def get_active_object(context: bpy.types.Context, obj_name: str) -> bpy.types.Object:
diff --git a/src/bonsai/bonsai/bim/module/constraint/prop.py b/src/bonsai/bonsai/bim/module/constraint/prop.py
index ec66f78211..c76d48e8a6 100644
--- a/src/bonsai/bonsai/bim/module/constraint/prop.py
+++ b/src/bonsai/bonsai/bim/module/constraint/prop.py
@@ -16,23 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal
+
import bpy
-from ifcopenshell.util.doc import get_entity_doc
-import bonsai.tool as tool
-from bonsai.bim.prop import Attribute
-from bonsai.bim.module.constraint.data import ConstraintsData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal
+from bpy.types import PropertyGroup
+from ifcopenshell.util.doc import get_entity_doc
+
+import bonsai.tool as tool
+from bonsai.bim.module.constraint.data import ConstraintsData
+from bonsai.bim.prop import Attribute
def get_available_constraint_types(self, context):
diff --git a/src/bonsai/bonsai/bim/module/constraint/ui.py b/src/bonsai/bonsai/bim/module/constraint/ui.py
index 61b335d782..5ab3d7c93c 100644
--- a/src/bonsai/bonsai/bim/module/constraint/ui.py
+++ b/src/bonsai/bonsai/bim/module/constraint/ui.py
@@ -17,14 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.tool as tool
-from bpy.types import Panel, UIList
-from bonsai.bim.helper import draw_attributes
-from bonsai.bim.module.constraint.data import ConstraintsData, ObjectConstraintsData
+
from typing import TYPE_CHECKING
+from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attributes
+from bonsai.bim.module.constraint.data import ConstraintsData, ObjectConstraintsData
+
if TYPE_CHECKING:
- from bonsai.bim.module.constraint.prop import BIMConstraintProperties, BIMObjectConstraintProperties, Constraint
+ from bonsai.bim.module.constraint.prop import (
+ BIMConstraintProperties,
+ BIMObjectConstraintProperties,
+ Constraint,
+ )
class BIM_PT_constraints(Panel):
diff --git a/src/bonsai/bonsai/bim/module/context/__init__.py b/src/bonsai/bonsai/bim/module/context/__init__.py
index 65665ae290..da24e53f55 100644
--- a/src/bonsai/bonsai/bim/module/context/__init__.py
+++ b/src/bonsai/bonsai/bim/module/context/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddContext,
diff --git a/src/bonsai/bonsai/bim/module/context/data.py b/src/bonsai/bonsai/bim/module/context/data.py
index c0b2143801..ade8061a4b 100644
--- a/src/bonsai/bonsai/bim/module/context/data.py
+++ b/src/bonsai/bonsai/bim/module/context/data.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-import ifcopenshell
from typing import Any
+import bpy
+import ifcopenshell
+
+import bonsai.tool as tool
+
def refresh():
ContextData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/context/operator.py b/src/bonsai/bonsai/bim/module/context/operator.py
index fbf1f17963..88483dfc0c 100644
--- a/src/bonsai/bonsai/bim/module/context/operator.py
+++ b/src/bonsai/bonsai/bim/module/context/operator.py
@@ -17,8 +17,9 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
+
import bonsai.core.context as core
+import bonsai.tool as tool
class AddContext(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/context/prop.py b/src/bonsai/bonsai/bim/module/context/prop.py
index 3a6f3c226f..ff73c53a5a 100644
--- a/src/bonsai/bonsai/bim/module/context/prop.py
+++ b/src/bonsai/bonsai/bim/module/context/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.context.data import ContextData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING
+from bpy.types import PropertyGroup
+
+from bonsai.bim.module.context.data import ContextData
+from bonsai.bim.prop import Attribute, StrProperty
class BIMContextProperties(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/context/ui.py b/src/bonsai/bonsai/bim/module/context/ui.py
index e8d0d337b4..3090da38fc 100644
--- a/src/bonsai/bonsai/bim/module/context/ui.py
+++ b/src/bonsai/bonsai/bim/module/context/ui.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.bim.helper
import bonsai.tool as tool
from bonsai.bim.module.context.data import ContextData
diff --git a/src/bonsai/bonsai/bim/module/cost/__init__.py b/src/bonsai/bonsai/bim/module/cost/__init__.py
index 6f42a71bf9..9378a68ee1 100644
--- a/src/bonsai/bonsai/bim/module/cost/__init__.py
+++ b/src/bonsai/bonsai/bim/module/cost/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddCostColumn,
diff --git a/src/bonsai/bonsai/bim/module/cost/data.py b/src/bonsai/bonsai/bim/module/cost/data.py
index 4b5198bb03..aab9ea9231 100644
--- a/src/bonsai/bonsai/bim/module/cost/data.py
+++ b/src/bonsai/bonsai/bim/module/cost/data.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any, Union
+
import bpy
import ifcopenshell
import ifcopenshell.util.cost
import ifcopenshell.util.date
import ifcopenshell.util.element
import ifcopenshell.util.unit
-import bonsai.tool as tool
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
-from typing import Any, Union
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/cost/operator.py b/src/bonsai/bonsai/bim/module/cost/operator.py
index 644871488c..48b672a2c2 100644
--- a/src/bonsai/bonsai/bim/module/cost/operator.py
+++ b/src/bonsai/bonsai/bim/module/cost/operator.py
@@ -18,16 +18,16 @@
# pyright: reportUnnecessaryTypeIgnoreComment=error
-import bpy
import textwrap
-import ifcopenshell.api.nest
-import bonsai.tool as tool
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-import bonsai.tool as tool
-import bonsai.core.cost as core
from pathlib import Path
+from typing import TYPE_CHECKING, Literal, get_args
-from typing import get_args, TYPE_CHECKING, Literal
+import bpy
+import ifcopenshell.api.nest
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
+import bonsai.core.cost as core
+import bonsai.tool as tool
class AddCostSchedule(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/cost/prop.py b/src/bonsai/bonsai/bim/module/cost/prop.py
index 3ce30e665e..121ca617e7 100644
--- a/src/bonsai/bonsai/bim/module/cost/prop.py
+++ b/src/bonsai/bonsai/bim/module/cost/prop.py
@@ -16,25 +16,31 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.cost
-import bonsai.tool as tool
-from bonsai.bim.module.classification.data import CostClassificationsData
-from bonsai.bim.module.cost.data import CostSchedulesData, CostItemRatesData, CostItemQuantitiesData
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.classification.data import CostClassificationsData
+from bonsai.bim.module.cost.data import (
+ CostItemQuantitiesData,
+ CostItemRatesData,
+ CostSchedulesData,
+)
+from bonsai.bim.prop import Attribute, StrProperty
def get_schedule_of_rates(self: "BIMCostProperties", context: bpy.types.Context) -> tool.Blender.BLENDER_ENUM_ITEMS:
diff --git a/src/bonsai/bonsai/bim/module/cost/ui.py b/src/bonsai/bonsai/bim/module/cost/ui.py
index e8eb58a855..73a578171f 100644
--- a/src/bonsai/bonsai/bim/module/cost/ui.py
+++ b/src/bonsai/bonsai/bim/module/cost/ui.py
@@ -17,13 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
import bpy
+from bpy.types import Panel, UIList
+
import bonsai.bim.helper
import bonsai.bim.module.cost.prop as CostProp
import bonsai.tool as tool
-from bpy.types import Panel, UIList
from bonsai.bim.module.cost.data import CostSchedulesData
-from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.cost.prop import BIMCostProperties, CostItemQuantity
diff --git a/src/bonsai/bonsai/bim/module/covering/__init__.py b/src/bonsai/bonsai/bim/module/covering/__init__.py
index 5e00a6dfbe..3cec5084c4 100644
--- a/src/bonsai/bonsai/bim/module/covering/__init__.py
+++ b/src/bonsai/bonsai/bim/module/covering/__init__.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
from . import prop, workspace
classes = (
diff --git a/src/bonsai/bonsai/bim/module/covering/prop.py b/src/bonsai/bonsai/bim/module/covering/prop.py
index 3dc65903aa..3655d50c9f 100644
--- a/src/bonsai/bonsai/bim/module/covering/prop.py
+++ b/src/bonsai/bonsai/bim/module/covering/prop.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
from bpy.types import PropertyGroup
-from typing import TYPE_CHECKING
class BIMCoveringProperties(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/covering/workspace.py b/src/bonsai/bonsai/bim/module/covering/workspace.py
index 3e44b0476d..68b2704166 100644
--- a/src/bonsai/bonsai/bim/module/covering/workspace.py
+++ b/src/bonsai/bonsai/bim/module/covering/workspace.py
@@ -18,13 +18,15 @@
import os
+from functools import partial
+
import bpy
import ifcopenshell
+from bpy.types import WorkSpaceTool
+
import bonsai.tool as tool
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.model.data import AuthoringData
-from bpy.types import WorkSpaceTool
-from functools import partial
class CoveringTool(WorkSpaceTool):
diff --git a/src/bonsai/bonsai/bim/module/covetool/__init__.py b/src/bonsai/bonsai/bim/module/covetool/__init__.py
index 6697f24301..beb75bb7af 100644
--- a/src/bonsai/bonsai/bim/module/covetool/__init__.py
+++ b/src/bonsai/bonsai/bim/module/covetool/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
prop.CoveToolProject,
diff --git a/src/bonsai/bonsai/bim/module/covetool/operator.py b/src/bonsai/bonsai/bim/module/covetool/operator.py
index cccb164611..fa298ada9c 100644
--- a/src/bonsai/bonsai/bim/module/covetool/operator.py
+++ b/src/bonsai/bonsai/bim/module/covetool/operator.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+from math import atan2, degrees
+
+import bpy
import ifcopenshell
import ifcopenshell.util.element
+
import bonsai.tool as tool
-from math import degrees, atan2
from .api import Api
diff --git a/src/bonsai/bonsai/bim/module/covetool/prop.py b/src/bonsai/bonsai/bim/module/covetool/prop.py
index 06444de29f..42e59466d9 100644
--- a/src/bonsai/bonsai/bim/module/covetool/prop.py
+++ b/src/bonsai/bonsai/bim/module/covetool/prop.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
from typing import TYPE_CHECKING
+import bpy
+
class CoveToolProject(bpy.types.PropertyGroup):
run_set: bpy.props.StringProperty(name="Run Set")
diff --git a/src/bonsai/bonsai/bim/module/covetool/ui.py b/src/bonsai/bonsai/bim/module/covetool/ui.py
index e26ac1338a..1a7015b139 100644
--- a/src/bonsai/bonsai/bim/module/covetool/ui.py
+++ b/src/bonsai/bonsai/bim/module/covetool/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy.types
-import bonsai.tool as tool
+
from typing import TYPE_CHECKING
+import bpy.types
+
+import bonsai.tool as tool
+
if TYPE_CHECKING:
- from bonsai.bim.module.covetool.prop import CoveToolProperties, CoveToolProject
+ from bonsai.bim.module.covetool.prop import CoveToolProject, CoveToolProperties
class BIM_PT_covetool(bpy.types.Panel):
diff --git a/src/bonsai/bonsai/bim/module/csv/__init__.py b/src/bonsai/bonsai/bim/module/csv/__init__.py
index 7a6b99906e..f544445b20 100644
--- a/src/bonsai/bonsai/bim/module/csv/__init__.py
+++ b/src/bonsai/bonsai/bim/module/csv/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddCsvAttribute,
diff --git a/src/bonsai/bonsai/bim/module/csv/operator.py b/src/bonsai/bonsai/bim/module/csv/operator.py
index 34e20f6d9c..d42e8d3852 100644
--- a/src/bonsai/bonsai/bim/module/csv/operator.py
+++ b/src/bonsai/bonsai/bim/module/csv/operator.py
@@ -17,20 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
+
import json
-import ifccsv
import logging
+import os
import tempfile
+from collections import Counter
+from typing import TYPE_CHECKING
+
+import bpy
+import ifccsv
import ifcopenshell
import ifcopenshell.util.selector
-import bonsai.tool as tool
-import bonsai.bim.module.drawing.scheduler as scheduler
from bpy_extras.io_utils import ExportHelper, ImportHelper
+
+import bonsai.bim.module.drawing.scheduler as scheduler
+import bonsai.tool as tool
from bonsai.bim.handler import refresh_ui_data
-from typing import TYPE_CHECKING
-from collections import Counter
if TYPE_CHECKING:
import pandas as pd
diff --git a/src/bonsai/bonsai/bim/module/csv/prop.py b/src/bonsai/bonsai/bim/module/csv/prop.py
index 371776bef2..a698f89b76 100644
--- a/src/bonsai/bonsai/bim/module/csv/prop.py
+++ b/src/bonsai/bonsai/bim/module/csv/prop.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal
+
import bpy
-from bonsai.bim.prop import StrProperty, BIMFilterGroup
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal
+from bpy.types import PropertyGroup
+
+from bonsai.bim.prop import BIMFilterGroup, StrProperty
class CsvAttribute(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/csv/ui.py b/src/bonsai/bonsai/bim/module/csv/ui.py
index a407efc7d1..c40be1b037 100644
--- a/src/bonsai/bonsai/bim/module/csv/ui.py
+++ b/src/bonsai/bonsai/bim/module/csv/ui.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from bpy.types import Panel
+
import bonsai.bim.helper
import bonsai.tool as tool
-from bpy.types import Panel
from bonsai.bim.module.search.data import SearchData
diff --git a/src/bonsai/bonsai/bim/module/debug/__init__.py b/src/bonsai/bonsai/bim/module/debug/__init__.py
index c01cf03275..bd3ecac4f6 100644
--- a/src/bonsai/bonsai/bim/module/debug/__init__.py
+++ b/src/bonsai/bonsai/bim/module/debug/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ChangeLogLevel,
diff --git a/src/bonsai/bonsai/bim/module/debug/operator.py b/src/bonsai/bonsai/bim/module/debug/operator.py
index 0820d5e3d6..6e30a3cc0f 100644
--- a/src/bonsai/bonsai/bim/module/debug/operator.py
+++ b/src/bonsai/bonsai/bim/module/debug/operator.py
@@ -16,14 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import sys
-import bpy
-import time
-import random
import logging
-import subprocess
+import os
import platform
+import random
+import subprocess
+import sys
+import time
+from collections import defaultdict
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, Union, assert_never, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
@@ -32,18 +36,16 @@ import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.unit
-import bonsai.tool as tool
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
+import bonsai.bim.handler
+import bonsai.bim.import_ifc as import_ifc
import bonsai.core.debug as core
import bonsai.core.profile
import bonsai.core.type
-import bonsai.bim.handler
-import bonsai.bim.import_ifc as import_ifc
-from collections import defaultdict
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from pathlib import Path
-from bonsai import get_debug_info, format_debug_info
+import bonsai.tool as tool
+from bonsai import format_debug_info, get_debug_info
from bonsai.bim.ifc import IfcStore
-from typing import get_args, Union, Any, TYPE_CHECKING, Literal, get_args, assert_never
if TYPE_CHECKING:
from bonsai.bim.prop import Attribute
diff --git a/src/bonsai/bonsai/bim/module/debug/prop.py b/src/bonsai/bonsai/bim/module/debug/prop.py
index 5a28b22f79..e52ec5ff7d 100644
--- a/src/bonsai/bonsai/bim/module/debug/prop.py
+++ b/src/bonsai/bonsai/bim/module/debug/prop.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, get_args
+
import bpy
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, get_args
+from bpy.types import PropertyGroup
+
+from bonsai.bim.prop import Attribute, StrProperty
DisplayType = Literal["BOUNDS", "WIRE", "SOLID", "TEXTURED"]
diff --git a/src/bonsai/bonsai/bim/module/debug/ui.py b/src/bonsai/bonsai/bim/module/debug/ui.py
index 58af7b9f72..5ffa99cf35 100644
--- a/src/bonsai/bonsai/bim/module/debug/ui.py
+++ b/src/bonsai/bonsai/bim/module/debug/ui.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
from bpy.types import Panel
+import bonsai.tool as tool
+
class BIM_PT_debug(Panel):
bl_label = "Debug"
diff --git a/src/bonsai/bonsai/bim/module/demo/__init__.py b/src/bonsai/bonsai/bim/module/demo/__init__.py
index 705e0be046..7dc5f18ff7 100644
--- a/src/bonsai/bonsai/bim/module/demo/__init__.py
+++ b/src/bonsai/bonsai/bim/module/demo/__init__.py
@@ -28,7 +28,8 @@
# system when the add-on loads. This is where it happens.
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
# You'll need to provide a list of every one of your classes here. If you forget
# to specify your class, it won't load and you won't be able to use that
diff --git a/src/bonsai/bonsai/bim/module/demo/operator.py b/src/bonsai/bonsai/bim/module/demo/operator.py
index 001c8de692..fb1927c9bd 100644
--- a/src/bonsai/bonsai/bim/module/demo/operator.py
+++ b/src/bonsai/bonsai/bim/module/demo/operator.py
@@ -28,8 +28,9 @@
# "Operators", since they correlate to a single user operation.
import bpy
-import bonsai.tool as tool
+
import bonsai.core.demo as core
+import bonsai.tool as tool
# Each button correlates to a class like the one below. In this case, we're
diff --git a/src/bonsai/bonsai/bim/module/demo/prop.py b/src/bonsai/bonsai/bim/module/demo/prop.py
index 83df8ccfda..f206fe3156 100644
--- a/src/bonsai/bonsai/bim/module/demo/prop.py
+++ b/src/bonsai/bonsai/bim/module/demo/prop.py
@@ -33,20 +33,20 @@
from typing import TYPE_CHECKING
import bpy
-from bpy.types import PropertyGroup
# Properties have many different data types. We won't use all of them in this
# demo module, but this is a list for your reference.
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
# All properties must belong in a property group. Usually, you'd have a group
diff --git a/src/bonsai/bonsai/bim/module/demo/ui.py b/src/bonsai/bonsai/bim/module/demo/ui.py
index 6005814cfa..cade6dbf03 100644
--- a/src/bonsai/bonsai/bim/module/demo/ui.py
+++ b/src/bonsai/bonsai/bim/module/demo/ui.py
@@ -27,6 +27,7 @@
# panels, buttons, labels, and input fields are laid out.
import bpy
+
import bonsai.tool as tool
from bonsai.bim.module.demo.data import DemoData
diff --git a/src/bonsai/bonsai/bim/module/diff/__init__.py b/src/bonsai/bonsai/bim/module/diff/__init__.py
index 2cfb1b3c7b..fdeaf49596 100644
--- a/src/bonsai/bonsai/bim/module/diff/__init__.py
+++ b/src/bonsai/bonsai/bim/module/diff/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ExecuteIfcDiff,
diff --git a/src/bonsai/bonsai/bim/module/diff/data.py b/src/bonsai/bonsai/bim/module/diff/data.py
index ac3e545f43..9fce7f38ba 100644
--- a/src/bonsai/bonsai/bim/module/diff/data.py
+++ b/src/bonsai/bonsai/bim/module/diff/data.py
@@ -16,8 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
+import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/diff/operator.py b/src/bonsai/bonsai/bim/module/diff/operator.py
index 954e43ac1e..330deed410 100644
--- a/src/bonsai/bonsai/bim/module/diff/operator.py
+++ b/src/bonsai/bonsai/bim/module/diff/operator.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
import logging
+
+import bpy
import ifcdiff
import ifcopenshell
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
import bonsai.bim.handler
import bonsai.bim.import_ifc
import bonsai.tool as tool
-from bpy_extras.io_utils import ImportHelper, ExportHelper
from bonsai.bim.ifc import IfcStore
diff --git a/src/bonsai/bonsai/bim/module/diff/prop.py b/src/bonsai/bonsai/bim/module/diff/prop.py
index 61da124a7c..c8f9d48c84 100644
--- a/src/bonsai/bonsai/bim/module/diff/prop.py
+++ b/src/bonsai/bonsai/bim/module/diff/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, get_args
+
import bpy
-from bonsai.bim.prop import StrProperty, BIMFilterGroup
-from bonsai.bim.module.diff.data import DiffData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, get_args
+from bpy.types import PropertyGroup
+
+from bonsai.bim.module.diff.data import DiffData
+from bonsai.bim.prop import BIMFilterGroup, StrProperty
def update_diff_json_file(self: "DiffProperties", context: bpy.types.Context) -> None:
diff --git a/src/bonsai/bonsai/bim/module/diff/ui.py b/src/bonsai/bonsai/bim/module/diff/ui.py
index 91e0a6b48e..383345e8b5 100644
--- a/src/bonsai/bonsai/bim/module/diff/ui.py
+++ b/src/bonsai/bonsai/bim/module/diff/ui.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
from bpy.types import Panel
-from bonsai.bim.module.diff.data import DiffData
+
import bonsai.bim.helper
import bonsai.tool as tool
+from bonsai.bim.module.diff.data import DiffData
class BIM_PT_diff(Panel):
diff --git a/src/bonsai/bonsai/bim/module/document/__init__.py b/src/bonsai/bonsai/bim/module/document/__init__.py
index 3881148a18..ac3bdfb1a3 100644
--- a/src/bonsai/bonsai/bim/module/document/__init__.py
+++ b/src/bonsai/bonsai/bim/module/document/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddDocumentReference,
diff --git a/src/bonsai/bonsai/bim/module/document/data.py b/src/bonsai/bonsai/bim/module/document/data.py
index b68c118e56..97b4a1f206 100644
--- a/src/bonsai/bonsai/bim/module/document/data.py
+++ b/src/bonsai/bonsai/bim/module/document/data.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
import ifcopenshell.util.schema
-import bonsai.tool as tool
from natsort import natsorted
+import bonsai.tool as tool
+
def refresh():
DocumentData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/document/operator.py b/src/bonsai/bonsai/bim/module/document/operator.py
index 447d3b1693..a4e5cfc4ac 100644
--- a/src/bonsai/bonsai/bim/module/document/operator.py
+++ b/src/bonsai/bonsai/bim/module/document/operator.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
+import bpy
+
import bonsai.bim.handler
-import bonsai.tool as tool
import bonsai.core.document as core
+import bonsai.tool as tool
from bonsai.bim.module.document.data import DocumentData, ObjectDocumentData
@@ -264,8 +266,8 @@ class OpenIFCDocument(bpy.types.Operator):
uri: bpy.props.StringProperty(name="URI")
def execute(self, context):
- import subprocess
import os
+ import subprocess
if not self.uri or not self.uri.lower().startswith("file://"):
self.report({"ERROR"}, "Only local file:// URIs are supported")
diff --git a/src/bonsai/bonsai/bim/module/document/prop.py b/src/bonsai/bonsai/bim/module/document/prop.py
index 93369b546d..b1eb41cc2e 100644
--- a/src/bonsai/bonsai/bim/module/document/prop.py
+++ b/src/bonsai/bonsai/bim/module/document/prop.py
@@ -1,20 +1,21 @@
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.document.data import refresh
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from bonsai.bim.module.document.data import DocumentData
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.document.data import DocumentData, refresh
+from bonsai.bim.prop import Attribute, StrProperty
def update_document_name(self: "Document", context: bpy.types.Context) -> None:
diff --git a/src/bonsai/bonsai/bim/module/document/ui.py b/src/bonsai/bonsai/bim/module/document/ui.py
index 7688399732..eda5d34a1d 100644
--- a/src/bonsai/bonsai/bim/module/document/ui.py
+++ b/src/bonsai/bonsai/bim/module/document/ui.py
@@ -17,8 +17,9 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
from bonsai.bim.helper import draw_attributes
from bonsai.bim.module.document.data import DocumentData, ObjectDocumentData
diff --git a/src/bonsai/bonsai/bim/module/drawing/__init__.py b/src/bonsai/bonsai/bim/module/drawing/__init__.py
index 93316a0d01..67a9ed0853 100644
--- a/src/bonsai/bonsai/bim/module/drawing/__init__.py
+++ b/src/bonsai/bonsai/bim/module/drawing/__init__.py
@@ -17,9 +17,11 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, handler, gizmos, workspace
+
import bonsai.tool as tool
+from . import gizmos, handler, operator, prop, ui, workspace
+
classes = (
operator.ActivateDrawing,
operator.ActivateDrawingFromSheet,
diff --git a/src/bonsai/bonsai/bim/module/drawing/annotation.py b/src/bonsai/bonsai/bim/module/drawing/annotation.py
index 9589b9ac00..18d914872a 100644
--- a/src/bonsai/bonsai/bim/module/drawing/annotation.py
+++ b/src/bonsai/bonsai/bim/module/drawing/annotation.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
+
import math
-import bmesh
-import bonsai.tool as tool
-import ifcopenshell.util.element
+import os
from pathlib import Path
-from mathutils import Vector, Matrix
from typing import Optional
+import bmesh
+import bpy
+import ifcopenshell.util.element
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
+
class Annotator:
@staticmethod
diff --git a/src/bonsai/bonsai/bim/module/drawing/data.py b/src/bonsai/bonsai/bim/module/drawing/data.py
index 4941e7f51c..ed457a7bbf 100644
--- a/src/bonsai/bonsai/bim/module/drawing/data.py
+++ b/src/bonsai/bonsai/bim/module/drawing/data.py
@@ -16,18 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import json
-import ifcopenshell.util.element
-import ifcopenshell.util.representation
-import ifcopenshell.util.unit
-import ifcopenshell.util.selector
-import bonsai.tool as tool
+import os
from pathlib import Path
from typing import Any, Union
+
+import bpy
+import ifcopenshell.util.element
+import ifcopenshell.util.representation
+import ifcopenshell.util.selector
+import ifcopenshell.util.unit
from natsort import natsorted
+import bonsai.tool as tool
+
def refresh():
ProductAssignmentsData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/drawing/decoration.py b/src/bonsai/bonsai/bim/module/drawing/decoration.py
index fc3b9ecbf6..0a6bc967bf 100644
--- a/src/bonsai/bonsai/bim/module/drawing/decoration.py
+++ b/src/bonsai/bonsai/bim/module/drawing/decoration.py
@@ -16,33 +16,35 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import gpu
-import bpy
-import blf
-import os
import math
+import os
+from collections.abc import Generator, Iterator
+from functools import cache
+from math import acos, atan, cos, degrees, pi, radians, sin
+from pathlib import Path
+from timeit import default_timer as timer
+from typing import Optional, Union
+
+import blf
import bmesh
-import shapely
-import numpy as np
+import bpy
+import gpu
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.bim.module.drawing.helper as helper
-from pathlib import Path
-from math import pi, sin, cos, acos, atan, degrees, radians
+import numpy as np
+import shapely
from bpy.types import SpaceView3D
-from mathutils import Vector, Matrix
from bpy_extras.view3d_utils import location_3d_to_region_2d
from gpu_extras.batch import batch_for_shader
+from mathutils import Matrix, Vector
+
+import bonsai.bim.module.drawing.helper as helper
+import bonsai.tool as tool
from bonsai.bim.module.drawing.data import DecoratorData, DrawingsData
-from bonsai.bim.module.drawing.shaders import add_verts_sequence, add_offsets
from bonsai.bim.module.drawing.helper import format_distance
-from timeit import default_timer as timer
-from functools import cache
-from typing import Optional, Union
-from collections.abc import Generator, Iterator
+from bonsai.bim.module.drawing.shaders import add_offsets, add_verts_sequence
UNSPECIAL_ELEMENT_COLOR = (0.2, 0.2, 0.2, 1) # GREY
diff --git a/src/bonsai/bonsai/bim/module/drawing/gizmos.py b/src/bonsai/bonsai/bim/module/drawing/gizmos.py
index 3b25a0b12a..6624d2010c 100644
--- a/src/bonsai/bonsai/bim/module/drawing/gizmos.py
+++ b/src/bonsai/bonsai/bim/module/drawing/gizmos.py
@@ -132,28 +132,32 @@ __all__ = [ # noqa: RUF022 (unsorted `__all__`)
"ExtrusionWidget",
]
-from typing import Any, Literal, Protocol, runtime_checkable, get_args
+import math
from collections.abc import Callable, Iterator
+from dataclasses import dataclass
from enum import Enum
+from typing import Any, Literal, Protocol, get_args, runtime_checkable
import blf
import bpy
import gpu
-import math
import numpy as np
from bpy import types
-from dataclasses import dataclass
-from mathutils import Vector, Matrix
-from mathutils.kdtree import KDTree
-from mathutils.geometry import intersect_line_line
-from bpy_extras.view3d_utils import region_2d_to_vector_3d, region_2d_to_origin_3d, location_3d_to_region_2d
from bpy_extras import view3d_utils
+from bpy_extras.view3d_utils import (
+ location_3d_to_region_2d,
+ region_2d_to_origin_3d,
+ region_2d_to_vector_3d,
+)
from gpu_extras.batch import batch_for_shader
-import bonsai.tool as tool
-from bonsai.tool.unit import parse_distance_string
-from bonsai.bim.module.drawing.shaders import ExtrusionGuidesShader
from ifcopenshell.util.unit import si_conversions
+from mathutils import Matrix, Vector
+from mathutils.geometry import intersect_line_line
+from mathutils.kdtree import KDTree
+import bonsai.tool as tool
+from bonsai.bim.module.drawing.shaders import ExtrusionGuidesShader
+from bonsai.tool.unit import parse_distance_string
SNAP_POINT_SIZE = 10.0
SNAP_POINT_COLOR = (1.0, 0.5, 0.0, 1.0)
diff --git a/src/bonsai/bonsai/bim/module/drawing/handler.py b/src/bonsai/bonsai/bim/module/drawing/handler.py
index 75bf62d506..026d274fb3 100644
--- a/src/bonsai/bonsai/bim/module/drawing/handler.py
+++ b/src/bonsai/bonsai/bim/module/drawing/handler.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
+from bpy.app.handlers import persistent
+
import bonsai.bim.module.drawing.decoration as decoration
import bonsai.tool as tool
-from bpy.app.handlers import persistent
@persistent
diff --git a/src/bonsai/bonsai/bim/module/drawing/helper.py b/src/bonsai/bonsai/bim/module/drawing/helper.py
index 4d99d6c91b..ee8ecf805d 100644
--- a/src/bonsai/bonsai/bim/module/drawing/helper.py
+++ b/src/bonsai/bonsai/bim/module/drawing/helper.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
-import ifcopenshell.util.element
-import mathutils.geometry
-import ifcopenshell
-import ifcopenshell.util.unit
-import bonsai.tool as tool
-from mathutils import Vector
from typing import Union
+import bpy
+import ifcopenshell
+import ifcopenshell.util.element
+import ifcopenshell.util.unit
+import mathutils.geometry
+from mathutils import Vector
+
+import bonsai.tool as tool
+
# Code taken and updated from https://blenderartists.org/t/detecting-intersection-of-bounding-boxes/457520/2
diff --git a/src/bonsai/bonsai/bim/module/drawing/operator.py b/src/bonsai/bonsai/bim/module/drawing/operator.py
index 936225099b..365ff90ee3 100644
--- a/src/bonsai/bonsai/bim/module/drawing/operator.py
+++ b/src/bonsai/bonsai/bim/module/drawing/operator.py
@@ -16,58 +16,73 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
-import json
-import re
-import time
-import bmesh
-import shutil
import hashlib
-import shapely
-import shapely.ops
-import subprocess
-import numpy as np
+import json
import multiprocessing
+import os
+import re
+import shutil
+import subprocess
+import time
+from math import radians
+from pathlib import Path
+from timeit import default_timer as timer
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Literal,
+ NamedTuple,
+ Optional,
+ TypedDict,
+ Union,
+ get_args,
+)
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.document
import ifcopenshell.api.pset
import ifcopenshell.api.style
-import ifcopenshell.ifcopenshell_wrapper
import ifcopenshell.geom
+import ifcopenshell.ifcopenshell_wrapper
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.selector
import ifcopenshell.util.unit
-import bonsai.bim.helper
+import numpy as np
+import shapely
+import shapely.ops
+from bpy_extras.image_utils import load_image
+from bpy_extras.io_utils import ImportHelper
+from lxml import etree
+from mathutils import Color, Matrix, Vector
+
+import bonsai.bim.export_ifc
import bonsai.bim.handler
-import bonsai.tool as tool
-import bonsai.core.geometry
-import bonsai.core.drawing as core
-import bonsai.bim.module.drawing.svgwriter as svgwriter
+import bonsai.bim.helper
import bonsai.bim.module.drawing.annotation as annotation
import bonsai.bim.module.drawing.sheeter as sheeter
-import bonsai.bim.export_ifc
-from bpy_extras.io_utils import ImportHelper
-from bonsai.bim.module.drawing.decoration import CutDecorator
+import bonsai.bim.module.drawing.svgwriter as svgwriter
+import bonsai.core.drawing as core
+import bonsai.core.geometry
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
from bonsai.bim.module.drawing.data import DecoratorData, ElementValuesData
+from bonsai.bim.module.drawing.decoration import CutDecorator
+from bonsai.bim.module.drawing.prop import (
+ RASTER_STYLE_PROPERTIES_EXCLUDE,
+ RasterStyleProperty,
+)
from bonsai.bim.module.drawing.ui import get_current_product_for_element_values
from bonsai.bim.prop import StrProperty
-from typing import NamedTuple, Union, Optional, Literal, TYPE_CHECKING, Any, TypedDict, get_args
-from lxml import etree
-from math import radians
-from mathutils import Vector, Color, Matrix
-from timeit import default_timer as timer
-from bonsai.bim.module.drawing.prop import RasterStyleProperty, RASTER_STYLE_PROPERTIES_EXCLUDE
-from bonsai.bim.ifc import IfcStore
-from pathlib import Path
-from bpy_extras.image_utils import load_image
if TYPE_CHECKING:
+ from bpy.stub_internal import rna_enums
+
from bonsai.bim.module.drawing.prop import RenderType
from bonsai.bim.module.project.prop import Link
- from bpy.stub_internal import rna_enums
cwd = os.path.dirname(os.path.realpath(__file__))
diff --git a/src/bonsai/bonsai/bim/module/drawing/prop.py b/src/bonsai/bonsai/bim/module/drawing/prop.py
index 018c0a634a..3b7040bc02 100644
--- a/src/bonsai/bonsai/bim/module/drawing/prop.py
+++ b/src/bonsai/bonsai/bim/module/drawing/prop.py
@@ -16,39 +16,45 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
-import json
import enum
+import json
+import os
+from collections.abc import Callable
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, Union, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
import ifcopenshell.util.element
-import bonsai.tool as tool
-import bonsai.core.drawing as core
-import bonsai.bim.module.drawing.annotation as annotation
-import bonsai.bim.module.drawing.decoration as decoration
-from mathutils import Matrix
-from bonsai.bim.prop import BIMFilterGroup
-from bonsai.bim.module.drawing.data import DrawingsData, DecoratorData, SheetsData, AnnotationData, ElementValuesData
-from bonsai.bim.module.drawing.data import refresh as refresh_drawing_data
-from pathlib import Path
-from bonsai.bim.prop import Attribute, StrProperty
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ BoolVectorProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
- BoolVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, Any, get_args, Union
-from collections.abc import Callable
+from bpy.types import PropertyGroup
+from mathutils import Matrix
+import bonsai.bim.module.drawing.annotation as annotation
+import bonsai.bim.module.drawing.decoration as decoration
+import bonsai.core.drawing as core
+import bonsai.tool as tool
+from bonsai.bim.module.drawing.data import (
+ AnnotationData,
+ DecoratorData,
+ DrawingsData,
+ ElementValuesData,
+ SheetsData,
+)
+from bonsai.bim.module.drawing.data import refresh as refresh_drawing_data
+from bonsai.bim.prop import Attribute, BIMFilterGroup, StrProperty
diagram_scales_enum = []
diff --git a/src/bonsai/bonsai/bim/module/drawing/scheduler.py b/src/bonsai/bonsai/bim/module/drawing/scheduler.py
index da80a46126..3b120e8d99 100644
--- a/src/bonsai/bonsai/bim/module/drawing/scheduler.py
+++ b/src/bonsai/bonsai/bim/module/drawing/scheduler.py
@@ -18,22 +18,23 @@
import os
import re
-import bpy
import string
-import svgwrite
+from pathlib import Path
+from textwrap import wrap
+
+import bpy
import openpyxl
import openpyxl.cell # Unnecessary, bug in typeshed.
import openpyxl.utils # Unnecessary, bug in typeshed.
-import bonsai.tool as tool
-
-from bonsai.bim.module.drawing.svgwriter import SvgWriter
+import svgwrite
from odf.opendocument import load as load_ods
-from odf.table import Table, TableRow, TableColumn, TableCell
-from odf.text import P
from odf.style import Style
-from textwrap import wrap
-from pathlib import Path
+from odf.table import Table, TableCell, TableColumn, TableRow
+from odf.text import P
+
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.drawing.svgwriter import SvgWriter
DEBUG = False
diff --git a/src/bonsai/bonsai/bim/module/drawing/shaders.py b/src/bonsai/bonsai/bim/module/drawing/shaders.py
index 020fc53147..2efd6ea285 100644
--- a/src/bonsai/bonsai/bim/module/drawing/shaders.py
+++ b/src/bonsai/bonsai/bim/module/drawing/shaders.py
@@ -16,11 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-from gpu_extras.batch import batch_for_shader
import gpu
+from gpu_extras.batch import batch_for_shader
from mathutils import Vector
-
# NOTES:
# Since Metal doesn't support geometry shaders we stick to builtin shaders
# and generate all geometry data in python before passing it to the shader.
diff --git a/src/bonsai/bonsai/bim/module/drawing/sheeter.py b/src/bonsai/bonsai/bim/module/drawing/sheeter.py
index a3ec74159a..7d8ebb67f4 100644
--- a/src/bonsai/bonsai/bim/module/drawing/sheeter.py
+++ b/src/bonsai/bonsai/bim/module/drawing/sheeter.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
-import uuid
-import shutil
import ntpath
-import pystache
+import os
+import re
+import shutil
import urllib.parse
+import uuid
import xml.etree.ElementTree as ET
-import bonsai.tool as tool
-import ifcopenshell.util.geolocation
from pathlib import Path
from xml.dom import minidom
+
+import bpy
+import ifcopenshell.util.geolocation
+import pystache
from mathutils import Vector
-import re
+
+import bonsai.tool as tool
VIEW_TITLE_OFFSET_Y = 5
DRAWING_PADDING = 10
diff --git a/src/bonsai/bonsai/bim/module/drawing/svgwriter.py b/src/bonsai/bonsai/bim/module/drawing/svgwriter.py
index d1a3897a20..dac8e54a61 100644
--- a/src/bonsai/bonsai/bim/module/drawing/svgwriter.py
+++ b/src/bonsai/bonsai/bim/module/drawing/svgwriter.py
@@ -16,33 +16,34 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import math
import os
import re
-import bpy
-import math
-import bmesh
import shutil
-from bpy.types import SplineBezierPoints, SplinePoints
-import mathutils
import xml.etree.ElementTree as ET
-import svgwrite
-import svgwrite.container
-import svgwrite.text
+from collections.abc import Callable, Sequence
+from math import acos, atan, ceil, degrees, pi
+from pathlib import Path
+from typing import Optional, Self, Union
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.selector
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.bim.module.drawing.helper as helper
-from bonsai.bim.module.drawing.data import DrawingsData
-from bonsai.bim.module.drawing.data import DecoratorData
-from math import pi, ceil, atan, degrees, acos
-from mathutils import geometry, Vector
-from typing import Optional, Self, Union
-from collections.abc import Callable, Sequence
-from pathlib import Path
+import mathutils
+import svgwrite
+import svgwrite.container
+import svgwrite.text
+from bpy.types import SplineBezierPoints, SplinePoints
from markdown_it import MarkdownIt
+from mathutils import Vector, geometry
+
+import bonsai.bim.module.drawing.helper as helper
+import bonsai.tool as tool
+from bonsai.bim.module.drawing.data import DecoratorData, DrawingsData
class External(svgwrite.container.Group):
diff --git a/src/bonsai/bonsai/bim/module/drawing/ui.py b/src/bonsai/bonsai/bim/module/drawing/ui.py
index d230add8f5..45ae50beb4 100644
--- a/src/bonsai/bonsai/bim/module/drawing/ui.py
+++ b/src/bonsai/bonsai/bim/module/drawing/ui.py
@@ -17,20 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Optional, Union
+
import bpy
+from bpy.types import Panel
+
import bonsai.bim.helper
import bonsai.tool as tool
-from bpy.types import Panel
from bonsai.bim.module.drawing.data import (
- ProductAssignmentsData,
- SheetsData,
+ DecoratorData,
DocumentsData,
DrawingsData,
ElementFiltersData,
- DecoratorData,
ElementValuesData,
+ ProductAssignmentsData,
+ SheetsData,
)
-from typing import TYPE_CHECKING, Union, Optional
if TYPE_CHECKING:
from bonsai.bim.module.drawing.prop import DocProperties, Drawing, Sheet
diff --git a/src/bonsai/bonsai/bim/module/drawing/workspace.py b/src/bonsai/bonsai/bim/module/drawing/workspace.py
index ae593d0873..5796c20303 100644
--- a/src/bonsai/bonsai/bim/module/drawing/workspace.py
+++ b/src/bonsai/bonsai/bim/module/drawing/workspace.py
@@ -18,18 +18,20 @@
import os
+from functools import partial
+
import bpy
import ifcopenshell.api.group
import ifcopenshell.util.element
+import ifcopenshell.util.representation
+from bpy.types import WorkSpaceTool
+
+import bonsai.core.drawing as core
import bonsai.core.geometry
import bonsai.core.type
-import bonsai.core.drawing as core
import bonsai.tool as tool
-import ifcopenshell.util.representation
-from bonsai.bim.module.drawing.data import DecoratorData, AnnotationData
from bonsai.bim.helper import prop_with_search
-from bpy.types import WorkSpaceTool
-from functools import partial
+from bonsai.bim.module.drawing.data import AnnotationData, DecoratorData
class LaunchAnnotationTypeManager(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/fm/__init__.py b/src/bonsai/bonsai/bim/module/fm/__init__.py
index dc26a6379c..5b54adb71b 100644
--- a/src/bonsai/bonsai/bim/module/fm/__init__.py
+++ b/src/bonsai/bonsai/bim/module/fm/__init__.py
@@ -19,7 +19,8 @@
# pyright: reportAttributeAccessIssue=false
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ExecuteIfcFM,
diff --git a/src/bonsai/bonsai/bim/module/fm/data.py b/src/bonsai/bonsai/bim/module/fm/data.py
index fa4a9c4c6a..80a686e364 100644
--- a/src/bonsai/bonsai/bim/module/fm/data.py
+++ b/src/bonsai/bonsai/bim/module/fm/data.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import ifcfm
import importlib
+import os
+
+import ifcfm
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/fm/operator.py b/src/bonsai/bonsai/bim/module/fm/operator.py
index cda36598db..629251282a 100644
--- a/src/bonsai/bonsai/bim/module/fm/operator.py
+++ b/src/bonsai/bonsai/bim/module/fm/operator.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import json
-import ifcfm
import logging
+import os
import tempfile
+
+import bpy
+import ifcfm
import ifcopenshell
-import bonsai.tool as tool
from bpy_extras.io_utils import ExportHelper, ImportHelper
+import bonsai.tool as tool
+
class ExecuteIfcFM(bpy.types.Operator, ExportHelper):
bl_idname = "bim.execute_ifcfm"
diff --git a/src/bonsai/bonsai/bim/module/fm/prop.py b/src/bonsai/bonsai/bim/module/fm/prop.py
index 25db89224f..2eb1ae4739 100644
--- a/src/bonsai/bonsai/bim/module/fm/prop.py
+++ b/src/bonsai/bonsai/bim/module/fm/prop.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal
+
import bpy
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
import bonsai.tool as tool
from bonsai.bim.module.fm.data import FMData
from bonsai.bim.prop import MultipleFileSelect, StrProperty
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-from typing import TYPE_CHECKING, Literal
def get_engine(self: "BIMFMProperties", context: object) -> tool.Blender.BLENDER_ENUM_ITEMS:
diff --git a/src/bonsai/bonsai/bim/module/fm/ui.py b/src/bonsai/bonsai/bim/module/fm/ui.py
index fa889c61fd..69e51ea6dc 100644
--- a/src/bonsai/bonsai/bim/module/fm/ui.py
+++ b/src/bonsai/bonsai/bim/module/fm/ui.py
@@ -16,8 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bonsai.tool as tool
from bpy.types import Panel
+
+import bonsai.tool as tool
from bonsai.bim.module.fm.data import FMData
diff --git a/src/bonsai/bonsai/bim/module/geometry/__init__.py b/src/bonsai/bonsai/bim/module/geometry/__init__.py
index de9a75fbc7..bc64947436 100644
--- a/src/bonsai/bonsai/bim/module/geometry/__init__.py
+++ b/src/bonsai/bonsai/bim/module/geometry/__init__.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-from . import ui, prop, operator
-from bpy.app.handlers import persistent
-import ifcopenshell.util.element
import math
+import bpy
+import ifcopenshell.util.element
+from bpy.app.handlers import persistent
+
+from . import operator, prop, ui
+
classes = (
operator.AddCurvelikeItem,
operator.AddHalfSpaceSolidItem,
diff --git a/src/bonsai/bonsai/bim/module/geometry/data.py b/src/bonsai/bonsai/bim/module/geometry/data.py
index 2e7d6c4205..05344ab87e 100644
--- a/src/bonsai/bonsai/bim/module/geometry/data.py
+++ b/src/bonsai/bonsai/bim/module/geometry/data.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any, Union
+
import bpy
import ifcopenshell.util.element
import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import bonsai.tool as tool
-from typing import Any, Union
from mathutils import Vector
+import bonsai.tool as tool
+
def refresh():
ViewportData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/geometry/decorator.py b/src/bonsai/bonsai/bim/module/geometry/decorator.py
index 02cb4bd255..c5a82c1d59 100644
--- a/src/bonsai/bonsai/bim/module/geometry/decorator.py
+++ b/src/bonsai/bonsai/bim/module/geometry/decorator.py
@@ -16,18 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from collections.abc import Sequence
+
import blf
-import gpu
import bmesh
+import bpy
+import gpu
import ifcopenshell
-import bonsai.tool as tool
import numpy as np
from bpy.types import SpaceView3D
-from mathutils import Vector, Matrix
-from gpu_extras.batch import batch_for_shader
from bpy_extras.view3d_utils import location_3d_to_region_2d
-from collections.abc import Sequence
+from gpu_extras.batch import batch_for_shader
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
class ItemDecorator:
diff --git a/src/bonsai/bonsai/bim/module/geometry/helper.py b/src/bonsai/bonsai/bim/module/geometry/helper.py
index 7f70df4b96..511669d60d 100644
--- a/src/bonsai/bonsai/bim/module/geometry/helper.py
+++ b/src/bonsai/bonsai/bim/module/geometry/helper.py
@@ -16,19 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from math import pi, pow
+from typing import Any, Optional, TypeVar, Union
+
import bmesh
-import shapely
+import bpy
+import ifcopenshell
+import ifcopenshell.util.shape
+import ifcopenshell.util.unit
import mathutils
import numpy as np
-import ifcopenshell
-import ifcopenshell.util.unit
-import ifcopenshell.util.shape
-import bonsai.tool as tool
-from math import pi, pow
-from mathutils import Vector, Matrix, geometry
-from typing import Union, Any, TypeVar, Optional
+import shapely
from ifcopenshell.util.shape_builder import ShapeBuilder
+from mathutils import Matrix, Vector, geometry
+
+import bonsai.tool as tool
T = TypeVar("T")
diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py
index a35a4de7bc..a03c6ae19c 100644
--- a/src/bonsai/bonsai/bim/module/geometry/operator.py
+++ b/src/bonsai/bonsai/bim/module/geometry/operator.py
@@ -17,17 +17,30 @@
# along with Bonsai. If not, see .
import re
-import bpy
+from collections.abc import Sequence
+from time import time
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Literal,
+ NamedTuple,
+ Union,
+ assert_never,
+ get_args,
+)
+
import bmesh
-import numpy as np
-import numpy.typing as npt
+import bpy
import ifcopenshell
+import ifcopenshell.api
+import ifcopenshell.api.boundary
import ifcopenshell.api.drawing
-import ifcopenshell.api.group
-import ifcopenshell.api.pset
import ifcopenshell.api.geometry
+import ifcopenshell.api.grid
+import ifcopenshell.api.group
import ifcopenshell.api.layer
import ifcopenshell.api.material
+import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.util.element
@@ -35,26 +48,23 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
import ifcopenshell.util.unit
-import ifcopenshell.api
-import ifcopenshell.api.boundary
-import ifcopenshell.api.grid
+import numpy as np
+import numpy.typing as npt
+from ifcopenshell.util.shape_builder import ShapeBuilder
+from mathutils import Matrix, Quaternion, Vector
+
+import bonsai.bim.handler
+import bonsai.core.aggregate
+import bonsai.core.drawing
import bonsai.core.geometry
import bonsai.core.geometry as core
-import bonsai.core.aggregate
import bonsai.core.nest
+import bonsai.core.root
import bonsai.core.spatial
import bonsai.core.style
-import bonsai.core.root
-import bonsai.core.drawing
import bonsai.tool as tool
-import bonsai.bim.handler
-from bonsai.bim.module.model.data import AuthoringData
-from mathutils import Vector, Matrix, Quaternion
-from time import time
from bonsai.bim.ifc import IfcStore
-from ifcopenshell.util.shape_builder import ShapeBuilder
-from collections.abc import Sequence
-from typing import Any, Union, Literal, get_args, TYPE_CHECKING, assert_never, NamedTuple
+from bonsai.bim.module.model.data import AuthoringData
from bonsai.bim.module.model.decorator import ProfileDecorator
if TYPE_CHECKING:
diff --git a/src/bonsai/bonsai/bim/module/geometry/prop.py b/src/bonsai/bonsai/bim/module/geometry/prop.py
index 1f8e00c11b..5336eef1c0 100644
--- a/src/bonsai/bonsai/bim/module/geometry/prop.py
+++ b/src/bonsai/bonsai/bim/module/geometry/prop.py
@@ -16,23 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import ifcopenshell
+from typing import TYPE_CHECKING, Literal, Optional, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute, ObjProperty
-from bonsai.bim.module.geometry.data import RepresentationsData, ViewportData
-from bpy.types import PropertyGroup
+import ifcopenshell
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import Optional, TYPE_CHECKING, Union, Literal
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.geometry.data import RepresentationsData, ViewportData
+from bonsai.bim.prop import Attribute, ObjProperty, StrProperty
def get_contexts(self: "BIMObjectGeometryProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/geometry/ui.py b/src/bonsai/bonsai/bim/module/geometry/ui.py
index c4ae6e5491..2af216c7a1 100644
--- a/src/bonsai/bonsai/bim/module/geometry/ui.py
+++ b/src/bonsai/bonsai/bim/module/geometry/ui.py
@@ -17,16 +17,17 @@
# along with Bonsai. If not, see .
import bpy
+from bpy.types import Menu, Panel, UIList
+
import bonsai.bim
import bonsai.tool as tool
-from bpy.types import Panel, Menu, UIList
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.geometry.data import (
- RepresentationsData,
- RepresentationItemsData,
ConnectionsData,
- PlacementData,
DerivedCoordinatesData,
+ PlacementData,
+ RepresentationItemsData,
+ RepresentationsData,
)
from bonsai.bim.module.layer.data import LayersData
diff --git a/src/bonsai/bonsai/bim/module/georeference/__init__.py b/src/bonsai/bonsai/bim/module/georeference/__init__.py
index 407cd8fead..39ee8f4143 100644
--- a/src/bonsai/bonsai/bim/module/georeference/__init__.py
+++ b/src/bonsai/bonsai/bim/module/georeference/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddGeoreferencing,
diff --git a/src/bonsai/bonsai/bim/module/georeference/data.py b/src/bonsai/bonsai/bim/module/georeference/data.py
index 059368abc7..cf86314f9a 100644
--- a/src/bonsai/bonsai/bim/module/georeference/data.py
+++ b/src/bonsai/bonsai/bim/module/georeference/data.py
@@ -18,14 +18,15 @@
import bpy
-import numpy as np
-import bonsai.tool as tool
import ifcopenshell.util.element
import ifcopenshell.util.geolocation
import ifcopenshell.util.schema
import ifcopenshell.util.unit
-from mathutils import Matrix, Vector
+import numpy as np
from ifcopenshell.util.doc import get_entity_doc
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/georeference/decorator.py b/src/bonsai/bonsai/bim/module/georeference/decorator.py
index 01818e9805..6cece45cc8 100644
--- a/src/bonsai/bonsai/bim/module/georeference/decorator.py
+++ b/src/bonsai/bonsai/bim/module/georeference/decorator.py
@@ -16,18 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from math import radians
+
import blf
-import gpu
import bmesh
+import bpy
+import gpu
import ifcopenshell
import ifcopenshell.util.geolocation
-import bonsai.tool as tool
-from math import radians
from bpy.types import SpaceView3D
-from mathutils import Vector, Matrix
-from gpu_extras.batch import batch_for_shader
from bpy_extras.view3d_utils import location_3d_to_region_2d
+from gpu_extras.batch import batch_for_shader
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.georeference.data import GeoreferenceData
diff --git a/src/bonsai/bonsai/bim/module/georeference/operator.py b/src/bonsai/bonsai/bim/module/georeference/operator.py
index 7d8f98dd6c..6c82e6684c 100644
--- a/src/bonsai/bonsai/bim/module/georeference/operator.py
+++ b/src/bonsai/bonsai/bim/module/georeference/operator.py
@@ -17,10 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-
-import bonsai.tool as tool
-import bonsai.core.georeference as core
from bpy_extras.io_utils import ImportHelper
+
+import bonsai.core.georeference as core
+import bonsai.tool as tool
from bonsai.bim.module.georeference.decorator import GeoreferenceDecorator
diff --git a/src/bonsai/bonsai/bim/module/georeference/prop.py b/src/bonsai/bonsai/bim/module/georeference/prop.py
index 1b6088556b..5a1a37f06f 100644
--- a/src/bonsai/bonsai/bim/module/georeference/prop.py
+++ b/src/bonsai/bonsai/bim/module/georeference/prop.py
@@ -16,24 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.util.geolocation
-import bonsai.tool as tool
-from bonsai.bim.prop import Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
from bonsai.bim.module.georeference.data import GeoreferenceData
from bonsai.bim.module.georeference.decorator import GeoreferenceDecorator
-from typing import TYPE_CHECKING
+from bonsai.bim.prop import Attribute
def get_coordinate_operation_class(
diff --git a/src/bonsai/bonsai/bim/module/georeference/ui.py b/src/bonsai/bonsai/bim/module/georeference/ui.py
index 3dfec3a9f5..93e16b0fbe 100644
--- a/src/bonsai/bonsai/bim/module/georeference/ui.py
+++ b/src/bonsai/bonsai/bim/module/georeference/ui.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bonsai.tool as tool
from bpy.types import Panel
-from bonsai.bim.helper import draw_attributes, draw_attribute
+
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attribute, draw_attributes
from bonsai.bim.module.georeference.data import GeoreferenceData
diff --git a/src/bonsai/bonsai/bim/module/gis/__init__.py b/src/bonsai/bonsai/bim/module/gis/__init__.py
index 4f0707c693..2e0eeecad3 100644
--- a/src/bonsai/bonsai/bim/module/gis/__init__.py
+++ b/src/bonsai/bonsai/bim/module/gis/__init__.py
@@ -17,9 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import prop
-from . import operator
-from . import ui
+
+from . import operator, prop, ui
classes = (
prop.BIMCityJsonProperties,
diff --git a/src/bonsai/bonsai/bim/module/gis/prop.py b/src/bonsai/bonsai/bim/module/gis/prop.py
index bbf12aeb07..1e6ae61614 100644
--- a/src/bonsai/bonsai/bim/module/gis/prop.py
+++ b/src/bonsai/bonsai/bim/module/gis/prop.py
@@ -16,8 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from bpy.props import BoolProperty, CollectionProperty, EnumProperty, StringProperty
from bpy.types import PropertyGroup
-from bpy.props import StringProperty, BoolProperty, EnumProperty, CollectionProperty
+
from bonsai.bim.prop import StrProperty
diff --git a/src/bonsai/bonsai/bim/module/group/__init__.py b/src/bonsai/bonsai/bim/module/group/__init__.py
index 86e8536672..6fd4ed5408 100644
--- a/src/bonsai/bonsai/bim/module/group/__init__.py
+++ b/src/bonsai/bonsai/bim/module/group/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddGroup,
diff --git a/src/bonsai/bonsai/bim/module/group/data.py b/src/bonsai/bonsai/bim/module/group/data.py
index 60b97e77f0..c7be2ff393 100644
--- a/src/bonsai/bonsai/bim/module/group/data.py
+++ b/src/bonsai/bonsai/bim/module/group/data.py
@@ -20,6 +20,7 @@ import bpy
import ifcopenshell
import ifcopenshell.util.cost
import ifcopenshell.util.element
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/group/operator.py b/src/bonsai/bonsai/bim/module/group/operator.py
index 40c3e418a1..66872ed90a 100644
--- a/src/bonsai/bonsai/bim/module/group/operator.py
+++ b/src/bonsai/bonsai/bim/module/group/operator.py
@@ -16,13 +16,15 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, get_args
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.group
import ifcopenshell.util.element
+
import bonsai.bim.helper
import bonsai.tool as tool
-from typing import TYPE_CHECKING, Literal, get_args
class LoadGroups(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/group/prop.py b/src/bonsai/bonsai/bim/module/group/prop.py
index e96f6f8a2a..48bff62e35 100644
--- a/src/bonsai/bonsai/bim/module/group/prop.py
+++ b/src/bonsai/bonsai/bim/module/group/prop.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.pset.data import refresh as refresh_pset
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.pset.data import refresh as refresh_pset
+from bonsai.bim.prop import Attribute, StrProperty
def update_active_group_index(self, context):
diff --git a/src/bonsai/bonsai/bim/module/group/ui.py b/src/bonsai/bonsai/bim/module/group/ui.py
index ac437e9c42..a9620c8ffc 100644
--- a/src/bonsai/bonsai/bim/module/group/ui.py
+++ b/src/bonsai/bonsai/bim/module/group/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
-import bonsai.tool as tool
from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
from bonsai.bim.helper import draw_attributes
from bonsai.bim.module.group.data import GroupsData, ObjectGroupsData
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.group.prop import BIMGroupProperties, Group
diff --git a/src/bonsai/bonsai/bim/module/ifcgit/__init__.py b/src/bonsai/bonsai/bim/module/ifcgit/__init__.py
index ae946e4e9d..df47b7774c 100644
--- a/src/bonsai/bonsai/bim/module/ifcgit/__init__.py
+++ b/src/bonsai/bonsai/bim/module/ifcgit/__init__.py
@@ -16,8 +16,8 @@
# Massimo Fabbro
import bpy
-from . import ui, prop, operator
+from . import operator, prop, ui
classes = (
operator.AddFileToRepo,
diff --git a/src/bonsai/bonsai/bim/module/ifcgit/data.py b/src/bonsai/bonsai/bim/module/ifcgit/data.py
index 18ffe0e55c..9cb9f2655d 100644
--- a/src/bonsai/bonsai/bim/module/ifcgit/data.py
+++ b/src/bonsai/bonsai/bim/module/ifcgit/data.py
@@ -1,7 +1,8 @@
-import bpy
import os
import shutil
+import bpy
+
# import tool
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/ifcgit/operator.py b/src/bonsai/bonsai/bim/module/ifcgit/operator.py
index 8457c69fc7..829a0a62a2 100644
--- a/src/bonsai/bonsai/bim/module/ifcgit/operator.py
+++ b/src/bonsai/bonsai/bim/module/ifcgit/operator.py
@@ -1,10 +1,12 @@
import os
import re
+from typing import TYPE_CHECKING
+
import bpy
+
import bonsai.core.ifcgit as core
import bonsai.tool as tool
from bonsai.bim.module.ifcgit.data import IfcGitData, refresh
-from typing import TYPE_CHECKING
class CreateRepo(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/ifcgit/prop.py b/src/bonsai/bonsai/bim/module/ifcgit/prop.py
index 128cfcd44b..cba3ca632c 100644
--- a/src/bonsai/bonsai/bim/module/ifcgit/prop.py
+++ b/src/bonsai/bonsai/bim/module/ifcgit/prop.py
@@ -1,15 +1,17 @@
+from typing import TYPE_CHECKING, Literal
+
import bpy
-import bonsai.tool as tool
-from bpy.types import PropertyGroup
from bpy.props import (
- StringProperty,
BoolProperty,
CollectionProperty,
- IntProperty,
EnumProperty,
+ IntProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
from bonsai.bim.module.ifcgit.data import IfcGitData
-from typing import TYPE_CHECKING, Literal
def git_branches(self: "IfcGitProperties", context: bpy.types.Context) -> tool.Blender.BLENDER_ENUM_ITEMS:
diff --git a/src/bonsai/bonsai/bim/module/ifcgit/ui.py b/src/bonsai/bonsai/bim/module/ifcgit/ui.py
index 631f33c7e1..d8b7357e7b 100644
--- a/src/bonsai/bonsai/bim/module/ifcgit/ui.py
+++ b/src/bonsai/bonsai/bim/module/ifcgit/ui.py
@@ -1,15 +1,17 @@
from __future__ import annotations
-import bpy
-import time
+
import os
import platform
-import bonsai.tool as tool
+import time
from typing import TYPE_CHECKING
+import bpy
+
+import bonsai.tool as tool
from bonsai.bim.module.ifcgit.data import IfcGitData
if TYPE_CHECKING:
- from bonsai.bim.module.ifcgit.prop import IfcGitProperties, IfcGitListItem
+ from bonsai.bim.module.ifcgit.prop import IfcGitListItem, IfcGitProperties
class IFCGIT_PT_panel(bpy.types.Panel):
diff --git a/src/bonsai/bonsai/bim/module/layer/__init__.py b/src/bonsai/bonsai/bim/module/layer/__init__.py
index 9ee1c57fb4..06d5175833 100644
--- a/src/bonsai/bonsai/bim/module/layer/__init__.py
+++ b/src/bonsai/bonsai/bim/module/layer/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddPresentationLayer,
diff --git a/src/bonsai/bonsai/bim/module/layer/data.py b/src/bonsai/bonsai/bim/module/layer/data.py
index f55b4c2900..4550d3257e 100644
--- a/src/bonsai/bonsai/bim/module/layer/data.py
+++ b/src/bonsai/bonsai/bim/module/layer/data.py
@@ -16,10 +16,12 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any
+
import bpy
import ifcopenshell
+
import bonsai.tool as tool
-from typing import Any
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/layer/operator.py b/src/bonsai/bonsai/bim/module/layer/operator.py
index d1b5a0580b..8475bebd54 100644
--- a/src/bonsai/bonsai/bim/module/layer/operator.py
+++ b/src/bonsai/bonsai/bim/module/layer/operator.py
@@ -16,13 +16,15 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.layer
import ifcopenshell.util.element
+
import bonsai.bim.helper
import bonsai.tool as tool
-from typing import TYPE_CHECKING
def get_active_mesh(context: bpy.types.Context, mesh_name: str) -> bpy.types.Mesh:
diff --git a/src/bonsai/bonsai/bim/module/layer/prop.py b/src/bonsai/bonsai/bim/module/layer/prop.py
index 079ba262de..26a6c3680d 100644
--- a/src/bonsai/bonsai/bim/module/layer/prop.py
+++ b/src/bonsai/bonsai/bim/module/layer/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.prop import Attribute, StrProperty
def update_layer_property(self: "Layer", context: bpy.types.Context, *, property: str) -> None:
diff --git a/src/bonsai/bonsai/bim/module/layer/ui.py b/src/bonsai/bonsai/bim/module/layer/ui.py
index d7fcdec215..b4de131ad6 100644
--- a/src/bonsai/bonsai/bim/module/layer/ui.py
+++ b/src/bonsai/bonsai/bim/module/layer/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
+from bpy.types import Mesh, Panel, UIList
+
import bonsai.tool as tool
-from bpy.types import Panel, UIList, Mesh
from bonsai.bim.helper import draw_attributes
from bonsai.bim.module.layer.data import LayersData
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.layer.prop import BIMLayerProperties, Layer
diff --git a/src/bonsai/bonsai/bim/module/library/__init__.py b/src/bonsai/bonsai/bim/module/library/__init__.py
index 5017772cfe..a3ef2c3060 100644
--- a/src/bonsai/bonsai/bim/module/library/__init__.py
+++ b/src/bonsai/bonsai/bim/module/library/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddLibrary,
diff --git a/src/bonsai/bonsai/bim/module/library/data.py b/src/bonsai/bonsai/bim/module/library/data.py
index 87ad7c23ae..0d26369035 100644
--- a/src/bonsai/bonsai/bim/module/library/data.py
+++ b/src/bonsai/bonsai/bim/module/library/data.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/library/operator.py b/src/bonsai/bonsai/bim/module/library/operator.py
index 6f4e971465..6c7abe8be5 100644
--- a/src/bonsai/bonsai/bim/module/library/operator.py
+++ b/src/bonsai/bonsai/bim/module/library/operator.py
@@ -18,8 +18,9 @@
import bpy
import ifcopenshell.api
-import bonsai.tool as tool
+
import bonsai.core.library as core
+import bonsai.tool as tool
class AddLibrary(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/library/prop.py b/src/bonsai/bonsai/bim/module/library/prop.py
index 24defdf9ea..69647c195f 100644
--- a/src/bonsai/bonsai/bim/module/library/prop.py
+++ b/src/bonsai/bonsai/bim/module/library/prop.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.library.data import LibrariesData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.library.data import LibrariesData
+from bonsai.bim.prop import Attribute, StrProperty
def update_active_reference_index(self, context):
diff --git a/src/bonsai/bonsai/bim/module/library/ui.py b/src/bonsai/bonsai/bim/module/library/ui.py
index bfc64e3020..f76e6a3251 100644
--- a/src/bonsai/bonsai/bim/module/library/ui.py
+++ b/src/bonsai/bonsai/bim/module/library/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
+from bpy.types import Panel, UIList
+
import bonsai.bim.helper
import bonsai.tool as tool
-from bpy.types import Panel, UIList
from bonsai.bim.module.library.data import LibrariesData, LibraryReferencesData
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.library.prop import BIMLibraryProperties, LibraryReference
diff --git a/src/bonsai/bonsai/bim/module/light/__init__.py b/src/bonsai/bonsai/bim/module/light/__init__.py
index 2785bba125..1bfe11be7a 100644
--- a/src/bonsai/bonsai/bim/module/light/__init__.py
+++ b/src/bonsai/bonsai/bim/module/light/__init__.py
@@ -16,17 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-from . import ui, prop, operator, list
-
-import stat
-from pathlib import Path
-
import importlib
import importlib.util
+import stat
import traceback
+from pathlib import Path
+
+import bpy
import pyradiance
+from . import list, operator, prop, ui
+
def get_pyradiance_path():
return importlib.util.find_spec("pyradiance").submodule_search_locations[0]
diff --git a/src/bonsai/bonsai/bim/module/light/data.py b/src/bonsai/bonsai/bim/module/light/data.py
index abe9d9e87d..d708b6170f 100644
--- a/src/bonsai/bonsai/bim/module/light/data.py
+++ b/src/bonsai/bonsai/bim/module/light/data.py
@@ -17,10 +17,11 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
import ifcopenshell.util.geolocation
from mathutils import Vector
+import bonsai.tool as tool
+
def refresh():
SolarData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/light/decorator.py b/src/bonsai/bonsai/bim/module/light/decorator.py
index 77cd20ddbd..9cfb9ae186 100644
--- a/src/bonsai/bonsai/bim/module/light/decorator.py
+++ b/src/bonsai/bonsai/bim/module/light/decorator.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from math import degrees, radians
+
import blf
-import gpu
import bmesh
-import bonsai.tool as tool
+import bpy
+import gpu
from bpy.types import SpaceView3D
-from math import radians, degrees
-from mathutils import Vector, Matrix
-from gpu_extras.batch import batch_for_shader
from bpy_extras.view3d_utils import location_3d_to_region_2d
+from gpu_extras.batch import batch_for_shader
+from mathutils import Matrix, Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.light.data import SolarData
diff --git a/src/bonsai/bonsai/bim/module/light/list.py b/src/bonsai/bonsai/bim/module/light/list.py
index 6eaa1f4c79..ff6b7ae4bd 100644
--- a/src/bonsai/bonsai/bim/module/light/list.py
+++ b/src/bonsai/bonsai/bim/module/light/list.py
@@ -17,13 +17,18 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import json
import os
from typing import TYPE_CHECKING
+import bpy
+
if TYPE_CHECKING:
- from bonsai.bim.module.light.prop import RadianceExporterProperties, RadianceMaterial
+ from bonsai.bim.module.light.prop import (
+ RadianceExporterProperties,
+ RadianceMaterial,
+ )
with open(os.path.join(os.path.dirname(__file__), "spectraldb.json"), "r") as f:
spectraldb = json.load(f)
diff --git a/src/bonsai/bonsai/bim/module/light/operator.py b/src/bonsai/bonsai/bim/module/light/operator.py
index 4a8d993e0e..41bae9179c 100644
--- a/src/bonsai/bonsai/bim/module/light/operator.py
+++ b/src/bonsai/bonsai/bim/module/light/operator.py
@@ -16,28 +16,28 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-
-import pyradiance as pr
-from datetime import datetime
-import bpy
-import bonsai.tool as tool
-from pathlib import Path
-from typing import Union, TYPE_CHECKING
import json
import math
-import time
-import ifcopenshell
-import ifcopenshell.util.geolocation
-import webbrowser
-import ifcopenshell.geom
import multiprocessing
-import requests
+import os
+import time
+import webbrowser
+from datetime import datetime
from math import radians
+from pathlib import Path
+from typing import TYPE_CHECKING, Union
+
+import bpy
+import ifcopenshell
+import ifcopenshell.geom
+import ifcopenshell.util.geolocation
+import pyradiance as pr
+import requests
+from bpy_extras.io_utils import ExportHelper, ImportHelper
from mathutils import Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.light.data import SolarData
-from bpy_extras.io_utils import ExportHelper
-from bpy_extras.io_utils import ImportHelper
ifc_materials = []
diff --git a/src/bonsai/bonsai/bim/module/light/prop.py b/src/bonsai/bonsai/bim/module/light/prop.py
index e538ca1bf2..d3498f18b8 100644
--- a/src/bonsai/bonsai/bim/module/light/prop.py
+++ b/src/bonsai/bonsai/bim/module/light/prop.py
@@ -16,27 +16,29 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import datetime
+import json
+import os
+from math import pi, radians
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
import pytz
import tzfpy
-import json
-import datetime
-import bonsai.tool as tool
-from typing import TYPE_CHECKING, Literal, Union
-from math import radians, pi
-from mathutils import Euler, Vector, Matrix, Quaternion
from bpy.props import (
- IntProperty,
- StringProperty,
+ BoolProperty,
+ CollectionProperty,
EnumProperty,
FloatProperty,
FloatVectorProperty,
- BoolProperty,
- CollectionProperty,
+ IntProperty,
PointerProperty,
+ StringProperty,
)
-import os
from bpy.types import PropertyGroup
+from mathutils import Euler, Matrix, Quaternion, Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.light.data import SolarData
from bonsai.bim.module.light.decorator import SolarDecorator
diff --git a/src/bonsai/bonsai/bim/module/light/ui.py b/src/bonsai/bonsai/bim/module/light/ui.py
index 0f0ffc09cb..cd4bdbb362 100644
--- a/src/bonsai/bonsai/bim/module/light/ui.py
+++ b/src/bonsai/bonsai/bim/module/light/ui.py
@@ -17,9 +17,11 @@
# along with Bonsai. If not, see .
import calendar
-import bpy
-import bonsai.tool as tool
from typing import TYPE_CHECKING
+
+import bpy
+
+import bonsai.tool as tool
from bonsai.bim.module.light.data import SolarData
diff --git a/src/bonsai/bonsai/bim/module/material/__init__.py b/src/bonsai/bonsai/bim/module/material/__init__.py
index c7f7756bc9..5f14b170ee 100644
--- a/src/bonsai/bonsai/bim/module/material/__init__.py
+++ b/src/bonsai/bonsai/bim/module/material/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddConstituent,
diff --git a/src/bonsai/bonsai/bim/module/material/data.py b/src/bonsai/bonsai/bim/module/material/data.py
index b56ff93e33..36c93add4f 100644
--- a/src/bonsai/bonsai/bim/module/material/data.py
+++ b/src/bonsai/bonsai/bim/module/material/data.py
@@ -17,15 +17,17 @@
# along with Bonsai. If not, see .
import os
+from typing import Any, Union
+
import bpy
import ifcopenshell
-import ifcopenshell.util.element
import ifcopenshell.util.doc
+import ifcopenshell.util.element
import ifcopenshell.util.schema
+from natsort import natsorted
+
import bonsai.tool as tool
from bonsai.bim.module.drawing.helper import format_distance
-from typing import Any, Union
-from natsort import natsorted
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/material/operator.py b/src/bonsai/bonsai/bim/module/material/operator.py
index f46f2c7b6a..81ef17e6e4 100644
--- a/src/bonsai/bonsai/bim/module/material/operator.py
+++ b/src/bonsai/bonsai/bim/module/material/operator.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+from typing import TYPE_CHECKING, Any, Literal, Union
+
+import bpy
import ifcopenshell.api
import ifcopenshell.api.material
import ifcopenshell.api.profile
import ifcopenshell.api.style
import ifcopenshell.util.element
import ifcopenshell.util.representation
+
import bonsai.bim.helper
-import bonsai.tool as tool
-import bonsai.core.material as core
import bonsai.bim.module.model.profile as model_profile
-from typing import Any, Union, TYPE_CHECKING, Literal
-from bonsai.bim.module.model import wall, slab
+import bonsai.core.material as core
+import bonsai.tool as tool
+from bonsai.bim.module.model import slab, wall
if TYPE_CHECKING:
from bonsai.bim.prop import Attribute
diff --git a/src/bonsai/bonsai/bim/module/material/prop.py b/src/bonsai/bonsai/bim/module/material/prop.py
index 2fbd8d2847..27567ab27e 100644
--- a/src/bonsai/bonsai/bim/module/material/prop.py
+++ b/src/bonsai/bonsai/bim/module/material/prop.py
@@ -16,26 +16,28 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import ifcopenshell
+from typing import TYPE_CHECKING
+
import bpy
+import ifcopenshell
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
from ifcopenshell.util.doc import get_entity_doc
+
import bonsai.tool as tool
from bonsai.bim.module.classification.data import MaterialClassificationsData
from bonsai.bim.module.material.data import MaterialsData, ObjectMaterialData
from bonsai.bim.module.profile.data import ProfileData
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-from typing import TYPE_CHECKING
+from bonsai.bim.prop import Attribute, StrProperty
def get_profile_classes(self, context):
diff --git a/src/bonsai/bonsai/bim/module/material/ui.py b/src/bonsai/bonsai/bim/module/material/ui.py
index db05276d9b..2ac1908327 100644
--- a/src/bonsai/bonsai/bim/module/material/ui.py
+++ b/src/bonsai/bonsai/bim/module/material/ui.py
@@ -17,19 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.bim.helper
-import bonsai.tool as tool
+
+from typing import TYPE_CHECKING, Any
+
import bpy
import ifcopenshell.util.element
import ifcopenshell.util.unit
from bpy.types import Panel, UIList
-from bonsai.bim.helper import draw_attributes
-from bonsai.bim.helper import prop_with_search
+
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attributes, prop_with_search
from bonsai.bim.module.material.data import MaterialsData, ObjectMaterialData
-from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
- from bonsai.bim.module.material.prop import Material, BIMMaterialProperties
+ from bonsai.bim.module.material.prop import BIMMaterialProperties, Material
class BIM_PT_materials(Panel):
diff --git a/src/bonsai/bonsai/bim/module/misc/__init__.py b/src/bonsai/bonsai/bim/module/misc/__init__.py
index 31926217fc..a71e467b7f 100644
--- a/src/bonsai/bonsai/bim/module/misc/__init__.py
+++ b/src/bonsai/bonsai/bim/module/misc/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.DrawSystemArrows,
diff --git a/src/bonsai/bonsai/bim/module/misc/operator.py b/src/bonsai/bonsai/bim/module/misc/operator.py
index ee3c592f3e..33703331f8 100644
--- a/src/bonsai/bonsai/bim/module/misc/operator.py
+++ b/src/bonsai/bonsai/bim/module/misc/operator.py
@@ -16,18 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, assert_never, get_args
+
import bpy
-import numpy as np
import ifcopenshell
import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.core.misc as core
+import numpy as np
+from mathutils import Euler, Matrix, Vector
+
import bonsai.core.geometry as core_geometry
+import bonsai.core.misc as core
import bonsai.core.root
-from mathutils import Vector, Matrix, Euler
-from typing import TYPE_CHECKING, Literal, get_args, assert_never
+import bonsai.tool as tool
class SetOverrideColour(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/misc/prop.py b/src/bonsai/bonsai/bim/module/misc/prop.py
index 3201cbd94d..889e1f5099 100644
--- a/src/bonsai/bonsai/bim/module/misc/prop.py
+++ b/src/bonsai/bonsai/bim/module/misc/prop.py
@@ -17,18 +17,19 @@
# along with Bonsai. If not, see .
import bpy
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+from bonsai.bim.prop import Attribute, StrProperty
class BIMMiscProperties(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/model/__init__.py b/src/bonsai/bonsai/bim/module/model/__init__.py
index c758aa7f54..57b4b561d0 100644
--- a/src/bonsai/bonsai/bim/module/model/__init__.py
+++ b/src/bonsai/bonsai/bim/module/model/__init__.py
@@ -16,33 +16,33 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import NamedTuple
+
import bpy
+
from . import (
- handler,
- prop,
- ui,
- grid,
array,
+ covering,
+ door,
+ external,
+ grid,
+ handler,
+ mep,
+ opening,
product,
- wall,
+ profile,
+ prop,
+ railing,
roof,
slab,
space,
- covering,
stair,
- window,
- opening,
- mep,
- workspace,
- profile,
sverchok_modifier,
- door,
- railing,
- roof,
- mep,
- external,
+ ui,
+ wall,
+ window,
+ workspace,
)
-from typing import NamedTuple
classes = (
array.AddArray,
diff --git a/src/bonsai/bonsai/bim/module/model/array.py b/src/bonsai/bonsai/bim/module/model/array.py
index ec1bce2096..3fb9360256 100644
--- a/src/bonsai/bonsai/bim/module/model/array.py
+++ b/src/bonsai/bonsai/bim/module/model/array.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
import ifcopenshell.util.element
import ifcopenshell.util.unit
+from mathutils import Matrix, Vector
+
import bonsai.tool as tool
-from mathutils import Vector, Matrix
class AddArray(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/model/covering.py b/src/bonsai/bonsai/bim/module/model/covering.py
index 72eba944d1..468554b9be 100644
--- a/src/bonsai/bonsai/bim/module/model/covering.py
+++ b/src/bonsai/bonsai/bim/module/model/covering.py
@@ -20,8 +20,9 @@
import bpy
import ifcopenshell
import ifcopenshell.util.element
-import bonsai.tool as tool
+
import bonsai.core.covering as core
+import bonsai.tool as tool
class AddInstanceFlooringCoveringFromCursor(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/model/data.py b/src/bonsai/bonsai/bim/module/model/data.py
index 649b92b325..0b97e05e77 100644
--- a/src/bonsai/bonsai/bim/module/model/data.py
+++ b/src/bonsai/bonsai/bim/module/model/data.py
@@ -16,17 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import math
import json
+import math
+from math import degrees
+from typing import Any, Optional, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.schema
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
-import bonsai.tool as tool
-from math import degrees
from natsort import natsorted
-from typing import Union, Optional, Any
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/model/decorator.py b/src/bonsai/bonsai/bim/module/model/decorator.py
index 00e733b397..328804d4c6 100644
--- a/src/bonsai/bonsai/bim/module/model/decorator.py
+++ b/src/bonsai/bonsai/bim/module/model/decorator.py
@@ -17,26 +17,27 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
+import math
+from itertools import chain
+from math import cos, radians, sin, tan
+from typing import Any, Literal, Union
+
import blf
+import bmesh
import bpy
import gpu
-import bmesh
import ifcopenshell
-import bonsai.tool as tool
-import math
import mathutils
-from math import sin, cos, tan, radians
from bpy.types import SpaceView3D
from bpy_extras import view3d_utils
-from mathutils import Vector, Matrix, Quaternion
+from bpy_extras.view3d_utils import location_3d_to_region_2d
from gpu_extras.batch import batch_for_shader
from gpu_extras.presets import draw_circle_2d
-from typing import Union
+from mathutils import Matrix, Quaternion, Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.drawing.helper import format_distance
-from itertools import chain
-from typing import Union, Any, Literal
-from bpy_extras.view3d_utils import location_3d_to_region_2d
def transparent_color(color, alpha=0.1):
diff --git a/src/bonsai/bonsai/bim/module/model/door.py b/src/bonsai/bonsai/bim/module/model/door.py
index 26d1a1a7fb..dbdf5e8dcf 100644
--- a/src/bonsai/bonsai/bim/module/model/door.py
+++ b/src/bonsai/bonsai/bim/module/model/door.py
@@ -17,8 +17,13 @@
# along with Bonsai. If not, see .
-import bpy
+import collections
+import collections.abc
+import json
+from typing import TYPE_CHECKING, get_args
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
@@ -28,19 +33,14 @@ import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.schema
import ifcopenshell.util.unit
-import bonsai.tool as tool
+from mathutils import Matrix, Vector
+
import bonsai.core.geometry as core
import bonsai.core.root
-from bonsai.bim.module.model.window import create_bm_window, create_bm_box
+import bonsai.tool as tool
from bonsai.bim.module.drawing import gizmos as gizmo
from bonsai.bim.module.drawing.gizmos import DimensionGizmoConfig
-
-from mathutils import Vector, Matrix
-
-import json
-import collections
-import collections.abc
-from typing import get_args, TYPE_CHECKING
+from bonsai.bim.module.model.window import create_bm_box, create_bm_window
if TYPE_CHECKING:
from bonsai.bim.module.model.prop import BIMDoorProperties
diff --git a/src/bonsai/bonsai/bim/module/model/grid.py b/src/bonsai/bonsai/bim/module/model/grid.py
index 4bac1b3f94..df4f140ebc 100644
--- a/src/bonsai/bonsai/bim/module/model/grid.py
+++ b/src/bonsai/bonsai/bim/module/model/grid.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.grid
-import bonsai.tool as tool
+from bpy.props import FloatProperty, IntProperty
+from bpy.types import Operator
+from mathutils import Vector
+
import bonsai.core.geometry
import bonsai.core.root
-from bpy.types import Operator
-from bpy.props import FloatProperty, IntProperty
-from mathutils import Vector
-from typing import TYPE_CHECKING
+import bonsai.tool as tool
def add_object(self: "BIM_OT_add_object", context: bpy.types.Context) -> None:
diff --git a/src/bonsai/bonsai/bim/module/model/handler.py b/src/bonsai/bonsai/bim/module/model/handler.py
index 76ebbf57ee..26a4863837 100644
--- a/src/bonsai/bonsai/bim/module/model/handler.py
+++ b/src/bonsai/bonsai/bim/module/model/handler.py
@@ -19,9 +19,10 @@
import bpy
import ifcopenshell
import ifcopenshell.api
-from bonsai.bim.module.model import product, wall, slab, profile, opening, task
from bpy.app.handlers import persistent
+from bonsai.bim.module.model import opening, product, profile, slab, task, wall
+
@persistent
def load_post(*args):
diff --git a/src/bonsai/bonsai/bim/module/model/mep.py b/src/bonsai/bonsai/bim/module/model/mep.py
index ab96e60b0d..cdb2538d28 100644
--- a/src/bonsai/bonsai/bim/module/model/mep.py
+++ b/src/bonsai/bonsai/bim/module/model/mep.py
@@ -16,13 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import math
import collections
import collections.abc
-import bmesh
-import re
import json
+import math
+import re
+from copy import copy
+from math import asin, cos, degrees, pi, radians, sin, tan
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
@@ -35,14 +38,13 @@ import ifcopenshell.util.representation
import ifcopenshell.util.system
import ifcopenshell.util.unit
import numpy as np
-import bonsai.core.type
-import bonsai.core.root
-import bonsai.core.geometry
-import bonsai.tool as tool
-from math import pi, degrees, radians, sin, cos, asin, tan
-from copy import copy
-from mathutils import Vector, Matrix
from ifcopenshell.util.shape_builder import ShapeBuilder
+from mathutils import Matrix, Vector
+
+import bonsai.core.geometry
+import bonsai.core.root
+import bonsai.core.type
+import bonsai.tool as tool
from bonsai.bim.module.model.profile import DumbProfileJoiner
from bonsai.tool.cad import VTX_PRECISION
diff --git a/src/bonsai/bonsai/bim/module/model/opening.py b/src/bonsai/bonsai/bim/module/model/opening.py
index 256251b06c..b0806ec33d 100644
--- a/src/bonsai/bonsai/bim/module/model/opening.py
+++ b/src/bonsai/bonsai/bim/module/model/opening.py
@@ -16,38 +16,39 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import json
+import logging
+from collections import defaultdict
+from collections.abc import Sequence
+from math import pi, radians
+from typing import Any, Optional, Union, cast
+
+import bmesh
import bpy
import gpu
-import json
-import bmesh
-import shapely
-import logging
-import numpy as np
import ifcopenshell
import ifcopenshell.api
-import ifcopenshell.api.geometry
import ifcopenshell.api.feature
+import ifcopenshell.api.geometry
import ifcopenshell.api.root
import ifcopenshell.geom
-import ifcopenshell.util.shape
import ifcopenshell.util.element
-import ifcopenshell.util.shape_builder
import ifcopenshell.util.placement
import ifcopenshell.util.representation
+import ifcopenshell.util.shape
+import ifcopenshell.util.shape_builder
import ifcopenshell.util.unit
-import bonsai.tool as tool
-import bonsai.core.geometry
-import bonsai.bim.import_ifc as import_ifc
-from collections import defaultdict
-from math import pi, radians
-from mathutils import Vector, Matrix, Euler
-from bpy.types import Operator
-from bpy.types import SpaceView3D
+import numpy as np
+import shapely
from bpy.props import FloatProperty
+from bpy.types import Operator, SpaceView3D
from bpy_extras.object_utils import AddObjectHelper, object_data_add
from gpu_extras.batch import batch_for_shader
-from typing import Union, Optional, Any, cast
-from collections.abc import Sequence
+from mathutils import Euler, Matrix, Vector
+
+import bonsai.bim.import_ifc as import_ifc
+import bonsai.core.geometry
+import bonsai.tool as tool
from bonsai.bim.module.drawing.decoration import DecoratorData
diff --git a/src/bonsai/bonsai/bim/module/model/polyline.py b/src/bonsai/bonsai/bim/module/model/polyline.py
index d2514321f3..de169796f6 100644
--- a/src/bonsai/bonsai/bim/module/model/polyline.py
+++ b/src/bonsai/bonsai/bim/module/model/polyline.py
@@ -17,28 +17,31 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import copy
import math
+from typing import Any, Literal, Optional, Union
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.geom
-import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.type
+import ifcopenshell.util.unit
import mathutils.geometry
-import bonsai.core.type
-import bonsai.core.root
+from lark import Lark, Transformer
+from mathutils import Vector
+
import bonsai.core.geometry
import bonsai.core.model as core
+import bonsai.core.root
+import bonsai.core.type
import bonsai.tool as tool
-from mathutils import Vector
from bonsai.bim.module.model.decorator import PolylineDecorator
-from typing import Optional, Union, Literal, Any
-from lark import Lark, Transformer
class PolylineOperator:
diff --git a/src/bonsai/bonsai/bim/module/model/product.py b/src/bonsai/bonsai/bim/module/model/product.py
index 191a9406fe..822342ab75 100644
--- a/src/bonsai/bonsai/bim/module/model/product.py
+++ b/src/bonsai/bonsai/bim/module/model/product.py
@@ -18,38 +18,41 @@
#
# pyright: reportUnnecessaryTypeIgnoreComment=error
-import bpy
+import json
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union, assert_never, get_args
+
import bmesh
-import mathutils
-import numpy as np
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
import ifcopenshell.api.system
-import ifcopenshell.util.system
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
+import ifcopenshell.util.system
import ifcopenshell.util.type
import ifcopenshell.util.unit
-import bonsai.tool as tool
+import mathutils
+import numpy as np
+from bpy_extras.object_utils import AddObjectHelper
+from mathutils import Matrix, Vector
+
import bonsai.core.aggregate
-import bonsai.core.type
-import bonsai.core.root
import bonsai.core.geometry
import bonsai.core.model as core
+import bonsai.core.root
import bonsai.core.spatial
-from . import wall, slab, profile, mep
-from bonsai.bim.ifc import IfcStore
+import bonsai.core.type
+import bonsai.tool as tool
from bonsai.bim.helper import get_enum_items
+from bonsai.bim.ifc import IfcStore
from bonsai.bim.module.model.data import AuthoringData
-from bonsai.bim.module.model.polyline import PolylineOperator
from bonsai.bim.module.model.decorator import PolylineDecorator, ProductDecorator
-from mathutils import Vector, Matrix
-from bpy_extras.object_utils import AddObjectHelper
-import json
-from typing import Any, Union, Optional, Literal, get_args, assert_never, TYPE_CHECKING
+from bonsai.bim.module.model.polyline import PolylineOperator
+
+from . import mep, profile, slab, wall
class AddEmptyType(bpy.types.Operator, AddObjectHelper):
diff --git a/src/bonsai/bonsai/bim/module/model/profile.py b/src/bonsai/bonsai/bim/module/model/profile.py
index 80c7ccc20e..124a70707f 100644
--- a/src/bonsai/bonsai/bim/module/model/profile.py
+++ b/src/bonsai/bonsai/bim/module/model/profile.py
@@ -16,32 +16,37 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import copy
+from math import atan2, degrees, pi
+from typing import Any, Literal, Optional, Union
+
import bmesh
-import mathutils.geometry
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
import ifcopenshell.api.pset
import ifcopenshell.api.type
-import ifcopenshell.util.type
-import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
-import bonsai.tool as tool
-import bonsai.core.type
+import ifcopenshell.util.type
+import ifcopenshell.util.unit
+import mathutils.geometry
+from mathutils import Matrix, Vector
+
import bonsai.core.geometry
import bonsai.core.material
import bonsai.core.root
+import bonsai.core.type
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from math import pi, degrees, atan2
-from mathutils import Vector, Matrix
-from bonsai.bim.module.model.decorator import ProfileDecorator, PolylineDecorator, ProductDecorator
+from bonsai.bim.module.model.decorator import (
+ PolylineDecorator,
+ ProductDecorator,
+ ProfileDecorator,
+)
from bonsai.bim.module.model.polyline import PolylineOperator
-from typing import Union, Any, Optional, Literal
-
ProfileFrom2PointsReturn = Union[dict[str, Any], None]
diff --git a/src/bonsai/bonsai/bim/module/model/prop.py b/src/bonsai/bonsai/bim/module/model/prop.py
index 4c3466d325..9f2664190d 100644
--- a/src/bonsai/bonsai/bim/module/model/prop.py
+++ b/src/bonsai/bonsai/bim/module/model/prop.py
@@ -16,22 +16,28 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import math
+from collections.abc import Callable
+from math import pi, radians
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union, get_args
+
import bpy
import ifcopenshell
import ifcopenshell.util.element
+from bpy.types import NodeTree, PropertyGroup
+from mathutils import Vector
+
import bonsai.tool as tool
-import math
-from bonsai.bim.prop import ObjProperty
+from bonsai.bim.module.drawing.decoration import CutDecorator
from bonsai.bim.module.model.data import AuthoringData
-from bpy.types import PropertyGroup, NodeTree
-from math import pi, radians
-from bonsai.bim.module.model.decorator import WallAxisDecorator, SlabDirectionDecorator, BoundingBoxDecorator
+from bonsai.bim.module.model.decorator import (
+ BoundingBoxDecorator,
+ SlabDirectionDecorator,
+ WallAxisDecorator,
+)
from bonsai.bim.module.model.door import update_door_modifier_bmesh
from bonsai.bim.module.model.window import update_window_modifier_bmesh
-from bonsai.bim.module.drawing.decoration import CutDecorator
-from typing import TYPE_CHECKING, Literal, get_args, Union, Any, Optional
-from collections.abc import Callable
-from mathutils import Vector
+from bonsai.bim.prop import ObjProperty
if TYPE_CHECKING:
import sverchok.node_tree
diff --git a/src/bonsai/bonsai/bim/module/model/railing.py b/src/bonsai/bonsai/bim/module/model/railing.py
index 4f6fc348f0..624b1b64a7 100644
--- a/src/bonsai/bonsai/bim/module/model/railing.py
+++ b/src/bonsai/bonsai/bim/module/model/railing.py
@@ -17,24 +17,25 @@
# along with Bonsai. If not, see .
-import bpy
+import json
+from typing import Any
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
import ifcopenshell.api.pset
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-import bonsai.core.root
+from mathutils import Vector
+
import bonsai.core.geometry
+import bonsai.core.root
import bonsai.tool as tool
from bonsai.bim.module.model.data import RailingData, refresh
from bonsai.bim.module.model.decorator import ProfileDecorator
-from mathutils import Vector
-import json
-from typing import Any
-
# reference:
# https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRailing.htm
# https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRailingType.htm
diff --git a/src/bonsai/bonsai/bim/module/model/roof.py b/src/bonsai/bonsai/bim/module/model/roof.py
index daf41b86dd..4038faa993 100644
--- a/src/bonsai/bonsai/bim/module/model/roof.py
+++ b/src/bonsai/bonsai/bim/module/model/roof.py
@@ -16,27 +16,27 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
+import json
+from math import cos, pi, radians, tan
+from typing import Any, Literal, Union
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
import ifcopenshell.util.representation
import ifcopenshell.util.unit
+import mathutils.geometry
+import shapely
+from bpypolyskel import bpypolyskel
+from mathutils import Matrix, Quaternion, Vector
+
import bonsai.core.root
import bonsai.tool as tool
from bonsai.bim.module.model.data import RoofData, refresh
from bonsai.bim.module.model.decorator import ProfileDecorator
-import json
-from math import cos, tan, pi, radians
-from mathutils import Vector, Matrix, Quaternion
-import mathutils.geometry
-from bpypolyskel import bpypolyskel
-import shapely
-from typing import Literal, Union, Any
-
# reference:
# https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoof.htm
# https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoofType.htm
diff --git a/src/bonsai/bonsai/bim/module/model/slab.py b/src/bonsai/bonsai/bim/module/model/slab.py
index 46ea91dc08..1d673aca8e 100644
--- a/src/bonsai/bonsai/bim/module/model/slab.py
+++ b/src/bonsai/bonsai/bim/module/model/slab.py
@@ -16,9 +16,12 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+from math import acos, cos, degrees, pi, sin
+from typing import Optional
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
@@ -28,18 +31,21 @@ import ifcopenshell.api.type
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
-import ifcopenshell.util.unit
import ifcopenshell.util.type
-import bonsai.core.type
+import ifcopenshell.util.unit
+from mathutils import Matrix, Vector
+
import bonsai.core.geometry
import bonsai.core.root
+import bonsai.core.type
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from math import cos, sin, pi, acos, degrees
-from mathutils import Vector, Matrix
-from bonsai.bim.module.model.decorator import ProfileDecorator, PolylineDecorator, ProductDecorator
+from bonsai.bim.module.model.decorator import (
+ PolylineDecorator,
+ ProductDecorator,
+ ProfileDecorator,
+)
from bonsai.bim.module.model.polyline import PolylineOperator
-from typing import Optional
class DumbSlabGenerator:
diff --git a/src/bonsai/bonsai/bim/module/model/space.py b/src/bonsai/bonsai/bim/module/model/space.py
index aeebea071b..baa7401358 100644
--- a/src/bonsai/bonsai/bim/module/model/space.py
+++ b/src/bonsai/bonsai/bim/module/model/space.py
@@ -18,8 +18,9 @@
import bpy
-import bonsai.tool as tool
+
import bonsai.core.spatial as core
+import bonsai.tool as tool
class GenerateSpace(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/model/stair.py b/src/bonsai/bonsai/bim/module/model/stair.py
index 91ddeccbc3..5b52308542 100644
--- a/src/bonsai/bonsai/bim/module/model/stair.py
+++ b/src/bonsai/bonsai/bim/module/model/stair.py
@@ -16,25 +16,32 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.unit
+from mathutils import Matrix, Vector
+
import bonsai.core.root
import bonsai.tool as tool
from bonsai.bim.module.drawing import gizmos as gizmo
from bonsai.bim.module.drawing.gizmos import DimensionGizmoConfig
-from bonsai.tool.numeric_input import IntegerInputState, run_integer_input_modal, update_header
-from mathutils import Vector, Matrix
+from bonsai.tool.numeric_input import (
+ IntegerInputState,
+ run_integer_input_modal,
+ update_header,
+)
V_ = tool.Blender.V_
+from typing import TYPE_CHECKING, get_args
+
from bmesh.types import BMVert
from bpy.props import IntProperty
-from typing import get_args, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.model.prop import BIMStairProperties
diff --git a/src/bonsai/bonsai/bim/module/model/sverchok_modifier.py b/src/bonsai/bonsai/bim/module/model/sverchok_modifier.py
index d30852f1eb..0a318b1fb1 100644
--- a/src/bonsai/bonsai/bim/module/model/sverchok_modifier.py
+++ b/src/bonsai/bonsai/bim/module/model/sverchok_modifier.py
@@ -16,18 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
+import json
+import os.path
+import zipfile
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.util.element
-import bonsai.tool as tool
+from bpy_extras.io_utils import ExportHelper, ImportHelper
-import json
-import zipfile
-import os.path
-from bpy_extras.io_utils import ImportHelper, ExportHelper
+import bonsai.tool as tool
def update_sverchok_modifier(context):
diff --git a/src/bonsai/bonsai/bim/module/model/ui.py b/src/bonsai/bonsai/bim/module/model/ui.py
index 0d9aea58cd..2c931f4f45 100644
--- a/src/bonsai/bonsai/bim/module/model/ui.py
+++ b/src/bonsai/bonsai/bim/module/model/ui.py
@@ -17,24 +17,27 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from collections.abc import Iterable
+from typing import TYPE_CHECKING, Any
+
import bpy
+from bpy.types import Menu, Panel
+
import bonsai.bim
-from bonsai.bim import module
import bonsai.tool as tool
-from bpy.types import Panel, Menu
+from bonsai.bim import module
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.model.data import (
- AuthoringData,
ArrayData,
- StairData,
- SverchokData,
- WindowData,
+ AuthoringData,
DoorData,
RailingData,
RoofData,
+ StairData,
+ SverchokData,
+ WindowData,
)
-from collections.abc import Iterable
-from typing import Any, TYPE_CHECKING
if TYPE_CHECKING or bpy.app.version >= (5, 0, 0):
import _bl_ui_utils.layout as bl_ui_utils_layout
diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py
index d343bc75ae..9c94a27af0 100644
--- a/src/bonsai/bonsai/bim/module/model/wall.py
+++ b/src/bonsai/bonsai/bim/module/model/wall.py
@@ -18,37 +18,39 @@
#
# pyright: reportUnnecessaryTypeIgnoreComment=error
-import bpy
import copy
import math
-import numpy as np
+from math import acos, atan2, cos, degrees, pi, sin
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union, assert_never, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.feature
+import ifcopenshell.api.geometry
import ifcopenshell.api.material
import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.api.type
-import ifcopenshell.api.geometry
-import ifcopenshell.util.unit
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
import ifcopenshell.util.type
+import ifcopenshell.util.unit
import mathutils.geometry
-import bonsai.core.type
-import bonsai.core.root
+import numpy as np
+from mathutils import Matrix, Vector
+
import bonsai.core.geometry
import bonsai.core.model as core
+import bonsai.core.root
+import bonsai.core.type
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from math import pi, sin, cos, degrees, atan2, acos
-from mathutils import Vector, Matrix
-from bonsai.bim.module.model.opening import FilledOpeningGenerator
from bonsai.bim.module.model.decorator import PolylineDecorator, ProductDecorator
+from bonsai.bim.module.model.opening import FilledOpeningGenerator
from bonsai.bim.module.model.polyline import PolylineOperator
-from typing import Optional, assert_never, TYPE_CHECKING, get_args, Literal, Union, Any
class UnjoinWalls(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/model/window.py b/src/bonsai/bonsai/bim/module/model/window.py
index 206f65de08..ad473a110e 100644
--- a/src/bonsai/bonsai/bim/module/model/window.py
+++ b/src/bonsai/bonsai/bim/module/model/window.py
@@ -17,29 +17,31 @@
# along with Bonsai. If not, see .
-import bpy
-import json
-import bmesh
import collections
import collections.abc
+import json
+from typing import TYPE_CHECKING, get_args
+
+import bmesh
+import bpy
import ifcopenshell
-import ifcopenshell.api.geometry
-import ifcopenshell.api.pset
-import bonsai.tool as tool
-import bonsai.core.root
-import bonsai.core.geometry
-from bonsai.bim.module.drawing import gizmos as gizmo
-from bonsai.bim.module.drawing.gizmos import DimensionGizmoConfig
-from ifcopenshell.api.geometry.add_window_representation import DEFAULT_PANEL_SCHEMAS
import ifcopenshell.api
+import ifcopenshell.api.geometry
import ifcopenshell.api.material
+import ifcopenshell.api.pset
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
import ifcopenshell.util.unit
from bmesh.types import BMVert
-from mathutils import Vector, Matrix
-from typing import get_args, TYPE_CHECKING
+from ifcopenshell.api.geometry.add_window_representation import DEFAULT_PANEL_SCHEMAS
+from mathutils import Matrix, Vector
+
+import bonsai.core.geometry
+import bonsai.core.root
+import bonsai.tool as tool
+from bonsai.bim.module.drawing import gizmos as gizmo
+from bonsai.bim.module.drawing.gizmos import DimensionGizmoConfig
if TYPE_CHECKING:
from bonsai.bim.module.model.prop import BIMWindowProperties
diff --git a/src/bonsai/bonsai/bim/module/model/workspace.py b/src/bonsai/bonsai/bim/module/model/workspace.py
index 30acee46e3..7b7a91906d 100644
--- a/src/bonsai/bonsai/bim/module/model/workspace.py
+++ b/src/bonsai/bonsai/bim/module/model/workspace.py
@@ -18,19 +18,21 @@
import os
import sys
+from functools import partial
+from typing import Any, Optional, Union
+
import bpy
import bpy.utils.previews
+from bpy.types import Menu, WorkSpaceTool
+
import bonsai.bim
-import bonsai.tool as tool
import bonsai.core.model as core
-from bonsai.bim.module.model.wall import DumbWallJoiner, DumbWallAligner
-from bonsai.bim.helper import prop_with_search, draw_attribute
-from bpy.types import WorkSpaceTool, Menu
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attribute, prop_with_search
from bonsai.bim.module.model.data import AuthoringData, ItemData
-from bonsai.bim.module.system.data import PortData
from bonsai.bim.module.model.prop import get_ifc_class
-from typing import Optional, Union, Any
-from functools import partial
+from bonsai.bim.module.model.wall import DumbWallAligner, DumbWallJoiner
+from bonsai.bim.module.system.data import PortData
def load_custom_icons():
diff --git a/src/bonsai/bonsai/bim/module/nest/__init__.py b/src/bonsai/bonsai/bim/module/nest/__init__.py
index 883fd00186..a4bf3de181 100644
--- a/src/bonsai/bonsai/bim/module/nest/__init__.py
+++ b/src/bonsai/bonsai/bim/module/nest/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.BIM_OT_nest_assign_object,
diff --git a/src/bonsai/bonsai/bim/module/nest/data.py b/src/bonsai/bonsai/bim/module/nest/data.py
index 77ec0d020f..abe94997fe 100644
--- a/src/bonsai/bonsai/bim/module/nest/data.py
+++ b/src/bonsai/bonsai/bim/module/nest/data.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
import ifcopenshell.util.element
+import bonsai.tool as tool
+
def refresh():
NestData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/nest/decorator.py b/src/bonsai/bonsai/bim/module/nest/decorator.py
index 5a16ef8e44..e9630ebc26 100644
--- a/src/bonsai/bonsai/bim/module/nest/decorator.py
+++ b/src/bonsai/bonsai/bim/module/nest/decorator.py
@@ -21,11 +21,12 @@ import bpy
import gpu
import ifcopenshell
import ifcopenshell.util.element
-import bonsai.tool as tool
from bpy.types import SpaceView3D
from bpy_extras import view3d_utils
from gpu_extras.batch import batch_for_shader
from mathutils import Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.geometry.decorator import ItemDecorator
diff --git a/src/bonsai/bonsai/bim/module/nest/operator.py b/src/bonsai/bonsai/bim/module/nest/operator.py
index 68b6839e79..9d7eb2df67 100644
--- a/src/bonsai/bonsai/bim/module/nest/operator.py
+++ b/src/bonsai/bonsai/bim/module/nest/operator.py
@@ -19,8 +19,9 @@
import bpy
import ifcopenshell
import ifcopenshell.util.element
-import bonsai.tool as tool
+
import bonsai.core.nest as core
+import bonsai.tool as tool
class BIM_OT_nest_assign_object(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/nest/prop.py b/src/bonsai/bonsai/bim/module/nest/prop.py
index 6cb787b3d4..c36388398c 100644
--- a/src/bonsai/bonsai/bim/module/nest/prop.py
+++ b/src/bonsai/bonsai/bim/module/nest/prop.py
@@ -16,23 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.spatial.data import SpatialData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
from bonsai.bim.module.nest.decorator import NestDecorator, NestModeDecorator
-from typing import TYPE_CHECKING, Union
+from bonsai.bim.module.spatial.data import SpatialData
+from bonsai.bim.prop import Attribute, StrProperty
def update_relating_object(self: "BIMObjectNestProperties", context: bpy.types.Context) -> None:
diff --git a/src/bonsai/bonsai/bim/module/nest/ui.py b/src/bonsai/bonsai/bim/module/nest/ui.py
index 2ea33de49a..6d61c5d66b 100644
--- a/src/bonsai/bonsai/bim/module/nest/ui.py
+++ b/src/bonsai/bonsai/bim/module/nest/ui.py
@@ -16,8 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bonsai.tool as tool
from bpy.types import Panel
+
+import bonsai.tool as tool
from bonsai.bim.module.nest.data import NestData
diff --git a/src/bonsai/bonsai/bim/module/owner/__init__.py b/src/bonsai/bonsai/bim/module/owner/__init__.py
index 52c1c7cc19..6d24f2f5dc 100644
--- a/src/bonsai/bonsai/bim/module/owner/__init__.py
+++ b/src/bonsai/bonsai/bim/module/owner/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddActor,
diff --git a/src/bonsai/bonsai/bim/module/owner/data.py b/src/bonsai/bonsai/bim/module/owner/data.py
index 9eb5b9e4c8..88a56d4b1f 100644
--- a/src/bonsai/bonsai/bim/module/owner/data.py
+++ b/src/bonsai/bonsai/bim/module/owner/data.py
@@ -16,13 +16,15 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any, Union
+
import bpy
import ifcopenshell
-import bonsai.tool as tool
-from typing import Any, Union
from ifcopenshell.util.doc import get_entity_doc
from natsort import natsorted
+import bonsai.tool as tool
+
def refresh():
PeopleData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/owner/operator.py b/src/bonsai/bonsai/bim/module/owner/operator.py
index 4d3434f00a..2470fd8227 100644
--- a/src/bonsai/bonsai/bim/module/owner/operator.py
+++ b/src/bonsai/bonsai/bim/module/owner/operator.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, get_args
+
import bpy
-import bonsai.tool as tool
-import bonsai.core.owner as core
import ifcopenshell.api.owner
from ifcopenshell.api.owner.add_address import ADDRESS_TYPE
-from typing import TYPE_CHECKING, get_args
+
+import bonsai.core.owner as core
+import bonsai.tool as tool
if TYPE_CHECKING:
import bpy.stub_internal.rna_enums as rna_enums
diff --git a/src/bonsai/bonsai/bim/module/owner/prop.py b/src/bonsai/bonsai/bim/module/owner/prop.py
index ecd8b8f723..dfe2b95ecd 100644
--- a/src/bonsai/bonsai/bim/module/owner/prop.py
+++ b/src/bonsai/bonsai/bim/module/owner/prop.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.owner.data import OwnerData, ActorData, ObjectActorData
from typing import TYPE_CHECKING, Literal
-from bpy.types import PropertyGroup
+
+import bpy
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.owner.data import ActorData, ObjectActorData, OwnerData
+from bonsai.bim.prop import Attribute, StrProperty
def get_user_person(self: "BIMOwnerProperties", context: bpy.types.Context) -> tool.Blender.BLENDER_ENUM_ITEMS:
diff --git a/src/bonsai/bonsai/bim/module/owner/ui.py b/src/bonsai/bonsai/bim/module/owner/ui.py
index f348804d77..f1e7ae9ea3 100644
--- a/src/bonsai/bonsai/bim/module/owner/ui.py
+++ b/src/bonsai/bonsai/bim/module/owner/ui.py
@@ -16,17 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any
+
import bpy
+
import bonsai.bim.helper
import bonsai.tool as tool
-from typing import Any
from bonsai.bim.module.owner.data import (
- PeopleData,
+ ActorData,
+ ApplicationsData,
+ ObjectActorData,
OrganisationsData,
OwnerData,
- ActorData,
- ObjectActorData,
- ApplicationsData,
+ PeopleData,
)
diff --git a/src/bonsai/bonsai/bim/module/patch/__init__.py b/src/bonsai/bonsai/bim/module/patch/__init__.py
index 0a35e4b0d8..fd5de30d38 100644
--- a/src/bonsai/bonsai/bim/module/patch/__init__.py
+++ b/src/bonsai/bonsai/bim/module/patch/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ExecuteIfcPatch,
diff --git a/src/bonsai/bonsai/bim/module/patch/operator.py b/src/bonsai/bonsai/bim/module/patch/operator.py
index 5ff7e998ce..57413214d6 100644
--- a/src/bonsai/bonsai/bim/module/patch/operator.py
+++ b/src/bonsai/bonsai/bim/module/patch/operator.py
@@ -16,17 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import json
+import os
+from pathlib import Path
+from typing import TYPE_CHECKING, cast
+
+import bpy
import ifcopenshell
import ifcpatch
-import bonsai.tool as tool
-import bonsai.core.patch as core
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
import bonsai.bim.handler
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from pathlib import Path
-from typing import cast, TYPE_CHECKING
+import bonsai.core.patch as core
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.prop import AttributeDataType
diff --git a/src/bonsai/bonsai/bim/module/patch/prop.py b/src/bonsai/bonsai/bim/module/patch/prop.py
index 3d372e5036..9382b4e786 100644
--- a/src/bonsai/bonsai/bim/module/patch/prop.py
+++ b/src/bonsai/bonsai/bim/module/patch/prop.py
@@ -16,25 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import importlib
import importlib.util
from pathlib import Path
-import ifcpatch
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
from typing import TYPE_CHECKING, Literal, Union
+import bpy
+import ifcpatch
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
+from bonsai.bim.prop import Attribute, StrProperty
ifcpatchrecipes_enum: list[tuple[str, str, str]] = []
diff --git a/src/bonsai/bonsai/bim/module/patch/ui.py b/src/bonsai/bonsai/bim/module/patch/ui.py
index 8c165d692f..c3101b4705 100644
--- a/src/bonsai/bonsai/bim/module/patch/ui.py
+++ b/src/bonsai/bonsai/bim/module/patch/ui.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.tool as tool
-from bonsai.bim.helper import prop_with_search
-from bonsai.bim.helper import draw_attributes
+
from typing import TYPE_CHECKING
+import bpy
+
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attributes, prop_with_search
+
if TYPE_CHECKING:
from bonsai.bim.prop import Attribute
diff --git a/src/bonsai/bonsai/bim/module/profile/__init__.py b/src/bonsai/bonsai/bim/module/profile/__init__.py
index 00a6728d32..d53deebb9c 100644
--- a/src/bonsai/bonsai/bim/module/profile/__init__.py
+++ b/src/bonsai/bonsai/bim/module/profile/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, data
+
+from . import data, operator, prop, ui
classes = (
operator.AddProfileDef,
diff --git a/src/bonsai/bonsai/bim/module/profile/data.py b/src/bonsai/bonsai/bim/module/profile/data.py
index eb21a72f25..34ea4d1b7b 100644
--- a/src/bonsai/bonsai/bim/module/profile/data.py
+++ b/src/bonsai/bonsai/bim/module/profile/data.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any
+
import bpy
import bpy.utils
import bpy.utils.previews
import ifcopenshell.util.doc
+
import bonsai.tool as tool
-from typing import Any
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/profile/operator.py b/src/bonsai/bonsai/bim/module/profile/operator.py
index 99f47923e4..871d8f3b86 100644
--- a/src/bonsai/bonsai/bim/module/profile/operator.py
+++ b/src/bonsai/bonsai/bim/module/profile/operator.py
@@ -20,14 +20,15 @@ import bpy
import ifcopenshell.api
import ifcopenshell.api.profile
import ifcopenshell.util.element
+
import bonsai.bim.helper
-import bonsai.tool as tool
import bonsai.bim.module.model.profile as model_profile
import bonsai.core.profile as core
-from bonsai.bim.module.model.decorator import ProfileDecorator
-from bonsai.bim.module.profile.prop import generate_thumbnail_for_active_profile
-from bonsai.bim.module.profile.data import refresh
+import bonsai.tool as tool
from bonsai.bim.module.geometry.helper import Helper
+from bonsai.bim.module.model.decorator import ProfileDecorator
+from bonsai.bim.module.profile.data import refresh
+from bonsai.bim.module.profile.prop import generate_thumbnail_for_active_profile
class LoadProfiles(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/profile/prop.py b/src/bonsai/bonsai/bim/module/profile/prop.py
index f69f6a6cd9..61e2546193 100644
--- a/src/bonsai/bonsai/bim/module/profile/prop.py
+++ b/src/bonsai/bonsai/bim/module/profile/prop.py
@@ -16,25 +16,27 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell
-import ifcopenshell.util.schema
import ifcopenshell.util.attribute
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.profile.data import ProfileData
-from bpy.types import PropertyGroup
+import ifcopenshell.util.schema
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.profile.data import ProfileData
+from bonsai.bim.prop import Attribute, StrProperty
def get_profile_classes(self: "BIMProfileProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/profile/ui.py b/src/bonsai/bonsai/bim/module/profile/ui.py
index 33b8ca7d58..3128fe82ea 100644
--- a/src/bonsai/bonsai/bim/module/profile/ui.py
+++ b/src/bonsai/bonsai/bim/module/profile/ui.py
@@ -17,13 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
+from bpy.types import Panel, UIList
+
import bonsai.bim.helper
import bonsai.tool as tool
-from bpy.types import Panel, UIList
from bonsai.bim.module.profile.data import ProfileData
from bonsai.bim.module.profile.prop import generate_thumbnail_for_active_profile
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.profile.prop import BIMProfileProperties, Profile
diff --git a/src/bonsai/bonsai/bim/module/project/__init__.py b/src/bonsai/bonsai/bim/module/project/__init__.py
index 26961b8c64..53ebaff14e 100644
--- a/src/bonsai/bonsai/bim/module/project/__init__.py
+++ b/src/bonsai/bonsai/bim/module/project/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, workspace, gizmo, decorator
+
+from . import decorator, gizmo, operator, prop, ui, workspace
classes = (
operator.AddProjectLibrary,
diff --git a/src/bonsai/bonsai/bim/module/project/data.py b/src/bonsai/bonsai/bim/module/project/data.py
index 1f51737205..e2e960b382 100644
--- a/src/bonsai/bonsai/bim/module/project/data.py
+++ b/src/bonsai/bonsai/bim/module/project/data.py
@@ -17,13 +17,15 @@
# along with Bonsai. If not, see .
import os
-import bpy
-import bonsai.tool as tool
-import ifcopenshell.util.file
-from bonsai.bim.ifc import IfcStore
-from pathlib import Path
from collections import defaultdict
-from typing import Union, Any
+from pathlib import Path
+from typing import Any, Union
+
+import bpy
+import ifcopenshell.util.file
+
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/project/decorator.py b/src/bonsai/bonsai/bim/module/project/decorator.py
index fbb3e9ae97..14035ca91c 100644
--- a/src/bonsai/bonsai/bim/module/project/decorator.py
+++ b/src/bonsai/bonsai/bim/module/project/decorator.py
@@ -16,17 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import gpu
+from typing import Union
+
import blf
-import bpy
import bmesh
-import bonsai.tool as tool
+import bpy
+import gpu
+from bpy.app.handlers import persistent
from bpy.types import SpaceView3D
from bpy_extras import view3d_utils
-from mathutils import Vector
from gpu_extras.batch import batch_for_shader
-from bpy.app.handlers import persistent
-from typing import Union
+from mathutils import Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.model.decorator import PolylineDecorator
diff --git a/src/bonsai/bonsai/bim/module/project/gizmo.py b/src/bonsai/bonsai/bim/module/project/gizmo.py
index bb372b9cb7..d91668eaa8 100644
--- a/src/bonsai/bonsai/bim/module/project/gizmo.py
+++ b/src/bonsai/bonsai/bim/module/project/gizmo.py
@@ -18,10 +18,11 @@
import bpy
-import bonsai.tool as tool
from bpy.types import GizmoGroup
from mathutils import Matrix
+import bonsai.tool as tool
+
class ClippingPlane(GizmoGroup):
bl_idname = "OBJECT_GGT_bim_clipping_plane"
diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py
index f8aebd2a34..8fad709de3 100644
--- a/src/bonsai/bonsai/bim/module/project/operator.py
+++ b/src/bonsai/bonsai/bim/module/project/operator.py
@@ -16,58 +16,63 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
-import time
+import datetime
import json
import logging
-import tempfile
-import traceback
+import os
import subprocess
-import datetime
-import ifcopenshell.api.attribute
-import numpy as np
+import tempfile
+import time
+import traceback
+from collections import defaultdict
+from math import radians
+from pathlib import Path
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.api
+import ifcopenshell.api.attribute
import ifcopenshell.api.nest
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
+import ifcopenshell.util.element
import ifcopenshell.util.file
-import ifcopenshell.util.selector
import ifcopenshell.util.geolocation
import ifcopenshell.util.representation
-import ifcopenshell.util.element
-import ifcopenshell.util.representation
+import ifcopenshell.util.selector
import ifcopenshell.util.shape
import ifcopenshell.util.shape_builder
import ifcopenshell.util.unit
+import numpy as np
+from bpy.app.handlers import persistent
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+from ifcopenshell.geom import ShapeElementType
+from mathutils import Matrix, Vector
+
import bonsai.bim.handler
import bonsai.bim.helper
import bonsai.bim.schema
-import bonsai.tool as tool
import bonsai.core.project as core
-from bpy_extras.io_utils import ExportHelper, ImportHelper
+import bonsai.tool as tool
+from bonsai.bim import export_ifc, import_ifc
from bonsai.bim.ifc import IfcStore
-from bonsai.bim.ui import IFCFileSelector
-from bonsai.bim import import_ifc
-from bonsai.bim import export_ifc
-from math import radians
-from pathlib import Path
-from collections import defaultdict
-from mathutils import Vector, Matrix
-from bpy.app.handlers import persistent
-from ifcopenshell.geom import ShapeElementType
-from bonsai.bim.module.project.data import LinksData, ProjectLibraryData
-from bonsai.bim.module.project.decorator import ProjectDecorator, ClippingPlaneDecorator, MeasureDecorator
-from bonsai.bim.module.project.prop import BreadcrumbType
-from bonsai.bim.module.model.decorator import PolylineDecorator, FaceAreaDecorator
+from bonsai.bim.module.model.decorator import FaceAreaDecorator, PolylineDecorator
from bonsai.bim.module.model.polyline import PolylineOperator
-from typing import Union, TYPE_CHECKING, get_args, Literal
+from bonsai.bim.module.project.data import LinksData, ProjectLibraryData
+from bonsai.bim.module.project.decorator import (
+ ClippingPlaneDecorator,
+ MeasureDecorator,
+ ProjectDecorator,
+)
+from bonsai.bim.module.project.prop import BreadcrumbType
+from bonsai.bim.ui import IFCFileSelector
if TYPE_CHECKING:
import bpy.stub_internal.rna_enums as rna_enums
+
from bonsai.bim.module.project.prop import Link
@@ -1848,9 +1853,10 @@ class LoadLinkedProject(bpy.types.Operator, ImportHelper):
return ImportHelper.invoke(self, context, event)
def execute(self, context):
- import ifcpatch
import multiprocessing
+ import ifcpatch
+
start = time.time()
pprops = tool.Project.get_project_props()
@@ -2160,7 +2166,11 @@ class QueryLinkedElement(bpy.types.Operator):
def execute(self, context):
import sqlite3
- from bpy_extras.view3d_utils import region_2d_to_vector_3d, region_2d_to_origin_3d
+
+ from bpy_extras.view3d_utils import (
+ region_2d_to_origin_3d,
+ region_2d_to_vector_3d,
+ )
LinksData.linked_data = {}
props = tool.Project.get_project_props()
@@ -2505,9 +2515,10 @@ class RefreshClippingPlanes(bpy.types.Operator):
break
def refresh_clipping_planes(self, context):
- import bmesh
from itertools import cycle
+ import bmesh
+
area = next(a for a in bpy.context.screen.areas if a.type == "VIEW_3D")
region = next(r for r in area.regions if r.type == "WINDOW")
data = region.data
@@ -2567,7 +2578,10 @@ class CreateClippingPlane(bpy.types.Operator):
bl_options = {"REGISTER", "UNDO"}
def execute(self, context):
- from bpy_extras.view3d_utils import region_2d_to_vector_3d, region_2d_to_origin_3d
+ from bpy_extras.view3d_utils import (
+ region_2d_to_origin_3d,
+ region_2d_to_vector_3d,
+ )
# Clean up deleted planes
props = tool.Project.get_project_props()
diff --git a/src/bonsai/bonsai/bim/module/project/prop.py b/src/bonsai/bonsai/bim/module/project/prop.py
index 6894392437..ea5c9c843a 100644
--- a/src/bonsai/bonsai/bim/module/project/prop.py
+++ b/src/bonsai/bonsai/bim/module/project/prop.py
@@ -17,26 +17,28 @@
# along with Bonsai. If not, see .
import os
+from collections.abc import Generator
+from typing import TYPE_CHECKING, Literal, Union, assert_never, get_args
+
import bpy
import ifcopenshell.util.element
import ifcopenshell.util.placement
-import bonsai.tool as tool
-import bonsai.bim.helper
-from bonsai.bim.module.project.data import ProjectData, ProjectLibraryData
-from bonsai.bim.ifc import IfcStore
-from bonsai.bim.prop import StrProperty, ObjProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
BoolProperty,
CollectionProperty,
EnumProperty,
FloatProperty,
IntProperty,
+ PointerProperty,
StringProperty,
)
-from typing import TYPE_CHECKING, Literal, Union, get_args, assert_never
-from collections.abc import Generator
+from bpy.types import PropertyGroup
+
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.project.data import ProjectData, ProjectLibraryData
+from bonsai.bim.prop import Attribute, ObjProperty, StrProperty
def get_export_schema(self: "BIMProjectProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/project/ui.py b/src/bonsai/bonsai/bim/module/project/ui.py
index ac70720dbe..79ed2c7d7a 100644
--- a/src/bonsai/bonsai/bim/module/project/ui.py
+++ b/src/bonsai/bonsai/bim/module/project/ui.py
@@ -17,19 +17,27 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import os
-import ifcopenshell
-import bonsai.bim
-import bonsai.tool as tool
-from bonsai.bim.helper import prop_with_search, draw_attributes
-from bpy.types import Panel, Menu, UIList
-from bonsai.bim.ifc import IfcStore
-from bonsai.bim.module.project.data import ProjectData, LinksData
from typing import TYPE_CHECKING
+import bpy
+import ifcopenshell
+from bpy.types import Menu, Panel, UIList
+
+import bonsai.bim
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attributes, prop_with_search
+from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.project.data import LinksData, ProjectData
+
if TYPE_CHECKING:
- from bonsai.bim.module.project.prop import LibraryElement, BIMProjectProperties, FilterCategory, Link
+ from bonsai.bim.module.project.prop import (
+ BIMProjectProperties,
+ FilterCategory,
+ LibraryElement,
+ Link,
+ )
def file_import_menu(self, context):
diff --git a/src/bonsai/bonsai/bim/module/project/workspace.py b/src/bonsai/bonsai/bim/module/project/workspace.py
index 59b86e431d..a72981c625 100644
--- a/src/bonsai/bonsai/bim/module/project/workspace.py
+++ b/src/bonsai/bonsai/bim/module/project/workspace.py
@@ -17,9 +17,11 @@
# along with Bonsai. If not, see .
import os
+
import bpy
-import bonsai.tool as tool
from bpy.types import WorkSpaceTool
+
+import bonsai.tool as tool
from bonsai.bim.module.project.data import LinksData
diff --git a/src/bonsai/bonsai/bim/module/pset/__init__.py b/src/bonsai/bonsai/bim/module/pset/__init__.py
index 7e0d72061b..5284e88f36 100644
--- a/src/bonsai/bonsai/bim/module/pset/__init__.py
+++ b/src/bonsai/bonsai/bim/module/pset/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddProposedProp,
diff --git a/src/bonsai/bonsai/bim/module/pset/data.py b/src/bonsai/bonsai/bim/module/pset/data.py
index 12b38efc98..969f54f387 100644
--- a/src/bonsai/bonsai/bim/module/pset/data.py
+++ b/src/bonsai/bonsai/bim/module/pset/data.py
@@ -23,9 +23,9 @@ import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.doc
import ifcopenshell.util.element
-import bonsai.tool as tool
-import bonsai.bim.schema
+import bonsai.bim.schema
+import bonsai.tool as tool
# TODO: Should this cache belong here? Dunno. Maybe.
is_expanded: dict[int, bool] = {}
diff --git a/src/bonsai/bonsai/bim/module/pset/operator.py b/src/bonsai/bonsai/bim/module/pset/operator.py
index 4e063b4ada..3257760531 100644
--- a/src/bonsai/bonsai/bim/module/pset/operator.py
+++ b/src/bonsai/bonsai/bim/module/pset/operator.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
-import ifcopenshell.api
-import ifcopenshell.api.pset
-import ifcopenshell.util.element
-import bonsai.bim.schema
-import bonsai.tool as tool
-import bonsai.core.pset as core
-import bonsai.bim.module.pset.data
-from bonsai.bim.ifc import IfcStore
from collections import defaultdict
from typing import TYPE_CHECKING
+import bpy
+import ifcopenshell.api
+import ifcopenshell.api.pset
+import ifcopenshell.util.element
+
+import bonsai.bim.module.pset.data
+import bonsai.bim.schema
+import bonsai.core.pset as core
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
+
if TYPE_CHECKING:
- from bonsai.bim.module.pset.prop import RenamePropertyEntry, AddEditPropertyEntry
+ from bonsai.bim.module.pset.prop import AddEditPropertyEntry, RenamePropertyEntry
class TogglePsetExpansion(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/pset/prop.py b/src/bonsai/bonsai/bim/module/pset/prop.py
index d89ba62be1..4b16e15010 100644
--- a/src/bonsai/bonsai/bim/module/pset/prop.py
+++ b/src/bonsai/bonsai/bim/module/pset/prop.py
@@ -16,33 +16,35 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
import bpy
-import bonsai.bim.schema
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.doc
import ifcopenshell.util.element
-import bonsai.tool as tool
-from bonsai.bim.prop import Attribute, StrProperty
-from bonsai.bim.module.pset.data import (
- AddEditCustomPropertiesData,
- ObjectPsetsData,
- MaterialPsetsData,
- PsetsGeneralData,
-)
-from bonsai.bim.module.material.data import ObjectMaterialData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import Union, Literal, TYPE_CHECKING, get_args, Literal
+from bpy.types import PropertyGroup
+
+import bonsai.bim.schema
+import bonsai.tool as tool
+from bonsai.bim.module.material.data import ObjectMaterialData
+from bonsai.bim.module.pset.data import (
+ AddEditCustomPropertiesData,
+ MaterialPsetsData,
+ ObjectPsetsData,
+ PsetsGeneralData,
+)
+from bonsai.bim.prop import Attribute, StrProperty
psetnames = {}
qtonames = {}
diff --git a/src/bonsai/bonsai/bim/module/pset/ui.py b/src/bonsai/bonsai/bim/module/pset/ui.py
index abd3a8b90f..03d6f8bb36 100644
--- a/src/bonsai/bonsai/bim/module/pset/ui.py
+++ b/src/bonsai/bonsai/bim/module/pset/ui.py
@@ -17,26 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Literal, Optional, assert_never
+
import bpy
-import bonsai.tool as tool
from bpy.types import Panel
-from bonsai.bim.helper import prop_with_search, get_display_value, draw_attribute
+
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attribute, get_display_value, prop_with_search
+from bonsai.bim.module.material.data import ObjectMaterialData
from bonsai.bim.module.pset.data import (
- ObjectPsetsData,
- ObjectQtosData,
+ GroupPsetData,
+ GroupQtosData,
MaterialPsetsData,
MaterialSetItemPsetsData,
- TaskQtosData,
- ResourceQtosData,
- ResourcePsetsData,
- GroupQtosData,
- GroupPsetData,
+ ObjectPsetsData,
+ ObjectQtosData,
ProfilePsetsData,
+ ResourcePsetsData,
+ ResourceQtosData,
+ TaskQtosData,
WorkSchedulePsetsData,
ZonePsetsData,
)
-from bonsai.bim.module.material.data import ObjectMaterialData
-from typing import Any, Optional, TYPE_CHECKING, assert_never, Literal
if TYPE_CHECKING:
from bonsai.bim.module.pset.prop import IfcProperty, PsetProperties
diff --git a/src/bonsai/bonsai/bim/module/pset_template/__init__.py b/src/bonsai/bonsai/bim/module/pset_template/__init__.py
index 204824cb11..dc67e900fb 100644
--- a/src/bonsai/bonsai/bim/module/pset_template/__init__.py
+++ b/src/bonsai/bonsai/bim/module/pset_template/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddPropEnum,
diff --git a/src/bonsai/bonsai/bim/module/pset_template/data.py b/src/bonsai/bonsai/bim/module/pset_template/data.py
index 84d65f25f1..1725b974f1 100644
--- a/src/bonsai/bonsai/bim/module/pset_template/data.py
+++ b/src/bonsai/bonsai/bim/module/pset_template/data.py
@@ -17,14 +17,16 @@
# along with Bonsai. If not, see .
import os
-import bpy
import pathlib
+from typing import Any
+
+import bpy
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.doc
+
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from typing import Any
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/pset_template/operator.py b/src/bonsai/bonsai/bim/module/pset_template/operator.py
index 0711376439..e956917df3 100644
--- a/src/bonsai/bonsai/bim/module/pset_template/operator.py
+++ b/src/bonsai/bonsai/bim/module/pset_template/operator.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset_template
-import bonsai.bim.schema
+
import bonsai.bim.handler
+import bonsai.bim.schema
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
diff --git a/src/bonsai/bonsai/bim/module/pset_template/prop.py b/src/bonsai/bonsai/bim/module/pset_template/prop.py
index fdd6188a76..9ec31b364f 100644
--- a/src/bonsai/bonsai/bim/module/pset_template/prop.py
+++ b/src/bonsai/bonsai/bim/module/pset_template/prop.py
@@ -17,26 +17,28 @@
# along with Bonsai. If not, see .
import os
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell
import ifcopenshell.util.attribute
-from ifcopenshell.util.doc import get_attribute_doc
-import bonsai.tool as tool
-from bonsai.bim.module.pset_template.data import PsetTemplatesData
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.ifc import IfcStore
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING
+from bpy.types import PropertyGroup
+from ifcopenshell.util.doc import get_attribute_doc
+
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.pset_template.data import PsetTemplatesData
+from bonsai.bim.prop import Attribute, StrProperty
def updatePsetTemplateFiles(self, context):
diff --git a/src/bonsai/bonsai/bim/module/pset_template/ui.py b/src/bonsai/bonsai/bim/module/pset_template/ui.py
index af46fdc0e7..6576e8f56c 100644
--- a/src/bonsai/bonsai/bim/module/pset_template/ui.py
+++ b/src/bonsai/bonsai/bim/module/pset_template/ui.py
@@ -17,8 +17,9 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
from bpy.types import Panel
+
+import bonsai.tool as tool
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.pset_template.data import PsetTemplatesData
diff --git a/src/bonsai/bonsai/bim/module/qto/__init__.py b/src/bonsai/bonsai/bim/module/qto/__init__.py
index f372462f73..f4d5becb73 100644
--- a/src/bonsai/bonsai/bim/module/qto/__init__.py
+++ b/src/bonsai/bonsai/bim/module/qto/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.CalculateCircleRadius,
diff --git a/src/bonsai/bonsai/bim/module/qto/calculator.py b/src/bonsai/bonsai/bim/module/qto/calculator.py
index 091d7e1f9f..c0e5aa474f 100644
--- a/src/bonsai/bonsai/bim/module/qto/calculator.py
+++ b/src/bonsai/bonsai/bim/module/qto/calculator.py
@@ -16,21 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
+from typing import Literal, Optional, Union, assert_never
+
import bmesh
-import mathutils
-import bonsai.tool as tool
+import bpy
+import ifc5d.qto
import ifcopenshell
import ifcopenshell.geom
import ifcopenshell.util.element
-import ifc5d.qto
-from mathutils import Vector, Matrix
+import mathutils
+from mathutils import Matrix, Vector
from mathutils.bvhtree import BVHTree
from shapely.geometry import Polygon
from shapely.ops import unary_union
-from typing import Literal, Union, Optional, assert_never
+import bonsai.tool as tool
AxisType = Literal["x", "y", "z"]
VectorTuple = tuple[float, float, float]
diff --git a/src/bonsai/bonsai/bim/module/qto/data.py b/src/bonsai/bonsai/bim/module/qto/data.py
index ef780d749f..162a4bf7c6 100644
--- a/src/bonsai/bonsai/bim/module/qto/data.py
+++ b/src/bonsai/bonsai/bim/module/qto/data.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/qto/helper.py b/src/bonsai/bonsai/bim/module/qto/helper.py
index 50253cbb63..d4f94c491f 100644
--- a/src/bonsai/bonsai/bim/module/qto/helper.py
+++ b/src/bonsai/bonsai/bim/module/qto/helper.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
-import bonsai.tool as tool
from collections.abc import Callable
+import bmesh
+import bpy
+
+import bonsai.tool as tool
+
def calculate_height(obj: bpy.types.Object) -> float:
return obj.dimensions[2]
diff --git a/src/bonsai/bonsai/bim/module/qto/operator.py b/src/bonsai/bonsai/bim/module/qto/operator.py
index 47b0f5059a..572c65e258 100644
--- a/src/bonsai/bonsai/bim/module/qto/operator.py
+++ b/src/bonsai/bonsai/bim/module/qto/operator.py
@@ -19,11 +19,12 @@
import bpy
import ifcopenshell
import ifcopenshell.api
-import bonsai.tool as tool
-import bonsai.core.qto as core
-from bonsai.bim.module.qto import helper
from ifcopenshell.util.profiler import Profiler
+import bonsai.core.qto as core
+import bonsai.tool as tool
+from bonsai.bim.module.qto import helper
+
class CalculateCircleRadius(bpy.types.Operator):
bl_idname = "bim.calculate_circle_radius"
diff --git a/src/bonsai/bonsai/bim/module/qto/prop.py b/src/bonsai/bonsai/bim/module/qto/prop.py
index 57e04d4cc1..9952285d30 100644
--- a/src/bonsai/bonsai/bim/module/qto/prop.py
+++ b/src/bonsai/bonsai/bim/module/qto/prop.py
@@ -16,23 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-import ifc5d.qto
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
from typing import TYPE_CHECKING, Union
+import bpy
+import ifc5d.qto
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.prop import Attribute, StrProperty
CALCULATOR_FUNCTION_ENUM_ITEMS: list[Union[tuple[str, str, str], None]] = []
diff --git a/src/bonsai/bonsai/bim/module/qto/ui.py b/src/bonsai/bonsai/bim/module/qto/ui.py
index 9029a63066..032df25b20 100644
--- a/src/bonsai/bonsai/bim/module/qto/ui.py
+++ b/src/bonsai/bonsai/bim/module/qto/ui.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
import bpy
+
import bonsai.tool as tool
from bonsai.bim.module.qto.data import QtoData
diff --git a/src/bonsai/bonsai/bim/module/resource/__init__.py b/src/bonsai/bonsai/bim/module/resource/__init__.py
index ae08660afd..89f21f4e29 100644
--- a/src/bonsai/bonsai/bim/module/resource/__init__.py
+++ b/src/bonsai/bonsai/bim/module/resource/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddResource,
diff --git a/src/bonsai/bonsai/bim/module/resource/data.py b/src/bonsai/bonsai/bim/module/resource/data.py
index 601b61eb7b..cc862cf1dd 100644
--- a/src/bonsai/bonsai/bim/module/resource/data.py
+++ b/src/bonsai/bonsai/bim/module/resource/data.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any
+
import bpy
-import bonsai.tool as tool
import ifcopenshell
import ifcopenshell.util.constraint
import ifcopenshell.util.cost
import ifcopenshell.util.date
import ifcopenshell.util.resource
-from typing import Any
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/resource/operator.py b/src/bonsai/bonsai/bim/module/resource/operator.py
index 4d9a28c061..a82cc22918 100644
--- a/src/bonsai/bonsai/bim/module/resource/operator.py
+++ b/src/bonsai/bonsai/bim/module/resource/operator.py
@@ -18,10 +18,11 @@
import bpy
import ifcopenshell.api.pset
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from bonsai.bim.module.resource.ui import draw_productivity_ui
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+
import bonsai.core.resource as core
import bonsai.tool as tool
+from bonsai.bim.module.resource.ui import draw_productivity_ui
class LoadResources(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/resource/prop.py b/src/bonsai/bonsai/bim/module/resource/prop.py
index 350417aa69..4c6828e56c 100644
--- a/src/bonsai/bonsai/bim/module/resource/prop.py
+++ b/src/bonsai/bonsai/bim/module/resource/prop.py
@@ -16,27 +16,29 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, get_args
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.resource
import ifcopenshell.util.resource
-import bonsai.tool as tool
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
import bonsai.bim.module.pset.data
import bonsai.bim.module.resource.data
import bonsai.bim.module.sequence.data
+import bonsai.tool as tool
from bonsai.bim.prop import Attribute, ISODuration
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-from typing import TYPE_CHECKING, Literal, get_args
quantitytypes_enum: dict[str, tool.Blender.BLENDER_ENUM_ITEMS] = {}
diff --git a/src/bonsai/bonsai/bim/module/resource/ui.py b/src/bonsai/bonsai/bim/module/resource/ui.py
index b061600978..679eed8782 100644
--- a/src/bonsai/bonsai/bim/module/resource/ui.py
+++ b/src/bonsai/bonsai/bim/module/resource/ui.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
import bpy
-import bonsai.tool as tool
-import bonsai.bim.helper
from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.tool as tool
from bonsai.bim.module.resource.data import ResourceData
-from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
+ from bonsai.bim.module.resource.prop import BIMResourceTreeProperties, Resource
from bonsai.bim.prop import ISODuration
- from bonsai.bim.module.resource.prop import Resource, BIMResourceTreeProperties
class BIM_PT_resources(Panel):
diff --git a/src/bonsai/bonsai/bim/module/root/__init__.py b/src/bonsai/bonsai/bim/module/root/__init__.py
index 3e6f280eb2..7192dcdff4 100644
--- a/src/bonsai/bonsai/bim/module/root/__init__.py
+++ b/src/bonsai/bonsai/bim/module/root/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddElement,
diff --git a/src/bonsai/bonsai/bim/module/root/data.py b/src/bonsai/bonsai/bim/module/root/data.py
index 7690210c9b..66412e7d48 100644
--- a/src/bonsai/bonsai/bim/module/root/data.py
+++ b/src/bonsai/bonsai/bim/module/root/data.py
@@ -17,13 +17,19 @@
# along with Bonsai. If not, see .
from collections import defaultdict
+from typing import Union
+
import bpy
import ifcopenshell.util.attribute
import ifcopenshell.util.element
import ifcopenshell.util.schema
-from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc, get_class_suggestions
+from ifcopenshell.util.doc import (
+ get_class_suggestions,
+ get_entity_doc,
+ get_predefined_type_doc,
+)
+
import bonsai.tool as tool
-from typing import Union
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/root/operator.py b/src/bonsai/bonsai/bim/module/root/operator.py
index 5a0782203e..a2ac73f200 100644
--- a/src/bonsai/bonsai/bim/module/root/operator.py
+++ b/src/bonsai/bonsai/bim/module/root/operator.py
@@ -16,8 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from typing import TYPE_CHECKING
+
import bmesh
+import bpy
import idprop
import ifcopenshell
import ifcopenshell.api
@@ -25,20 +27,20 @@ import ifcopenshell.api.geometry
import ifcopenshell.api.material
import ifcopenshell.api.pset
import ifcopenshell.api.root
-import ifcopenshell.util.schema
import ifcopenshell.util.element
+import ifcopenshell.util.schema
import ifcopenshell.util.shape_builder
import ifcopenshell.util.type
import ifcopenshell.util.unit
-import bonsai.bim.handler
-import bonsai.core.root as core
-import bonsai.core.geometry
-import bonsai.tool as tool
-import bonsai.bim.module.root.prop as root_prop
-from bonsai.bim.ifc import IfcStore
-from bonsai.bim.helper import get_enum_items, prop_with_search
from mathutils import Vector
-from typing import TYPE_CHECKING
+
+import bonsai.bim.handler
+import bonsai.bim.module.root.prop as root_prop
+import bonsai.core.geometry
+import bonsai.core.root as core
+import bonsai.tool as tool
+from bonsai.bim.helper import get_enum_items, prop_with_search
+from bonsai.bim.ifc import IfcStore
class EnableReassignClass(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/root/prop.py b/src/bonsai/bonsai/bim/module/root/prop.py
index 9bd00c4c68..854eb6d0f0 100644
--- a/src/bonsai/bonsai/bim/module/root/prop.py
+++ b/src/bonsai/bonsai/bim/module/root/prop.py
@@ -16,25 +16,27 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.schema
import ifcopenshell.util.type
-import bonsai.tool as tool
-from bonsai.bim.module.root.data import IfcClassData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.root.data import IfcClassData
def get_ifc_predefined_types(self: "BIMRootProperties", context: bpy.types.Context) -> list[tuple[str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/root/ui.py b/src/bonsai/bonsai/bim/module/root/ui.py
index facf619ad8..72eadb4e39 100644
--- a/src/bonsai/bonsai/bim/module/root/ui.py
+++ b/src/bonsai/bonsai/bim/module/root/ui.py
@@ -17,12 +17,13 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
-import bonsai.bim.module.root.prop as root_prop
from bpy.types import Panel
+
+import bonsai.bim.module.root.prop as root_prop
+import bonsai.tool as tool
from bonsai.bim.helper import prop_with_search
-from bonsai.bim.module.root.data import IfcClassData
from bonsai.bim.module.model.data import AuthoringData
+from bonsai.bim.module.root.data import IfcClassData
class BIM_PT_class(Panel):
diff --git a/src/bonsai/bonsai/bim/module/search/__init__.py b/src/bonsai/bonsai/bim/module/search/__init__.py
index 88cb2f6ed4..5033fd3eb4 100644
--- a/src/bonsai/bonsai/bim/module/search/__init__.py
+++ b/src/bonsai/bonsai/bim/module/search/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ActivateContainerFilter,
diff --git a/src/bonsai/bonsai/bim/module/search/data.py b/src/bonsai/bonsai/bim/module/search/data.py
index 4bde0aa359..8c2fad00b0 100644
--- a/src/bonsai/bonsai/bim/module/search/data.py
+++ b/src/bonsai/bonsai/bim/module/search/data.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+
+import bpy
import ifcopenshell.util.element
-import bonsai.tool as tool
from natsort import natsorted
+import bonsai.tool as tool
+
def refresh():
SearchData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/search/operator.py b/src/bonsai/bonsai/bim/module/search/operator.py
index a8c79c11bb..47e87a3caa 100644
--- a/src/bonsai/bonsai/bim/module/search/operator.py
+++ b/src/bonsai/bonsai/bim/module/search/operator.py
@@ -16,32 +16,34 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import json
import bisect
+import json
import traceback
+from typing import TYPE_CHECKING, Literal, assert_never, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.group
import ifcopenshell.util.element
import ifcopenshell.util.selector
-import bonsai.tool as tool
-import bonsai.core.search as core
-from bonsai.bim.ifc import IfcStore
-from natsort import natsorted
-from bpy.types import PropertyGroup, Operator
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import Operator, PropertyGroup
+from natsort import natsorted
+
+import bonsai.core.search as core
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
from bonsai.bim.prop import StrProperty
-from typing import TYPE_CHECKING, Literal, get_args, assert_never
def draw_text_editor_header(self, context):
diff --git a/src/bonsai/bonsai/bim/module/search/prop.py b/src/bonsai/bonsai/bim/module/search/prop.py
index 3cb8a12252..e3403b5abe 100644
--- a/src/bonsai/bonsai/bim/module/search/prop.py
+++ b/src/bonsai/bonsai/bim/module/search/prop.py
@@ -16,24 +16,31 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, get_args
+
import bpy
-import bonsai.tool as tool
import ifcopenshell.util.schema
-from bonsai.bim.prop import ObjProperty, BIMFilterGroup
-from bonsai.bim.module.search.data import SearchData, ColourByPropertyData, SelectSimilarData
-from bpy.types import PropertyGroup
-from . import ui, prop, operator
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, get_args
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.search.data import (
+ ColourByPropertyData,
+ SearchData,
+ SelectSimilarData,
+)
+from bonsai.bim.prop import BIMFilterGroup, ObjProperty
+
+from . import operator, prop, ui
def get_element_key(self: "BIMSearchProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/search/ui.py b/src/bonsai/bonsai/bim/module/search/ui.py
index 3481e3709b..3b01fdcbbe 100644
--- a/src/bonsai/bonsai/bim/module/search/ui.py
+++ b/src/bonsai/bonsai/bim/module/search/ui.py
@@ -17,15 +17,26 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.tool as tool
-import bonsai.bim.helper
-from bpy.types import Panel
-from bonsai.bim.module.search.data import SearchData, ColourByPropertyData, SelectSimilarData
+
from typing import TYPE_CHECKING
+import bpy
+from bpy.types import Panel
+
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai.bim.module.search.data import (
+ ColourByPropertyData,
+ SearchData,
+ SelectSimilarData,
+)
+
if TYPE_CHECKING:
- from bonsai.bim.module.search.prop import BIMSearchProperties, BIMColour, BIMFilterItem
+ from bonsai.bim.module.search.prop import (
+ BIMColour,
+ BIMFilterItem,
+ BIMSearchProperties,
+ )
class BIM_PT_search(Panel):
diff --git a/src/bonsai/bonsai/bim/module/sequence/__init__.py b/src/bonsai/bonsai/bim/module/sequence/__init__.py
index 3262b64527..e15d4e80ee 100644
--- a/src/bonsai/bonsai/bim/module/sequence/__init__.py
+++ b/src/bonsai/bonsai/bim/module/sequence/__init__.py
@@ -19,7 +19,8 @@
# pyright: reportAttributeAccessIssue=false
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddAnimationCamera,
diff --git a/src/bonsai/bonsai/bim/module/sequence/data.py b/src/bonsai/bonsai/bim/module/sequence/data.py
index 94df71eacd..7ea6050ca3 100644
--- a/src/bonsai/bonsai/bim/module/sequence/data.py
+++ b/src/bonsai/bonsai/bim/module/sequence/data.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import json
+from typing import Any
+
import bpy
-import bonsai.tool as tool
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.date
from ifcopenshell.util.doc import get_predefined_type_doc
-import json
-from typing import Any
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/sequence/helper.py b/src/bonsai/bonsai/bim/module/sequence/helper.py
index 43dcd1d59b..50d2367144 100644
--- a/src/bonsai/bonsai/bim/module/sequence/helper.py
+++ b/src/bonsai/bonsai/bim/module/sequence/helper.py
@@ -18,12 +18,13 @@
from __future__ import annotations
-import isodate
+from datetime import datetime, timedelta
+from typing import Any, Union
+
import bpy
-from dateutil import parser
import ifcopenshell.util.date
-from datetime import timedelta, datetime
-from typing import Union, Any
+import isodate
+from dateutil import parser
from bonsai.bim.prop import ISODuration
diff --git a/src/bonsai/bonsai/bim/module/sequence/operator.py b/src/bonsai/bonsai/bim/module/sequence/operator.py
index c07b9a0496..2b4c317cd8 100644
--- a/src/bonsai/bonsai/bim/module/sequence/operator.py
+++ b/src/bonsai/bonsai/bim/module/sequence/operator.py
@@ -18,23 +18,23 @@
# pyright: reportUnnecessaryTypeIgnoreComment=error
+import calendar
+import time
import types
-
from collections import Counter
+from datetime import datetime
from functools import cache
+from typing import TYPE_CHECKING, Union, assert_never, get_args
import bpy
-import time
-import calendar
import ifcopenshell.api.pset
import ifcopenshell.util.element
+from bpy_extras.io_utils import ExportHelper, ImportHelper
+from dateutil import parser, relativedelta
+
import bonsai.bim.schema
import bonsai.core.sequence as core
import bonsai.tool as tool
-from datetime import datetime
-from dateutil import parser, relativedelta
-from bpy_extras.io_utils import ImportHelper, ExportHelper
-from typing import Union, get_args, TYPE_CHECKING, assert_never
if TYPE_CHECKING:
from bpy.stub_internal.rna_enums import OperatorReturnItems
diff --git a/src/bonsai/bonsai/bim/module/sequence/prop.py b/src/bonsai/bonsai/bim/module/sequence/prop.py
index 1c35910e6c..6a5937ac45 100644
--- a/src/bonsai/bonsai/bim/module/sequence/prop.py
+++ b/src/bonsai/bonsai/bim/module/sequence/prop.py
@@ -16,32 +16,35 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
import bpy
-import isodate
import ifcopenshell.api
import ifcopenshell.api.sequence
import ifcopenshell.util.attribute
import ifcopenshell.util.date
-import bonsai.tool as tool
-import bonsai.core.sequence as core
-from bonsai.bim.module.sequence.data import SequenceData, AnimationColorSchemeData, refresh as refresh_sequence_data
-import bonsai.bim.module.resource.data
-import bonsai.bim.module.pset.data
-from mathutils import Color
-from bonsai.bim.prop import Attribute, ISODuration
-from dateutil import parser
-from bpy.types import PropertyGroup
+import isodate
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Literal, Union, get_args
+from bpy.types import PropertyGroup
+from dateutil import parser
+from mathutils import Color
+
+import bonsai.bim.module.pset.data
+import bonsai.bim.module.resource.data
+import bonsai.core.sequence as core
+import bonsai.tool as tool
+from bonsai.bim.module.sequence.data import AnimationColorSchemeData, SequenceData
+from bonsai.bim.module.sequence.data import refresh as refresh_sequence_data
+from bonsai.bim.prop import Attribute, ISODuration
def getTaskColumns(self, context):
diff --git a/src/bonsai/bonsai/bim/module/sequence/ui.py b/src/bonsai/bonsai/bim/module/sequence/ui.py
index 9178268c3a..0ecd772276 100644
--- a/src/bonsai/bonsai/bim/module/sequence/ui.py
+++ b/src/bonsai/bonsai/bim/module/sequence/ui.py
@@ -16,26 +16,32 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Any, Optional
+
import bpy
import ifcopenshell
import isodate
-import bonsai.tool as tool
-import bonsai.bim.helper
from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.tool as tool
from bonsai.bim.helper import draw_attributes
from bonsai.bim.module.sequence.data import (
+ AnimationColorSchemeData,
+ SequenceData,
+ StatusData,
+ TaskICOMData,
WorkPlansData,
WorkScheduleData,
- SequenceData,
- TaskICOMData,
- AnimationColorSchemeData,
- StatusData,
)
-from typing import Any, Optional, TYPE_CHECKING
if TYPE_CHECKING:
+ from bonsai.bim.module.sequence.prop import (
+ BIMTaskTreeProperties,
+ BIMWorkScheduleProperties,
+ Task,
+ )
from bonsai.bim.prop import Attribute
- from bonsai.bim.module.sequence.prop import BIMWorkScheduleProperties, BIMTaskTreeProperties, Task
class BIM_PT_status(Panel):
diff --git a/src/bonsai/bonsai/bim/module/spatial/__init__.py b/src/bonsai/bonsai/bim/module/spatial/__init__.py
index 6c62218532..57cc84a8f1 100644
--- a/src/bonsai/bonsai/bim/module/spatial/__init__.py
+++ b/src/bonsai/bonsai/bim/module/spatial/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, workspace
+
+from . import operator, prop, ui, workspace
classes = (
operator.AssignContainer,
diff --git a/src/bonsai/bonsai/bim/module/spatial/data.py b/src/bonsai/bonsai/bim/module/spatial/data.py
index baed31f49d..5885a9a76e 100644
--- a/src/bonsai/bonsai/bim/module/spatial/data.py
+++ b/src/bonsai/bonsai/bim/module/spatial/data.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
-import ifcopenshell.util.element
from typing import Any
+import bpy
+import ifcopenshell.util.element
+
+import bonsai.tool as tool
+
def refresh():
SpatialData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/spatial/decorator.py b/src/bonsai/bonsai/bim/module/spatial/decorator.py
index 824fafec1f..8d66d4e8a6 100644
--- a/src/bonsai/bonsai/bim/module/spatial/decorator.py
+++ b/src/bonsai/bonsai/bim/module/spatial/decorator.py
@@ -17,13 +17,14 @@
# along with Bonsai. If not, see .
import blf
-import gpu
import bmesh
-import bonsai.tool as tool
+import gpu
from bpy.types import SpaceView3D
-from mathutils import Vector
-from gpu_extras.batch import batch_for_shader
from bpy_extras.view3d_utils import location_3d_to_region_2d
+from gpu_extras.batch import batch_for_shader
+from mathutils import Vector
+
+import bonsai.tool as tool
class GridDecorator:
diff --git a/src/bonsai/bonsai/bim/module/spatial/operator.py b/src/bonsai/bonsai/bim/module/spatial/operator.py
index 075c3a9a38..8e88f64cee 100644
--- a/src/bonsai/bonsai/bim/module/spatial/operator.py
+++ b/src/bonsai/bonsai/bim/module/spatial/operator.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.util.element
-import bonsai.tool as tool
-import bonsai.core.spatial as core
+
import bonsai.bim.handler
-from typing import TYPE_CHECKING
+import bonsai.core.spatial as core
+import bonsai.tool as tool
class ReferenceStructure(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/spatial/prop.py b/src/bonsai/bonsai/bim/module/spatial/prop.py
index 3d54581551..2f12e164fc 100644
--- a/src/bonsai/bonsai/bim/module/spatial/prop.py
+++ b/src/bonsai/bonsai/bim/module/spatial/prop.py
@@ -16,28 +16,30 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
-from bonsai.bim.prop import ObjProperty
-from bonsai.bim.module.spatial.data import SpatialDecompositionData
-from bpy.types import PropertyGroup
-from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
- BoolProperty,
- IntProperty,
- FloatProperty,
- FloatVectorProperty,
- CollectionProperty,
-)
-import bonsai.tool as tool
-import bonsai.bim.handler
-import bonsai.core.geometry
import ifcopenshell
import ifcopenshell.api.attribute
import ifcopenshell.util.unit
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ FloatProperty,
+ FloatVectorProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
+from bpy.types import PropertyGroup
+
+import bonsai.bim.handler
+import bonsai.core.geometry
+import bonsai.tool as tool
+from bonsai.bim.module.spatial.data import SpatialDecompositionData
+from bonsai.bim.prop import ObjProperty
from bonsai.tool.unit import parse_distance_string
-from typing import TYPE_CHECKING, Union, Literal
def get_subelement_class(
diff --git a/src/bonsai/bonsai/bim/module/spatial/ui.py b/src/bonsai/bonsai/bim/module/spatial/ui.py
index acc604f992..69d9068f85 100644
--- a/src/bonsai/bonsai/bim/module/spatial/ui.py
+++ b/src/bonsai/bonsai/bim/module/spatial/ui.py
@@ -17,14 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, cast
+
import bpy
from bpy.types import Panel, UIList
-from bonsai.bim.module.spatial.data import SpatialData, SpatialDecompositionData
+
import bonsai.tool as tool
-from typing import TYPE_CHECKING, cast, Any
+from bonsai.bim.module.spatial.data import SpatialData, SpatialDecompositionData
if TYPE_CHECKING:
- from bonsai.bim.module.spatial.prop import BIMSpatialDecompositionProperties, BIMContainer, Element
+ from bonsai.bim.module.spatial.prop import (
+ BIMContainer,
+ BIMSpatialDecompositionProperties,
+ Element,
+ )
class BIM_PT_spatial(Panel):
diff --git a/src/bonsai/bonsai/bim/module/spatial/workspace.py b/src/bonsai/bonsai/bim/module/spatial/workspace.py
index aa57b03631..6f34099861 100644
--- a/src/bonsai/bonsai/bim/module/spatial/workspace.py
+++ b/src/bonsai/bonsai/bim/module/spatial/workspace.py
@@ -18,12 +18,14 @@
import os
+from functools import partial
+
import bpy
+from bpy.types import WorkSpaceTool
+
+import bonsai.core.spatial
import bonsai.tool as tool
from bonsai.bim.module.model.data import AuthoringData
-from bpy.types import WorkSpaceTool
-import bonsai.core.spatial
-from functools import partial
class SpatialTool(WorkSpaceTool):
diff --git a/src/bonsai/bonsai/bim/module/structural/__init__.py b/src/bonsai/bonsai/bim/module/structural/__init__.py
index db72ad497c..3fa0cb9497 100644
--- a/src/bonsai/bonsai/bim/module/structural/__init__.py
+++ b/src/bonsai/bonsai/bim/module/structural/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, workspace
+
+from . import operator, prop, ui, workspace
classes = (
operator.ShowLoads,
diff --git a/src/bonsai/bonsai/bim/module/structural/data.py b/src/bonsai/bonsai/bim/module/structural/data.py
index f3215ddff3..1cdfcc2297 100644
--- a/src/bonsai/bonsai/bim/module/structural/data.py
+++ b/src/bonsai/bonsai/bim/module/structural/data.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
import ifcopenshell.util.doc
+import bonsai.tool as tool
+
def refresh():
StructuralBoundaryConditionsData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/structural/decorator.py b/src/bonsai/bonsai/bim/module/structural/decorator.py
index 2bcc90c647..32925be61c 100644
--- a/src/bonsai/bonsai/bim/module/structural/decorator.py
+++ b/src/bonsai/bonsai/bim/module/structural/decorator.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-from mathutils import Vector
-import numpy as np
+from collections.abc import Iterable
+from typing import Union
+
+import blf
import bpy
import gpu
-import blf
-import bonsai.tool as tool
+import numpy as np
from bpy.types import SpaceView3D
from gpu_extras.batch import batch_for_shader
-from typing import Union
-from collections.abc import Iterable
+from mathutils import Vector
+
+import bonsai.tool as tool
from bonsai.bim.module.structural.load_decoration_data import ShaderInfo
diff --git a/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py b/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py
index 7df67e82d4..132c305ad1 100644
--- a/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py
+++ b/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
-import numpy as np
+from collections.abc import Iterable
from math import sin
-from mathutils import Vector
+from typing import Literal, TypedDict
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.unit
import ifcopenshell.util.unit as ifcunit
+import numpy as np
+from mathutils import Vector
+
import bonsai.tool as tool
from bonsai.bim.module.structural.shader import DecorationShader
-from typing import Literal, TypedDict
-from collections.abc import Iterable
class MemberInfo(TypedDict):
diff --git a/src/bonsai/bonsai/bim/module/structural/operator.py b/src/bonsai/bonsai/bim/module/structural/operator.py
index 9840f87c1e..edb3ab18ae 100644
--- a/src/bonsai/bonsai/bim/module/structural/operator.py
+++ b/src/bonsai/bonsai/bim/module/structural/operator.py
@@ -16,20 +16,22 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import json
+from math import degrees
+from typing import TYPE_CHECKING, Any, Literal
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.aggregate
import ifcopenshell.api.group
import ifcopenshell.api.structural
+from mathutils import Matrix, Vector
+
import bonsai.bim.helper
import bonsai.core.structural as core
import bonsai.tool as tool
-from math import degrees
-from mathutils import Vector, Matrix
from bonsai.bim.module.structural.decorator import LoadsDecorator
-from typing import Literal, Any, TYPE_CHECKING
class ShowLoads(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/structural/prop.py b/src/bonsai/bonsai/bim/module/structural/prop.py
index c0db44fac6..24d6ead470 100644
--- a/src/bonsai/bonsai/bim/module/structural/prop.py
+++ b/src/bonsai/bonsai/bim/module/structural/prop.py
@@ -17,27 +17,29 @@
# along with Bonsai. If not, see .
from math import radians
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.structural.data import (
- StructuralLoadCasesData,
- StructuralLoadsData,
- BoundaryConditionsData,
- LoadGroupDecorationData,
-)
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.structural.data import (
+ BoundaryConditionsData,
+ LoadGroupDecorationData,
+ StructuralLoadCasesData,
+ StructuralLoadsData,
+)
+from bonsai.bim.prop import Attribute, StrProperty
def get_load_groups_to_show(self: "BIMStructuralProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/structural/shader.py b/src/bonsai/bonsai/bim/module/structural/shader.py
index 389ed34839..d6f92028d6 100644
--- a/src/bonsai/bonsai/bim/module/structural/shader.py
+++ b/src/bonsai/bonsai/bim/module/structural/shader.py
@@ -16,9 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import gpu
from typing import Literal
+import gpu
+
class DecorationShader:
"shader for the load decorations"
diff --git a/src/bonsai/bonsai/bim/module/structural/ui.py b/src/bonsai/bonsai/bim/module/structural/ui.py
index 44b56633a1..6d93bd3ffd 100644
--- a/src/bonsai/bonsai/bim/module/structural/ui.py
+++ b/src/bonsai/bonsai/bim/module/structural/ui.py
@@ -17,31 +17,34 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Union
+
import bpy
-import bonsai.tool as tool
-import bonsai.bim.helper
from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.tool as tool
from bonsai.bim.helper import draw_attributes, prop_with_search
from bonsai.bim.module.structural.data import (
- StructuralBoundaryConditionsData,
+ BoundaryConditionsData,
ConnectedStructuralMembersData,
- StructuralMemberData,
StructuralAnalysisModelsData,
+ StructuralBoundaryConditionsData,
+ StructuralConnectionData,
StructuralLoadCasesData,
StructuralLoadsData,
- StructuralConnectionData,
- BoundaryConditionsData,
+ StructuralMemberData,
)
-from typing import TYPE_CHECKING, Any, Union
if TYPE_CHECKING:
from bonsai.bim.module.structural.prop import (
- BIMStructuralProperties,
BIMObjectStructuralProperties,
+ BIMStructuralProperties,
BoundaryCondition,
- StructuralLoad,
StructuralActivity,
StructuralAnalysisModel,
+ StructuralLoad,
)
diff --git a/src/bonsai/bonsai/bim/module/structural/workspace.py b/src/bonsai/bonsai/bim/module/structural/workspace.py
index fbacac3e1a..407f017834 100644
--- a/src/bonsai/bonsai/bim/module/structural/workspace.py
+++ b/src/bonsai/bonsai/bim/module/structural/workspace.py
@@ -18,11 +18,13 @@
import os
-import bpy
-import bonsai.tool as tool
-from bpy.types import WorkSpaceTool
from functools import partial
+import bpy
+from bpy.types import WorkSpaceTool
+
+import bonsai.tool as tool
+
class StructuralTool(WorkSpaceTool):
bl_space_type = "VIEW_3D"
diff --git a/src/bonsai/bonsai/bim/module/style/__init__.py b/src/bonsai/bonsai/bim/module/style/__init__.py
index ba44a727b1..6f13fd6f2d 100644
--- a/src/bonsai/bonsai/bim/module/style/__init__.py
+++ b/src/bonsai/bonsai/bim/module/style/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ActivateExternalStyle,
diff --git a/src/bonsai/bonsai/bim/module/style/data.py b/src/bonsai/bonsai/bim/module/style/data.py
index 83e453d7a5..dabf6f3ba7 100644
--- a/src/bonsai/bonsai/bim/module/style/data.py
+++ b/src/bonsai/bonsai/bim/module/style/data.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Union
+
import bpy
import ifcopenshell
import ifcopenshell.util.schema
-import bonsai.tool as tool
from ifcopenshell.util.doc import get_entity_doc
-from typing import Union
+
+import bonsai.tool as tool
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/style/operator.py b/src/bonsai/bonsai/bim/module/style/operator.py
index 4a036652f2..a26cce67f1 100644
--- a/src/bonsai/bonsai/bim/module/style/operator.py
+++ b/src/bonsai/bonsai/bim/module/style/operator.py
@@ -17,19 +17,21 @@
# along with Bonsai. If not, see .
import os
+from pathlib import Path
+from typing import Any, Union
+
import bpy
-import bonsai.bim.helper
-import bonsai.tool as tool
-import bonsai.core.style as core
import ifcopenshell.api
import ifcopenshell.api.style
import ifcopenshell.util.representation
import ifcopenshell.util.unit
-from bonsai.bim.module.style.prop import ColourRgb
from bpy_extras.io_utils import ImportHelper
-from pathlib import Path
from mathutils import Vector
-from typing import Any, Union
+
+import bonsai.bim.helper
+import bonsai.core.style as core
+import bonsai.tool as tool
+from bonsai.bim.module.style.prop import ColourRgb
# TODO: is this still relevant or can it be deleted?
diff --git a/src/bonsai/bonsai/bim/module/style/prop.py b/src/bonsai/bonsai/bim/module/style/prop.py
index 42866486c2..b1660dfd4c 100644
--- a/src/bonsai/bonsai/bim/module/style/prop.py
+++ b/src/bonsai/bonsai/bim/module/style/prop.py
@@ -16,25 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import gettext
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
import bpy
-import bonsai.tool as tool
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.style.data import StylesData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
-import gettext
-from typing import Literal, Union, TYPE_CHECKING, get_args
-
+import bonsai.tool as tool
+from bonsai.bim.module.style.data import StylesData
+from bonsai.bim.prop import Attribute, StrProperty
_ = gettext.gettext
diff --git a/src/bonsai/bonsai/bim/module/style/ui.py b/src/bonsai/bonsai/bim/module/style/ui.py
index 37c46b6d63..54ca4f5aa4 100644
--- a/src/bonsai/bonsai/bim/module/style/ui.py
+++ b/src/bonsai/bonsai/bim/module/style/ui.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
+from bpy.types import Panel, UIList
+
import bonsai.bim.helper
import bonsai.tool as tool
-from bpy.types import Panel, UIList
-from bonsai.bim.module.style.data import StylesData, BlenderMaterialStyleData
-from typing import TYPE_CHECKING
+from bonsai.bim.module.style.data import BlenderMaterialStyleData, StylesData
if TYPE_CHECKING:
from bonsai.bim.module.style.prop import BIMStylesProperties, Style
diff --git a/src/bonsai/bonsai/bim/module/system/__init__.py b/src/bonsai/bonsai/bim/module/system/__init__.py
index f44270cbe8..d08046ee8f 100644
--- a/src/bonsai/bonsai/bim/module/system/__init__.py
+++ b/src/bonsai/bonsai/bim/module/system/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator, decorator
+
+from . import decorator, operator, prop, ui
classes = (
operator.AddPort,
diff --git a/src/bonsai/bonsai/bim/module/system/data.py b/src/bonsai/bonsai/bim/module/system/data.py
index 5db3d60114..c5d8897cc8 100644
--- a/src/bonsai/bonsai/bim/module/system/data.py
+++ b/src/bonsai/bonsai/bim/module/system/data.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Any, Union
+
import bpy
import ifcopenshell
import ifcopenshell.util.schema
import ifcopenshell.util.system
import ifcopenshell.util.unit
from ifcopenshell.util.doc import get_entity_doc
+
import bonsai.tool as tool
-from typing import Any, Union
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/system/decorator.py b/src/bonsai/bonsai/bim/module/system/decorator.py
index c77b2f6879..f2448ba6e6 100644
--- a/src/bonsai/bonsai/bim/module/system/decorator.py
+++ b/src/bonsai/bonsai/bim/module/system/decorator.py
@@ -16,18 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from math import cos, radians, sin
+
+import bmesh
import bpy
import gpu
-import bmesh
-import bonsai.tool as tool
-from math import sin, cos, radians
-from bpy.types import SpaceView3D
-from mathutils import Vector, Matrix
-from gpu_extras.batch import batch_for_shader
import ifcopenshell
-from bonsai.bim.module.system.data import SystemDecorationData
from bpy.app.handlers import persistent
+from bpy.types import SpaceView3D
+from gpu_extras.batch import batch_for_shader
+from mathutils import Matrix, Vector
+import bonsai.tool as tool
+from bonsai.bim.module.system.data import SystemDecorationData
ERROR_ELEMENTS_COLOR = (1, 0.2, 0.322, 1) # RED
UNSPECIAL_ELEMENT_COLOR = (0.2, 0.2, 0.2, 1) # GREY
diff --git a/src/bonsai/bonsai/bim/module/system/operator.py b/src/bonsai/bonsai/bim/module/system/operator.py
index 066e466bd0..8dd6724de3 100644
--- a/src/bonsai/bonsai/bim/module/system/operator.py
+++ b/src/bonsai/bonsai/bim/module/system/operator.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.api
import ifcopenshell.api.system
import ifcopenshell.util.system
-import bonsai.tool as tool
-import bonsai.core.system as core
+
import bonsai.bim.helper
+import bonsai.core.system as core
+import bonsai.tool as tool
from bonsai.bim.module.system.data import PortData, SystemData
-from typing import TYPE_CHECKING
class LoadSystems(bpy.types.Operator):
diff --git a/src/bonsai/bonsai/bim/module/system/prop.py b/src/bonsai/bonsai/bim/module/system/prop.py
index 8954ab67f2..a40f50a90e 100644
--- a/src/bonsai/bonsai/bim/module/system/prop.py
+++ b/src/bonsai/bonsai/bim/module/system/prop.py
@@ -16,24 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
-import bonsai.bim.handler
-import bonsai.tool as tool
-from bonsai.bim.module.system.data import SystemData
-import bonsai.bim.module.system.decorator as decorator
-from bonsai.bim.prop import StrProperty, Attribute
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING, Union
+from bpy.types import PropertyGroup
+
+import bonsai.bim.handler
+import bonsai.bim.module.system.decorator as decorator
+import bonsai.tool as tool
+from bonsai.bim.module.system.data import SystemData
+from bonsai.bim.prop import Attribute, StrProperty
def get_system_class(self: "BIMSystemProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/system/ui.py b/src/bonsai/bonsai/bim/module/system/ui.py
index e41295f40e..d621adc02b 100644
--- a/src/bonsai/bonsai/bim/module/system/ui.py
+++ b/src/bonsai/bonsai/bim/module/system/ui.py
@@ -17,16 +17,30 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.bim.helper
-import bonsai.tool as tool
-from bonsai.bim.helper import prop_with_search, draw_attributes
-from bpy.types import Panel, UIList
-from bonsai.bim.module.system.data import SystemData, ZonesData, ActiveObjectZonesData, ObjectSystemData, PortData
+
from typing import TYPE_CHECKING
+import bpy
+from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai.bim.helper import draw_attributes, prop_with_search
+from bonsai.bim.module.system.data import (
+ ActiveObjectZonesData,
+ ObjectSystemData,
+ PortData,
+ SystemData,
+ ZonesData,
+)
+
if TYPE_CHECKING:
- from bonsai.bim.module.system.prop import BIMSystemProperties, System, BIMZoneProperties, Zone
+ from bonsai.bim.module.system.prop import (
+ BIMSystemProperties,
+ BIMZoneProperties,
+ System,
+ Zone,
+ )
FLOW_DIRECTION_TO_ICON = {
diff --git a/src/bonsai/bonsai/bim/module/tester/__init__.py b/src/bonsai/bonsai/bim/module/tester/__init__.py
index f31ac5e69a..db63d97b55 100644
--- a/src/bonsai/bonsai/bim/module/tester/__init__.py
+++ b/src/bonsai/bonsai/bim/module/tester/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ExecuteIfcTester,
diff --git a/src/bonsai/bonsai/bim/module/tester/data.py b/src/bonsai/bonsai/bim/module/tester/data.py
index d845c210f9..1d1a1c4901 100644
--- a/src/bonsai/bonsai/bim/module/tester/data.py
+++ b/src/bonsai/bonsai/bim/module/tester/data.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
import ifctester.reporter
+import bonsai.tool as tool
+
def refresh():
TesterData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/tester/operator.py b/src/bonsai/bonsai/bim/module/tester/operator.py
index 822ffd571c..6cb7999184 100644
--- a/src/bonsai/bonsai/bim/module/tester/operator.py
+++ b/src/bonsai/bonsai/bim/module/tester/operator.py
@@ -16,28 +16,30 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
-import time
-import tempfile
-import webbrowser
-import traceback
-import subprocess
-import socket
-import sys
-import threading
import asyncio
-import socketio
-from aiohttp import web
+import os
+import socket
+import subprocess
+import sys
+import tempfile
+import threading
+import time
+import traceback
+import webbrowser
+from pathlib import Path
+from typing import Union
+
+import bpy
+import ifcopenshell
import ifctester
import ifctester.ids
import ifctester.reporter
-import ifcopenshell
-import bonsai.tool as tool
-import bonsai.bim.handler
+import socketio
+from aiohttp import web
from bpy_extras.io_utils import ExportHelper
-from pathlib import Path
-from typing import Union
+
+import bonsai.bim.handler
+import bonsai.tool as tool
webapp_process = None
websocket_server_thread = None
diff --git a/src/bonsai/bonsai/bim/module/tester/prop.py b/src/bonsai/bonsai/bim/module/tester/prop.py
index fb20a0d4cd..4beb07c533 100644
--- a/src/bonsai/bonsai/bim/module/tester/prop.py
+++ b/src/bonsai/bonsai/bim/module/tester/prop.py
@@ -19,19 +19,20 @@
from typing import TYPE_CHECKING
import bpy
-from bonsai.bim.module.tester.data import TesterData
-from bonsai.bim.prop import StrProperty, MultipleFileSelect
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+from bonsai.bim.module.tester.data import TesterData
+from bonsai.bim.prop import MultipleFileSelect, StrProperty
def update_active_specification_index(self: "IfcTesterProperties", context: bpy.types.Context) -> None:
diff --git a/src/bonsai/bonsai/bim/module/tester/ui.py b/src/bonsai/bonsai/bim/module/tester/ui.py
index 66648f4e43..e20bfde1c1 100644
--- a/src/bonsai/bonsai/bim/module/tester/ui.py
+++ b/src/bonsai/bonsai/bim/module/tester/ui.py
@@ -20,12 +20,12 @@ from __future__ import annotations
from typing import TYPE_CHECKING
-from bonsai.bim.ui import draw_multiline_text
-
import bpy
from bpy.types import Panel, UIList
+
import bonsai.tool as tool
from bonsai.bim.module.tester.data import TesterData
+from bonsai.bim.ui import draw_multiline_text
if TYPE_CHECKING:
from bonsai.bim.module.tester.prop import (
diff --git a/src/bonsai/bonsai/bim/module/type/__init__.py b/src/bonsai/bonsai/bim/module/type/__init__.py
index b77bcbfb8e..0aa61167d6 100644
--- a/src/bonsai/bonsai/bim/module/type/__init__.py
+++ b/src/bonsai/bonsai/bim/module/type/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AssignType,
diff --git a/src/bonsai/bonsai/bim/module/type/data.py b/src/bonsai/bonsai/bim/module/type/data.py
index 3d0f506986..25beb2d36d 100644
--- a/src/bonsai/bonsai/bim/module/type/data.py
+++ b/src/bonsai/bonsai/bim/module/type/data.py
@@ -17,9 +17,10 @@
# along with Bonsai. If not, see .
import bpy
-import ifcopenshell.util.type
import ifcopenshell.util.element
+import ifcopenshell.util.type
from ifcopenshell.util.doc import get_entity_doc
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/type/operator.py b/src/bonsai/bonsai/bim/module/type/operator.py
index ce70f59231..66c87177f9 100644
--- a/src/bonsai/bonsai/bim/module/type/operator.py
+++ b/src/bonsai/bonsai/bim/module/type/operator.py
@@ -16,22 +16,24 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from typing import TYPE_CHECKING
+
import bmesh
-import ifcopenshell.util.element
-import ifcopenshell.util.schema
-import ifcopenshell.util.representation
-import ifcopenshell.util.type
-import ifcopenshell.util.unit
+import bpy
import ifcopenshell.api
import ifcopenshell.api.attribute
import ifcopenshell.api.type
+import ifcopenshell.util.element
+import ifcopenshell.util.representation
+import ifcopenshell.util.schema
+import ifcopenshell.util.type
+import ifcopenshell.util.unit
+
import bonsai.bim.helper
-import bonsai.tool as tool
import bonsai.core.geometry
-import bonsai.core.type as core
import bonsai.core.root
-from typing import TYPE_CHECKING
+import bonsai.core.type as core
+import bonsai.tool as tool
class AssignType(bpy.types.Operator, tool.Ifc.Operator):
diff --git a/src/bonsai/bonsai/bim/module/type/prop.py b/src/bonsai/bonsai/bim/module/type/prop.py
index 2786636404..13141a7947 100644
--- a/src/bonsai/bonsai/bim/module/type/prop.py
+++ b/src/bonsai/bonsai/bim/module/type/prop.py
@@ -16,24 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell.util.element
import ifcopenshell.util.type
-from bonsai.bim.module.type.data import TypeData
-from bonsai.bim.prop import Attribute
-import bonsai.tool as tool
-from typing import TYPE_CHECKING, Union
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
+
+import bonsai.tool as tool
+from bonsai.bim.module.type.data import TypeData
+from bonsai.bim.prop import Attribute
def get_relating_type_class(self: "BIMTypeProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/type/ui.py b/src/bonsai/bonsai/bim/module/type/ui.py
index d596997d5a..fbd1edd446 100644
--- a/src/bonsai/bonsai/bim/module/type/ui.py
+++ b/src/bonsai/bonsai/bim/module/type/ui.py
@@ -17,10 +17,11 @@
# along with Bonsai. If not, see .
import bpy
-import bonsai.tool as tool
-import bonsai.bim.module.type.prop as type_prop
from bpy.types import Panel
-from bonsai.bim.helper import prop_with_search, get_display_value
+
+import bonsai.bim.module.type.prop as type_prop
+import bonsai.tool as tool
+from bonsai.bim.helper import get_display_value, prop_with_search
from bonsai.bim.module.type.data import TypeData
diff --git a/src/bonsai/bonsai/bim/module/unit/__init__.py b/src/bonsai/bonsai/bim/module/unit/__init__.py
index 29f209dcd3..a6e65f605e 100644
--- a/src/bonsai/bonsai/bim/module/unit/__init__.py
+++ b/src/bonsai/bonsai/bim/module/unit/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddContextDependentUnit,
diff --git a/src/bonsai/bonsai/bim/module/unit/data.py b/src/bonsai/bonsai/bim/module/unit/data.py
index 22977988bf..fc51ef3710 100644
--- a/src/bonsai/bonsai/bim/module/unit/data.py
+++ b/src/bonsai/bonsai/bim/module/unit/data.py
@@ -17,10 +17,11 @@
# along with Bonsai. If not, see .
import ifcopenshell
-import ifcopenshell.util.unit
-import ifcopenshell.util.schema
import ifcopenshell.util.attribute
+import ifcopenshell.util.schema
+import ifcopenshell.util.unit
from ifcopenshell.util.doc import get_entity_doc
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/unit/operator.py b/src/bonsai/bonsai/bim/module/unit/operator.py
index f7c129aba1..da2c7edc1d 100644
--- a/src/bonsai/bonsai/bim/module/unit/operator.py
+++ b/src/bonsai/bonsai/bim/module/unit/operator.py
@@ -16,12 +16,14 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell.api
import ifcopenshell.util.unit
-import bonsai.tool as tool
+
import bonsai.core.unit as core
-from typing import TYPE_CHECKING
+import bonsai.tool as tool
if TYPE_CHECKING:
from bpy.stub_internal import rna_enums
diff --git a/src/bonsai/bonsai/bim/module/unit/prop.py b/src/bonsai/bonsai/bim/module/unit/prop.py
index a335532294..02fe7ac803 100644
--- a/src/bonsai/bonsai/bim/module/unit/prop.py
+++ b/src/bonsai/bonsai/bim/module/unit/prop.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
-from bonsai.bim.prop import StrProperty, Attribute
-from bonsai.bim.module.unit.data import UnitsData
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import TYPE_CHECKING
+from bpy.types import PropertyGroup
+
+from bonsai.bim.module.unit.data import UnitsData
+from bonsai.bim.prop import Attribute, StrProperty
def get_unit_classes(self: "BIMUnitProperties", context: bpy.types.Context) -> list[tuple[str, str, str]]:
diff --git a/src/bonsai/bonsai/bim/module/unit/ui.py b/src/bonsai/bonsai/bim/module/unit/ui.py
index 9407ef01ac..703c43c3d5 100644
--- a/src/bonsai/bonsai/bim/module/unit/ui.py
+++ b/src/bonsai/bonsai/bim/module/unit/ui.py
@@ -17,13 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.bim.helper
-import bonsai.tool as tool
+
+from typing import TYPE_CHECKING
+
import bpy
from bpy.types import Panel, UIList
+
+import bonsai.bim.helper
+import bonsai.tool as tool
from bonsai.bim.helper import prop_with_search
from bonsai.bim.module.unit.data import UnitsData
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.unit.prop import BIMUnitProperties, Unit
diff --git a/src/bonsai/bonsai/bim/module/void/__init__.py b/src/bonsai/bonsai/bim/module/void/__init__.py
index f89d514ad0..1fef345a89 100644
--- a/src/bonsai/bonsai/bim/module/void/__init__.py
+++ b/src/bonsai/bonsai/bim/module/void/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.AddFilling,
diff --git a/src/bonsai/bonsai/bim/module/void/data.py b/src/bonsai/bonsai/bim/module/void/data.py
index a1999e8d21..6d1fcc12a2 100644
--- a/src/bonsai/bonsai/bim/module/void/data.py
+++ b/src/bonsai/bonsai/bim/module/void/data.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from collections.abc import Generator
+from typing import Any, Union
+
import bpy
import ifcopenshell
+
import bonsai.tool as tool
-from typing import Any, Union
-from collections.abc import Generator
def refresh():
diff --git a/src/bonsai/bonsai/bim/module/void/operator.py b/src/bonsai/bonsai/bim/module/void/operator.py
index 0d2136d1d7..8c584e0b14 100644
--- a/src/bonsai/bonsai/bim/module/void/operator.py
+++ b/src/bonsai/bonsai/bim/module/void/operator.py
@@ -21,10 +21,11 @@ import ifcopenshell.api
import ifcopenshell.api.feature
import ifcopenshell.util.element
import ifcopenshell.util.representation
-import bonsai.tool as tool
+
+import bonsai.bim.handler
import bonsai.core.geometry
import bonsai.core.root
-import bonsai.bim.handler
+import bonsai.tool as tool
from bonsai.bim.module.model.opening import FilledOpeningGenerator
diff --git a/src/bonsai/bonsai/bim/module/void/prop.py b/src/bonsai/bonsai/bim/module/void/prop.py
index 0170dbd606..1c6bf088d9 100644
--- a/src/bonsai/bonsai/bim/module/void/prop.py
+++ b/src/bonsai/bonsai/bim/module/void/prop.py
@@ -16,10 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
import bpy
+from bpy.props import (
+ BoolProperty,
+ CollectionProperty,
+ EnumProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
+)
from bpy.types import PropertyGroup
-from bpy.props import PointerProperty, StringProperty, IntProperty, BoolProperty, CollectionProperty, EnumProperty
-from typing import Union, TYPE_CHECKING, Literal, get_args
OperatorType = Literal["DIFFERENCE", "INTERSECTION", "UNION"]
diff --git a/src/bonsai/bonsai/bim/module/void/ui.py b/src/bonsai/bonsai/bim/module/void/ui.py
index 8c80adca07..37415eb978 100644
--- a/src/bonsai/bonsai/bim/module/void/ui.py
+++ b/src/bonsai/bonsai/bim/module/void/ui.py
@@ -17,11 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
import bpy
-import bonsai.tool as tool
from bpy.types import Panel, UIList
+
+import bonsai.tool as tool
from bonsai.bim.module.void.data import BooleansData, VoidsData
-from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
import bpy.stub_internal.rna_enums as rna_enums
diff --git a/src/bonsai/bonsai/bim/module/web/__init__.py b/src/bonsai/bonsai/bim/module/web/__init__.py
index de3f7015a4..d2d28e0f62 100644
--- a/src/bonsai/bonsai/bim/module/web/__init__.py
+++ b/src/bonsai/bonsai/bim/module/web/__init__.py
@@ -17,7 +17,8 @@
# along with Bonsai. If not, see .
import bpy
-from . import ui, prop, operator
+
+from . import operator, prop, ui
classes = (
operator.ConnectToWebsocketServer,
diff --git a/src/bonsai/bonsai/bim/module/web/data.py b/src/bonsai/bonsai/bim/module/web/data.py
index db939cadfa..e74b7fa0b6 100644
--- a/src/bonsai/bonsai/bim/module/web/data.py
+++ b/src/bonsai/bonsai/bim/module/web/data.py
@@ -16,10 +16,12 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bonsai.tool as tool
import os
+import bpy
+
+import bonsai.tool as tool
+
def refresh():
WebData.is_loaded = False
diff --git a/src/bonsai/bonsai/bim/module/web/operator.py b/src/bonsai/bonsai/bim/module/web/operator.py
index 1c8bb21e9b..8efd15494e 100644
--- a/src/bonsai/bonsai/bim/module/web/operator.py
+++ b/src/bonsai/bonsai/bim/module/web/operator.py
@@ -17,7 +17,9 @@
# along with Bonsai. If not, see .
import os
+
import bpy
+
import bonsai.core.web as core
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/bim/module/web/prop.py b/src/bonsai/bonsai/bim/module/web/prop.py
index 66ffdd4995..1538454270 100644
--- a/src/bonsai/bonsai/bim/module/web/prop.py
+++ b/src/bonsai/bonsai/bim/module/web/prop.py
@@ -17,18 +17,19 @@
# along with Bonsai. If not, see .
from typing import TYPE_CHECKING
+
import bpy
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
+from bpy.types import PropertyGroup
class WebProperties(PropertyGroup):
diff --git a/src/bonsai/bonsai/bim/module/web/ui.py b/src/bonsai/bonsai/bim/module/web/ui.py
index 0a6fca55ae..88bd0e6e6f 100644
--- a/src/bonsai/bonsai/bim/module/web/ui.py
+++ b/src/bonsai/bonsai/bim/module/web/ui.py
@@ -17,6 +17,7 @@
# along with Bonsai. If not, see .
from bpy.types import Panel
+
import bonsai.tool as tool
from bonsai.bim.module.web.data import WebData
diff --git a/src/bonsai/bonsai/bim/operator.py b/src/bonsai/bonsai/bim/operator.py
index 3621344542..456d5ed5a0 100644
--- a/src/bonsai/bonsai/bim/operator.py
+++ b/src/bonsai/bonsai/bim/operator.py
@@ -16,40 +16,43 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
import contextlib
-import bpy
-import bmesh
-import time
import logging
-import textwrap
-import shutil
+import os
import platform
+import shutil
import subprocess
import tempfile
+import textwrap
+import time
import webbrowser
-import ifcopenshell
-import bonsai.bim
-import bonsai.tool as tool
-import bonsai.bim.handler
+from collections import namedtuple
+from collections.abc import Iterable
from enum import Enum
-from bpy_extras.io_utils import ImportHelper
-from bonsai.bim import import_ifc
-from bonsai.bim.prop import StrProperty
-from bonsai.bim.ui import IFCFileSelector
-from bonsai.bim.helper import get_enum_items
-from mathutils import Vector, Euler
from math import radians
from pathlib import Path
-from collections import namedtuple
-from typing import Union, TYPE_CHECKING, Literal, get_args
-from collections.abc import Iterable
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
+import bmesh
+import bpy
+import ifcopenshell
+from bpy_extras.io_utils import ImportHelper
+from mathutils import Euler, Vector
from natsort import natsorted
+import bonsai.bim
+import bonsai.bim.handler
+import bonsai.tool as tool
+from bonsai.bim import import_ifc
+from bonsai.bim.helper import get_enum_items
+from bonsai.bim.prop import StrProperty
+from bonsai.bim.ui import IFCFileSelector
+
if TYPE_CHECKING:
- from bonsai.bim.prop import MultipleFileSelect, Attribute
from bpy.stub_internal import rna_enums
+ from bonsai.bim.prop import Attribute, MultipleFileSelect
+
class SetTab(bpy.types.Operator):
bl_idname = "bim.set_tab"
diff --git a/src/bonsai/bonsai/bim/prop.py b/src/bonsai/bonsai/bim/prop.py
index 2adbfab5d6..8e6b8ed7c8 100644
--- a/src/bonsai/bonsai/bim/prop.py
+++ b/src/bonsai/bonsai/bim/prop.py
@@ -16,35 +16,37 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import json
+import os
+from typing import TYPE_CHECKING, Any, Literal, Union, assert_never, get_args
+
+import bpy
import ifcopenshell
import ifcopenshell.util.pset
import ifcopenshell.util.unit
-from ifcopenshell.util.doc import (
- get_entity_doc,
- get_attribute_doc,
- get_property_set_doc,
- get_property_doc,
- get_predefined_type_doc,
-)
-import bonsai.bim
-import bonsai.bim.schema
-import bonsai.bim.handler
-import bonsai.tool as tool
-from bpy.types import PropertyGroup
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
+ CollectionProperty,
+ EnumProperty,
FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ IntProperty,
+ PointerProperty,
+ StringProperty,
)
-from typing import Any, Union, Literal, get_args, TYPE_CHECKING, assert_never
+from bpy.types import PropertyGroup
+from ifcopenshell.util.doc import (
+ get_attribute_doc,
+ get_entity_doc,
+ get_predefined_type_doc,
+ get_property_doc,
+ get_property_set_doc,
+)
+
+import bonsai.bim
+import bonsai.bim.handler
+import bonsai.bim.schema
+import bonsai.tool as tool
cwd = os.path.dirname(os.path.realpath(__file__))
diff --git a/src/bonsai/bonsai/bim/schema.py b/src/bonsai/bonsai/bim/schema.py
index 7890f90006..4ef96e72a7 100644
--- a/src/bonsai/bonsai/bim/schema.py
+++ b/src/bonsai/bonsai/bim/schema.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
+import bpy
import ifcopenshell
import ifcopenshell.util.pset
+
import bonsai.tool as tool
-import bpy
-from typing import TYPE_CHECKING
if TYPE_CHECKING or bpy.app.version >= (5, 0, 0):
import _bpy_restrict_state as bpy_restrict_state
diff --git a/src/bonsai/bonsai/bim/ui.py b/src/bonsai/bonsai/bim/ui.py
index 81eb4c45d0..f90d2165fb 100644
--- a/src/bonsai/bonsai/bim/ui.py
+++ b/src/bonsai/bonsai/bim/ui.py
@@ -17,49 +17,51 @@
# along with Bonsai. If not, see .
import os
-import bpy
import platform
-import platformdirs
-import bonsai.bim.helper
+import textwrap
from pathlib import Path
+from typing import TYPE_CHECKING, Literal, Optional
+
+import bpy
+import platformdirs
+from bpy.props import BoolProperty, IntProperty, StringProperty
from bpy.types import Panel
-from bpy.props import StringProperty, IntProperty, BoolProperty
from ifcopenshell.util.doc import (
+ get_attribute_doc,
get_entity_doc,
get_property_set_doc,
get_type_doc,
- get_attribute_doc,
)
-from . import ifc
-from bonsai import get_debug_info
-import bonsai.bim
-import bonsai.tool as tool
from ifcopenshell.util.file import IfcHeaderExtractor
-from bonsai.bim.prop import Attribute
+from natsort import natsorted
+
+import bonsai.bim
+import bonsai.bim.helper
+import bonsai.tool as tool
+from bonsai import get_debug_info
from bonsai.bim.module.bsdd.prop import BIMBSDDProperties, BSDDProperty
-from bonsai.bim.module.pset.prop import IfcProperty
from bonsai.bim.module.model.prop import (
BIMDoorProperties,
- BIMWindowProperties,
BIMRailingProperties,
BIMRoofProperties,
BIMStairProperties,
+ BIMWindowProperties,
)
from bonsai.bim.module.model.ui import (
draw_door_properties,
- draw_window_properties,
draw_railing_properties,
draw_roof_properties,
draw_stair_properties,
+ draw_window_properties,
)
-from typing import Optional, TYPE_CHECKING, Literal
-from natsort import natsorted
-import textwrap
+from bonsai.bim.module.pset.prop import IfcProperty
+from bonsai.bim.prop import Attribute
+from . import ifc
if TYPE_CHECKING:
- from bonsai.bim.prop import ObjProperty
from bonsai.bim.module.project.prop import BIMProjectProperties
+ from bonsai.bim.prop import ObjProperty
class IFCFileSelector:
diff --git a/src/bonsai/bonsai/core/aggregate.py b/src/bonsai/bonsai/core/aggregate.py
index a1f2723338..0b6719a180 100644
--- a/src/bonsai/bonsai/core/aggregate.py
+++ b/src/bonsai/bonsai/core/aggregate.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/attribute.py b/src/bonsai/bonsai/core/attribute.py
index fd41beda7a..2bc2340cd8 100644
--- a/src/bonsai/bonsai/core/attribute.py
+++ b/src/bonsai/bonsai/core/attribute.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/brick.py b/src/bonsai/bonsai/core/brick.py
index b285377d86..a21c6d0656 100644
--- a/src/bonsai/bonsai/core/brick.py
+++ b/src/bonsai/bonsai/core/brick.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/bsdd.py b/src/bonsai/bonsai/core/bsdd.py
index 3bb4513d40..1cbf610ea7 100644
--- a/src/bonsai/bonsai/core/bsdd.py
+++ b/src/bonsai/bonsai/core/bsdd.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Any
+
+from typing import TYPE_CHECKING, Any, Optional
if TYPE_CHECKING:
import bpy
- import ifcopenshell
import bsdd
+ import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/context.py b/src/bonsai/bonsai/core/context.py
index 626720fb33..49815881aa 100644
--- a/src/bonsai/bonsai/core/context.py
+++ b/src/bonsai/bonsai/core/context.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/cost.py b/src/bonsai/bonsai/core/cost.py
index fe55d3c31c..6cd2d916c3 100644
--- a/src/bonsai/bonsai/core/cost.py
+++ b/src/bonsai/bonsai/core/cost.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Union, Literal
+
+from typing import TYPE_CHECKING, Literal, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
import ifcopenshell.util.cost
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/covering.py b/src/bonsai/bonsai/core/covering.py
index ffc140dac6..c308c861fc 100644
--- a/src/bonsai/bonsai/core/covering.py
+++ b/src/bonsai/bonsai/core/covering.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/debug.py b/src/bonsai/bonsai/core/debug.py
index 2446a6e148..b79bd4f0e7 100644
--- a/src/bonsai/bonsai/core/debug.py
+++ b/src/bonsai/bonsai/core/debug.py
@@ -18,11 +18,13 @@
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/document.py b/src/bonsai/bonsai/core/document.py
index ac49fee10d..e38fc5d1e1 100644
--- a/src/bonsai/bonsai/core/document.py
+++ b/src/bonsai/bonsai/core/document.py
@@ -17,10 +17,12 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/drawing.py b/src/bonsai/bonsai/core/drawing.py
index 6ce74fe394..b56b51751f 100644
--- a/src/bonsai/bonsai/core/drawing.py
+++ b/src/bonsai/bonsai/core/drawing.py
@@ -17,13 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from pathlib import Path
-from typing import TYPE_CHECKING, Optional, Union, Literal
+from typing import TYPE_CHECKING, Literal, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
import ifcopenshell.util.representation
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/geometry.py b/src/bonsai/bonsai/core/geometry.py
index 99512f75b8..83ba921d30 100644
--- a/src/bonsai/bonsai/core/geometry.py
+++ b/src/bonsai/bonsai/core/geometry.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Union
+
from collections.abc import Sequence
+from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/georeference.py b/src/bonsai/bonsai/core/georeference.py
index 419f4218ba..e74b5f577d 100644
--- a/src/bonsai/bonsai/core/georeference.py
+++ b/src/bonsai/bonsai/core/georeference.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/ifcgit.py b/src/bonsai/bonsai/core/ifcgit.py
index f3a2ead14a..703013e266 100644
--- a/src/bonsai/bonsai/core/ifcgit.py
+++ b/src/bonsai/bonsai/core/ifcgit.py
@@ -17,14 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import platform
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
- import ifcopenshell
- import bonsai.tool as tool
import git
+ import ifcopenshell
+
+ import bonsai.tool as tool
def create_repo(ifcgit: type[tool.IfcGit], ifc: type[tool.Ifc]) -> None:
diff --git a/src/bonsai/bonsai/core/library.py b/src/bonsai/bonsai/core/library.py
index 53f5f8ce8c..e6c58bf0f7 100644
--- a/src/bonsai/bonsai/core/library.py
+++ b/src/bonsai/bonsai/core/library.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/material.py b/src/bonsai/bonsai/core/material.py
index 25a1df3e89..65c5955603 100644
--- a/src/bonsai/bonsai/core/material.py
+++ b/src/bonsai/bonsai/core/material.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/misc.py b/src/bonsai/bonsai/core/misc.py
index a69ffb2180..297b81eac8 100644
--- a/src/bonsai/bonsai/core/misc.py
+++ b/src/bonsai/bonsai/core/misc.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/model.py b/src/bonsai/bonsai/core/model.py
index c82de50e0e..6edce4d100 100644
--- a/src/bonsai/bonsai/core/model.py
+++ b/src/bonsai/bonsai/core/model.py
@@ -17,15 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Literal
+
+from typing import TYPE_CHECKING, Literal, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
- import bonsai.tool as tool
-
from mathutils import Vector
- from bonsai.bim.module.model.wall import DumbWallJoiner, DumbWallAligner
+
+ import bonsai.tool as tool
+ from bonsai.bim.module.model.wall import DumbWallAligner, DumbWallJoiner
AlignType = Literal["CENTER", "EXTERIOR", "INTERIOR"]
OffsetType = Literal["CENTER", "EXTERIOR", "INTERIOR"]
diff --git a/src/bonsai/bonsai/core/nest.py b/src/bonsai/bonsai/core/nest.py
index 645efa0eb6..4ab491666b 100644
--- a/src/bonsai/bonsai/core/nest.py
+++ b/src/bonsai/bonsai/core/nest.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/owner.py b/src/bonsai/bonsai/core/owner.py
index f2dd366138..90383e7885 100644
--- a/src/bonsai/bonsai/core/owner.py
+++ b/src/bonsai/bonsai/core/owner.py
@@ -17,14 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
- import bonsai.tool as tool
- from ifcopenshell.api.owner.add_address import ADDRESS_TYPE
from ifcopenshell.api.owner.add_actor import ACTOR_TYPE
+ from ifcopenshell.api.owner.add_address import ADDRESS_TYPE
+
+ import bonsai.tool as tool
def add_person(ifc: type[tool.Ifc]) -> ifcopenshell.entity_instance:
diff --git a/src/bonsai/bonsai/core/patch.py b/src/bonsai/bonsai/core/patch.py
index a715f11f74..4acee34494 100644
--- a/src/bonsai/bonsai/core/patch.py
+++ b/src/bonsai/bonsai/core/patch.py
@@ -18,11 +18,13 @@
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/profile.py b/src/bonsai/bonsai/core/profile.py
index 46e179229c..e102360062 100644
--- a/src/bonsai/bonsai/core/profile.py
+++ b/src/bonsai/bonsai/core/profile.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/project.py b/src/bonsai/bonsai/core/project.py
index f699c8bfe9..18dbd3fab2 100644
--- a/src/bonsai/bonsai/core/project.py
+++ b/src/bonsai/bonsai/core/project.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/pset.py b/src/bonsai/bonsai/core/pset.py
index 6a92f3d400..6af9f1e1ee 100644
--- a/src/bonsai/bonsai/core/pset.py
+++ b/src/bonsai/bonsai/core/pset.py
@@ -18,11 +18,13 @@
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Union, Any
+
+from typing import TYPE_CHECKING, Any, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/qto.py b/src/bonsai/bonsai/core/qto.py
index d56130962b..40a866ac33 100644
--- a/src/bonsai/bonsai/core/qto.py
+++ b/src/bonsai/bonsai/core/qto.py
@@ -17,10 +17,12 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/resource.py b/src/bonsai/bonsai/core/resource.py
index a3423c98db..cab03b7ebc 100644
--- a/src/bonsai/bonsai/core/resource.py
+++ b/src/bonsai/bonsai/core/resource.py
@@ -19,12 +19,14 @@
# ############################################################################ #
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional
+
from collections.abc import Iterable
+from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/root.py b/src/bonsai/bonsai/core/root.py
index b8f960247c..3a283a6a65 100644
--- a/src/bonsai/bonsai/core/root.py
+++ b/src/bonsai/bonsai/core/root.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
+
import ifcopenshell.util.element
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/search.py b/src/bonsai/bonsai/core/search.py
index 5e9d279df9..cc16fb56f6 100644
--- a/src/bonsai/bonsai/core/search.py
+++ b/src/bonsai/bonsai/core/search.py
@@ -17,10 +17,12 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import bpy
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/sequence.py b/src/bonsai/bonsai/core/sequence.py
index 610c7095b6..d62b4325ad 100644
--- a/src/bonsai/bonsai/core/sequence.py
+++ b/src/bonsai/bonsai/core/sequence.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/spatial.py b/src/bonsai/bonsai/core/spatial.py
index 16e11e0fa9..4207d033d4 100644
--- a/src/bonsai/bonsai/core/spatial.py
+++ b/src/bonsai/bonsai/core/spatial.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union, assert_never
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/structural.py b/src/bonsai/bonsai/core/structural.py
index 4c31883fe5..c3f787905a 100644
--- a/src/bonsai/bonsai/core/structural.py
+++ b/src/bonsai/bonsai/core/structural.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/style.py b/src/bonsai/bonsai/core/style.py
index 85bb4200aa..20fd98509c 100644
--- a/src/bonsai/bonsai/core/style.py
+++ b/src/bonsai/bonsai/core/style.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from typing import TYPE_CHECKING, Optional, Any
+
+from typing import TYPE_CHECKING, Any, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/system.py b/src/bonsai/bonsai/core/system.py
index 01f1b7166e..418c472645 100644
--- a/src/bonsai/bonsai/core/system.py
+++ b/src/bonsai/bonsai/core/system.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/type.py b/src/bonsai/bonsai/core/type.py
index 226f00c461..2467f124d3 100644
--- a/src/bonsai/bonsai/core/type.py
+++ b/src/bonsai/bonsai/core/type.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.core.geometry
+
from typing import TYPE_CHECKING, Optional
+import bonsai.core.geometry
+
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/unit.py b/src/bonsai/bonsai/core/unit.py
index a8325f9d89..863821e6f5 100644
--- a/src/bonsai/bonsai/core/unit.py
+++ b/src/bonsai/bonsai/core/unit.py
@@ -18,11 +18,13 @@
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/core/web.py b/src/bonsai/bonsai/core/web.py
index 187d479b6b..b0d9222460 100644
--- a/src/bonsai/bonsai/core/web.py
+++ b/src/bonsai/bonsai/core/web.py
@@ -17,11 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
from typing import TYPE_CHECKING, Optional, Union
if TYPE_CHECKING:
import bpy
import ifcopenshell
+
import bonsai.tool as tool
diff --git a/src/bonsai/bonsai/tool/__init__.py b/src/bonsai/bonsai/tool/__init__.py
index 8dae934981..68fbf0e381 100644
--- a/src/bonsai/bonsai/tool/__init__.py
+++ b/src/bonsai/bonsai/tool/__init__.py
@@ -39,8 +39,7 @@ from bonsai.tool.geometry import Geometry
from bonsai.tool.georeference import Georeference
from bonsai.tool.group import Group
from bonsai.tool.ifc import Ifc
-from bonsai.tool.ifcgit import IfcGit
-from bonsai.tool.ifcgit import IfcGitRepo
+from bonsai.tool.ifcgit import IfcGit, IfcGitRepo
from bonsai.tool.layer import Layer
from bonsai.tool.library import Library
from bonsai.tool.loader import Loader
diff --git a/src/bonsai/bonsai/tool/aggregate.py b/src/bonsai/bonsai/tool/aggregate.py
index db037c2b02..43b155a5aa 100644
--- a/src/bonsai/bonsai/tool/aggregate.py
+++ b/src/bonsai/bonsai/tool/aggregate.py
@@ -17,15 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Literal, Union
+
import bpy
-import bonsai.core.tool
-import bonsai.tool as tool
import ifcopenshell.util.element
import ifcopenshell.util.representation
-from typing import Union, TYPE_CHECKING, Literal
+
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
- from bonsai.bim.module.aggregate.prop import BIMAggregateProperties, BIMObjectAggregateProperties
+ from bonsai.bim.module.aggregate.prop import (
+ BIMAggregateProperties,
+ BIMObjectAggregateProperties,
+ )
class Aggregate(bonsai.core.tool.Aggregate):
diff --git a/src/bonsai/bonsai/tool/attribute.py b/src/bonsai/bonsai/tool/attribute.py
index 0515edc04c..426283ac9e 100644
--- a/src/bonsai/bonsai/tool/attribute.py
+++ b/src/bonsai/bonsai/tool/attribute.py
@@ -17,23 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bonsai.core.tool
-import bonsai.bim.helper as helper
-import bonsai.tool as tool
-import ifcopenshell
+
from typing import (
- Any,
- Optional,
- Union,
- Literal,
- TypeVar,
TYPE_CHECKING,
+ Any,
+ Literal,
+ Optional,
+ TypeVar,
+ Union,
assert_never,
)
+import bpy
+import ifcopenshell
+
+import bonsai.bim.helper as helper
+import bonsai.core.tool
+import bonsai.tool as tool
+
if TYPE_CHECKING:
- from bonsai.bim.module.attribute.prop import BIMAttributeProperties, BIMExplorerProperties
+ from bonsai.bim.module.attribute.prop import (
+ BIMAttributeProperties,
+ BIMExplorerProperties,
+ )
T = TypeVar("T")
diff --git a/src/bonsai/bonsai/tool/bcf.py b/src/bonsai/bonsai/tool/bcf.py
index b67a5a98db..c98cfeb4e0 100644
--- a/src/bonsai/bonsai/tool/bcf.py
+++ b/src/bonsai/bonsai/tool/bcf.py
@@ -17,23 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bcf.v2.visinfo
-import bonsai.core.tool
-import bonsai.tool as tool
-import bpy
-import bcf.v2.model
-import bcf.v2.model.visinfo
-import bcf.v2.topic
-import bcf.v3.model
-import bcf.v3.model.visinfo
-import bcf.v3.topic
+from typing import TYPE_CHECKING, Any, Optional, TypeGuard, TypeVar, Union
import bcf.agnostic.model
import bcf.agnostic.topic
import bcf.agnostic.visinfo
+import bcf.v2.model
+import bcf.v2.model.visinfo
+import bcf.v2.topic
+import bcf.v2.visinfo
+import bcf.v3.model
+import bcf.v3.model.visinfo
+import bcf.v3.topic
+import bpy
-from typing import Any, Union, TypeVar, TypeGuard, Optional, TYPE_CHECKING
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.bcf.prop import BCFProperties
diff --git a/src/bonsai/bonsai/tool/blender.py b/src/bonsai/bonsai/tool/blender.py
index 56e78d5c4f..d4491e104a 100644
--- a/src/bonsai/bonsai/tool/blender.py
+++ b/src/bonsai/bonsai/tool/blender.py
@@ -17,53 +17,63 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import sys
-import bpy
-import bmesh
+
+import contextlib
+import importlib
import json
import os
import platform
import subprocess
-import contextlib
+import sys
import tempfile
import traceback
+import types
+from collections.abc import Callable, Generator, Iterable, Sequence, Sized
+from datetime import datetime
+from functools import cache, lru_cache
+from pathlib import Path
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Literal,
+ Optional,
+ TypeVar,
+ Union,
+ assert_never,
+)
+
+import bmesh
+import bpy
+import ifcopenshell.api
+import ifcopenshell.util.element
import numpy as np
import numpy.typing as npt
from ifcopenshell import entity_instance
-import ifcopenshell.api
-import ifcopenshell.util.element
+from mathutils import Vector
+
+import bonsai.bim
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim
-import types
-import importlib
-from datetime import datetime
-from mathutils import Vector
-from pathlib import Path
-from functools import lru_cache, cache
from bonsai.bim.ifc import IFC_CONNECTED_TYPE
-from typing import (
- Any,
- Optional,
- Union,
- Literal,
- TypeVar,
- TYPE_CHECKING,
- assert_never,
-)
-from collections.abc import Iterable, Callable, Generator, Sequence, Sized
if TYPE_CHECKING:
- from sun_position.properties import SunPosProperties
import bpy.stub_internal.rna_enums as rna_enums
- from bonsai.bim.prop import BIMProperties, BIMObjectProperties, BIMSnapProperties
+ from sun_position.properties import SunPosProperties
+
from bonsai.bim.module.attribute.prop import BIMAttributeProperties
- from bonsai.bim.module.constraint.prop import BIMConstraintProperties, BIMObjectConstraintProperties
+ from bonsai.bim.module.constraint.prop import (
+ BIMConstraintProperties,
+ BIMObjectConstraintProperties,
+ )
from bonsai.bim.module.covetool.prop import CoveToolProperties
from bonsai.bim.module.csv.prop import CsvProperties
from bonsai.bim.module.diff.prop import DiffProperties
from bonsai.bim.module.fm.prop import BIMFMProperties
- from bonsai.bim.module.light.prop import BIMSolarProperties, RadianceExporterProperties
+ from bonsai.bim.module.light.prop import (
+ BIMSolarProperties,
+ RadianceExporterProperties,
+ )
+ from bonsai.bim.prop import BIMObjectProperties, BIMProperties, BIMSnapProperties
T = TypeVar("T")
@@ -1349,11 +1359,11 @@ class Blender(bonsai.core.tool.Blender):
@classmethod
def register_toolbar(cls):
- import bonsai.bim.module.model.workspace as ws_model
+ import bonsai.bim.module.covering.workspace as ws_covering
import bonsai.bim.module.drawing.workspace as ws_drawing
+ import bonsai.bim.module.model.workspace as ws_model
import bonsai.bim.module.spatial.workspace as ws_spatial
import bonsai.bim.module.structural.workspace as ws_structural
- import bonsai.bim.module.covering.workspace as ws_covering
if bpy.app.background:
return
@@ -1381,11 +1391,11 @@ class Blender(bonsai.core.tool.Blender):
@classmethod
def unregister_toolbar(cls):
- import bonsai.bim.module.model.workspace as ws_model
+ import bonsai.bim.module.covering.workspace as ws_covering
import bonsai.bim.module.drawing.workspace as ws_drawing
+ import bonsai.bim.module.model.workspace as ws_model
import bonsai.bim.module.spatial.workspace as ws_spatial
import bonsai.bim.module.structural.workspace as ws_structural
- import bonsai.bim.module.covering.workspace as ws_covering
if bpy.app.background:
return
@@ -1763,8 +1773,8 @@ class Blender(bonsai.core.tool.Blender):
@classmethod
@lru_cache
def get_list_of_tools(cls) -> tuple[str, ...]:
- from bonsai.bim.module.model.workspace import BimTool
from bonsai.bim.module.drawing.workspace import AnnotationTool
+ from bonsai.bim.module.model.workspace import BimTool
return tuple(cls.bl_idname for cls in (BimTool.__subclasses__() + [BimTool, AnnotationTool]))
diff --git a/src/bonsai/bonsai/tool/boundary.py b/src/bonsai/bonsai/tool/boundary.py
index d09ebcbee1..16662919aa 100644
--- a/src/bonsai/bonsai/tool/boundary.py
+++ b/src/bonsai/bonsai/tool/boundary.py
@@ -17,16 +17,22 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from collections.abc import Sequence
+from typing import TYPE_CHECKING, Any
+
import bpy
import mathutils
+from mathutils import Matrix, Vector
+
import bonsai.core.tool
import bonsai.tool as tool
-from mathutils import Matrix, Vector
-from typing import Any, TYPE_CHECKING
-from collections.abc import Sequence
if TYPE_CHECKING:
- from bonsai.bim.module.boundary.prop import BIMBoundaryProperties, BIMObjectBoundaryProperties
+ from bonsai.bim.module.boundary.prop import (
+ BIMBoundaryProperties,
+ BIMObjectBoundaryProperties,
+ )
class Boundary(bonsai.core.tool.Boundary):
diff --git a/src/bonsai/bonsai/tool/brick.py b/src/bonsai/bonsai/tool/brick.py
index 9da53f4413..42b80cc288 100644
--- a/src/bonsai/bonsai/tool/brick.py
+++ b/src/bonsai/bonsai/tool/brick.py
@@ -17,28 +17,32 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
+
import datetime
+import os
+from collections.abc import Generator
+from contextlib import contextmanager
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.guid
import ifcopenshell.util.brick
import ifcopenshell.util.element
import ifcopenshell.util.system
+
import bonsai.core.brick
import bonsai.core.tool
import bonsai.tool as tool
-from pathlib import Path
-from contextlib import contextmanager
-from typing import Any, Union, TYPE_CHECKING
-from collections.abc import Generator
try:
+ import urllib.parse
+
import brickschema
import brickschema.persistent
from brickschema.namespaces import REF, A
- import urllib.parse
- from rdflib import Literal, URIRef, Namespace, BNode
+ from rdflib import BNode, Literal, Namespace, URIRef
from rdflib.namespace import RDF
except:
# See #1860
@@ -46,7 +50,8 @@ except:
if TYPE_CHECKING:
import brickschema
- from rdflib import Literal, URIRef, Namespace, BNode
+ from rdflib import BNode, Literal, Namespace, URIRef
+
from bonsai.bim.module.brick.prop import BIMBrickProperties
# silence known rdflib_sqlalchemy TypeError warning
diff --git a/src/bonsai/bonsai/tool/bsdd.py b/src/bonsai/bonsai/tool/bsdd.py
index 337cf626c9..dc42708867 100644
--- a/src/bonsai/bonsai/tool/bsdd.py
+++ b/src/bonsai/bonsai/tool/bsdd.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bonsai.core.tool
-import bonsai.tool as tool
-import bpy
+
import json
+from typing import TYPE_CHECKING, Any, TypedDict, Union
+
+import bpy
import bsdd
import ifcopenshell.api.library
-import ifcopenshell.util.type
-import ifcopenshell.util.element
import ifcopenshell.util.classification
-from typing import Any, Union, TYPE_CHECKING, TypedDict
+import ifcopenshell.util.element
+import ifcopenshell.util.type
+
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.bsdd.prop import BIMBSDDProperties, BSDDDictionary
diff --git a/src/bonsai/bonsai/tool/cad.py b/src/bonsai/bonsai/tool/cad.py
index 8c65f4babb..4e3d8e1499 100644
--- a/src/bonsai/bonsai/tool/cad.py
+++ b/src/bonsai/bonsai/tool/cad.py
@@ -29,16 +29,18 @@
# - You can now derive the center from an arc without generating geometry
from __future__ import annotations
-import sys
-import bpy
-import math
-import bmesh
-import numpy as np
-import mathutils.geometry
-from mathutils import Vector, Matrix, geometry
+
import itertools
+import math
+import sys
from typing import TYPE_CHECKING, Union
+import bmesh
+import bpy
+import mathutils.geometry
+import numpy as np
+from mathutils import Matrix, Vector, geometry
+
if TYPE_CHECKING:
from bonsai.bim.module.cad.prop import BIMCadProperties
diff --git a/src/bonsai/bonsai/tool/clash.py b/src/bonsai/bonsai/tool/clash.py
index 17582540e4..7c9961646c 100644
--- a/src/bonsai/bonsai/tool/clash.py
+++ b/src/bonsai/bonsai/tool/clash.py
@@ -17,17 +17,20 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import bpy
+
import json
-import ifcopenshell
-import bonsai.core.tool
-import bonsai.tool as tool
+import os
from contextlib import contextmanager
-from mathutils import Vector
+from typing import TYPE_CHECKING, Literal, Union, get_args
+
+import bpy
+import ifcopenshell
from ifcclash import ifcclash
from ifcclash.ifcclash import ClashSource
-from typing import TYPE_CHECKING, Union, Literal, get_args
+from mathutils import Vector
+
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.clash.prop import BIMClashProperties
diff --git a/src/bonsai/bonsai/tool/classification.py b/src/bonsai/bonsai/tool/classification.py
index 3535e0a12f..7b2ebb073e 100644
--- a/src/bonsai/bonsai/tool/classification.py
+++ b/src/bonsai/bonsai/tool/classification.py
@@ -17,15 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Union, assert_never
+
import bpy
import ifcopenshell.api
import ifcopenshell.util.classification
+
import bonsai.core.tool
import bonsai.tool as tool
-from typing import Union, assert_never, TYPE_CHECKING
if TYPE_CHECKING:
- from bonsai.bim.module.classification.prop import BIMClassificationReferenceProperties, BIMClassificationProperties
+ from bonsai.bim.module.classification.prop import (
+ BIMClassificationProperties,
+ BIMClassificationReferenceProperties,
+ )
class Classification(bonsai.core.tool.Classification):
diff --git a/src/bonsai/bonsai/tool/collector.py b/src/bonsai/bonsai/tool/collector.py
index c357287a6b..01c13d6cec 100644
--- a/src/bonsai/bonsai/tool/collector.py
+++ b/src/bonsai/bonsai/tool/collector.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import Union
+
import bpy
+import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
-import ifcopenshell.util.element
-from typing import Union
class Collector(bonsai.core.tool.Collector):
diff --git a/src/bonsai/bonsai/tool/context.py b/src/bonsai/bonsai/tool/context.py
index c1582cd37f..50223a6320 100644
--- a/src/bonsai/bonsai/tool/context.py
+++ b/src/bonsai/bonsai/tool/context.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Union
+
import bpy
-import bonsai.bim.helper
-import bonsai.tool as tool
-import bonsai.core.tool
import ifcopenshell
-from typing import Any, Union, TYPE_CHECKING
+
+import bonsai.bim.helper
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.context.prop import BIMContextProperties
+ from bonsai.bim.prop import Attribute
class Context(bonsai.core.tool.Context):
diff --git a/src/bonsai/bonsai/tool/cost.py b/src/bonsai/bonsai/tool/cost.py
index d1ee2a841c..771b15f43e 100644
--- a/src/bonsai/bonsai/tool/cost.py
+++ b/src/bonsai/bonsai/tool/cost.py
@@ -17,26 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import json
+from collections.abc import Generator
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union, assert_never
+
import bpy
-import bonsai.core.tool
-import bonsai.tool as tool
import ifcopenshell.api
import ifcopenshell.api.cost
import ifcopenshell.api.document
import ifcopenshell.api.nest
-import ifcopenshell.util.element
-import ifcopenshell.util.date
import ifcopenshell.util.cost
+import ifcopenshell.util.date
+import ifcopenshell.util.element
import ifcopenshell.util.unit
+
import bonsai.bim.helper
-import json
-from pathlib import Path
-from typing import Optional, Any, Union, Literal, TYPE_CHECKING, assert_never
-from collections.abc import Generator
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.cost.prop import BIMCostProperties, CostItemQuantity
+ from bonsai.bim.prop import Attribute
class Cost(bonsai.core.tool.Cost):
@@ -581,9 +584,10 @@ class Cost(bonsai.core.tool.Cost):
) -> ifcopenshell.entity_instance:
if not file_path:
return
- from ifc5d.csv2ifc import Csv2Ifc
import time
+ from ifc5d.csv2ifc import Csv2Ifc
+
start = time.time()
resolved_path = tool.Ifc.resolve_uri(file_path)
@@ -804,8 +808,8 @@ class Cost(bonsai.core.tool.Cost):
format: Literal["CSV", "ODS", "XLSX"],
cost_schedule: Optional[ifcopenshell.entity_instance] = None,
) -> Union[str, None]:
- import subprocess
import os
+ import subprocess
import sys
if dirpath:
diff --git a/src/bonsai/bonsai/tool/covering.py b/src/bonsai/bonsai/tool/covering.py
index c83a6f3e09..018a39eb46 100644
--- a/src/bonsai/bonsai/tool/covering.py
+++ b/src/bonsai/bonsai/tool/covering.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell
import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.covering.prop import BIMCoveringProperties
diff --git a/src/bonsai/bonsai/tool/debug.py b/src/bonsai/bonsai/tool/debug.py
index 8bd17fa1c1..ccd30ddd74 100644
--- a/src/bonsai/bonsai/tool/debug.py
+++ b/src/bonsai/bonsai/tool/debug.py
@@ -17,25 +17,28 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import json
import os
import re
-import json
+from collections import defaultdict
+from collections.abc import Iterable
+from typing import TYPE_CHECKING, Literal, Union, assert_never
+
import bmesh
import bpy
-import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.api.material
import ifcopenshell.api.owner
import ifcopenshell.express
+import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.element
import ifcopenshell.util.schema
+from mathutils import Vector
+
import bonsai.core.style
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
-from mathutils import Vector
-from collections import defaultdict
-from typing import Literal, TYPE_CHECKING, assert_never, Union
-from collections.abc import Iterable
if TYPE_CHECKING:
from bonsai.bim.module.debug.prop import BIMDebugProperties
diff --git a/src/bonsai/bonsai/tool/demo.py b/src/bonsai/bonsai/tool/demo.py
index 745fcf914c..98375b3e3b 100644
--- a/src/bonsai/bonsai/tool/demo.py
+++ b/src/bonsai/bonsai/tool/demo.py
@@ -31,11 +31,13 @@
from __future__ import annotations
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell
+
import bonsai.core.tool
import bonsai.tool as tool
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.demo.prop import BIMDemoProperties
diff --git a/src/bonsai/bonsai/tool/document.py b/src/bonsai/bonsai/tool/document.py
index bf8e4d17b8..5d0aaf1a8e 100644
--- a/src/bonsai/bonsai/tool/document.py
+++ b/src/bonsai/bonsai/tool/document.py
@@ -17,14 +17,17 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import json
+from typing import TYPE_CHECKING, Any, Union
+
import bpy
import ifcopenshell.util.system
+from natsort import natsorted
+
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-import json
-from natsort import natsorted
-from typing import Any, Union, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.document.prop import BIMDocumentProperties
diff --git a/src/bonsai/bonsai/tool/drawing.py b/src/bonsai/bonsai/tool/drawing.py
index 3f1c6de28d..f268151faa 100644
--- a/src/bonsai/bonsai/tool/drawing.py
+++ b/src/bonsai/bonsai/tool/drawing.py
@@ -17,60 +17,63 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import os
-import re
+
import collections
import collections.abc
-import bpy
-import math
import json
-import lark
-import bmesh
-import shutil
import logging
-import shapely
+import math
+import os
import platform
-import mathutils
+import re
+import shutil
import subprocess
-import numpy as np
-import bonsai.core.tool
-import bonsai.core.geometry
-import bonsai.core.type
-import bonsai.tool as tool
+from collections.abc import Iterable, Sequence
+from fractions import Fraction
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, NamedTuple, Optional, Union
+
+import bmesh
+import bpy
import ifcopenshell.api
-import ifcopenshell.api.geometry
import ifcopenshell.api.context
-import ifcopenshell.api.drawing
import ifcopenshell.api.document
+import ifcopenshell.api.drawing
+import ifcopenshell.api.geometry
import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.geom
-import ifcopenshell.util.placement
-import ifcopenshell.util.unit
-import ifcopenshell.util.representation
import ifcopenshell.util.element
+import ifcopenshell.util.placement
+import ifcopenshell.util.representation
import ifcopenshell.util.selector
import ifcopenshell.util.shape
+import ifcopenshell.util.unit
+import lark
+import mathutils
+import numpy as np
+import shapely
+from ifcopenshell.util.shape_builder import ShapeBuilder
+from lxml import etree
+from mathutils import Matrix, Vector
+from shapely.ops import unary_union
+
import bonsai.bim.helper
import bonsai.bim.import_ifc
+import bonsai.core.geometry
import bonsai.core.root
-from shapely.ops import unary_union
-from lxml import etree
-from mathutils import Vector, Matrix
-from fractions import Fraction
-from typing import Optional, Union, Any, Literal, TYPE_CHECKING, NamedTuple
-from collections.abc import Iterable, Sequence
-from pathlib import Path
-from ifcopenshell.util.shape_builder import ShapeBuilder
+import bonsai.core.tool
+import bonsai.core.type
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.drawing.prop import (
+ BIMAnnotationProperties,
+ BIMAssignedProductProperties,
+ BIMCameraProperties,
+ BIMTextProperties,
DocProperties,
Sheet,
- BIMAnnotationProperties,
- BIMTextProperties,
- BIMCameraProperties,
- BIMAssignedProductProperties,
)
from bonsai.bim.module.drawing.prop import Drawing as DrawingProperties
@@ -2793,9 +2796,10 @@ class Drawing(bonsai.core.tool.Drawing):
@classmethod
def convert_svg_to_dxf(cls, svg_filepath: Path, dxf_filepath: Path) -> None:
- import ezdxf
import xml.etree.ElementTree as ET
+ import ezdxf
+
SVG = "{http://www.w3.org/2000/svg}"
IFC = "{http://www.ifcopenshell.org/ns}"
diff --git a/src/bonsai/bonsai/tool/feature.py b/src/bonsai/bonsai/tool/feature.py
index adc6cd9528..d58a8df55c 100644
--- a/src/bonsai/bonsai/tool/feature.py
+++ b/src/bonsai/bonsai/tool/feature.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from collections.abc import Iterable
+from typing import TYPE_CHECKING
+
import bpy
-import bonsai.core.tool
-import bonsai.tool as tool
-import bonsai.bim.helper
-import bonsai.core.geometry
import ifcopenshell
import ifcopenshell.api.feature
import ifcopenshell.util.representation
-from typing import TYPE_CHECKING
-from collections.abc import Iterable
+
+import bonsai.bim.helper
+import bonsai.core.geometry
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.void.prop import BIMBooleanProperties
diff --git a/src/bonsai/bonsai/tool/geometry.py b/src/bonsai/bonsai/tool/geometry.py
index 51ff6bfcf3..5a6429adfe 100644
--- a/src/bonsai/bonsai/tool/geometry.py
+++ b/src/bonsai/bonsai/tool/geometry.py
@@ -17,14 +17,27 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import bmesh
-import struct
+
import hashlib
import logging
-import numpy as np
-import numpy.typing as npt
import multiprocessing
+import struct
+from collections import defaultdict
+from collections.abc import Generator, Iterable, Iterator
+from math import pi, radians
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Literal,
+ Optional,
+ TypeGuard,
+ Union,
+ cast,
+ get_args,
+)
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.boundary
@@ -45,37 +58,30 @@ import ifcopenshell.util.shape
import ifcopenshell.util.shape_builder
import ifcopenshell.util.system
import ifcopenshell.util.unit
-import bonsai.core.tool
+import numpy as np
+import numpy.typing as npt
+from mathutils import Matrix, Vector
+from mathutils.bvhtree import BVHTree
+from typing_extensions import TypeIs
+
+import bonsai.bim.helper
+import bonsai.bim.import_ifc
import bonsai.core.drawing
import bonsai.core.geometry
import bonsai.core.root
import bonsai.core.spatial
import bonsai.core.style
import bonsai.core.system
+import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim.helper
-import bonsai.bim.import_ifc
-from collections import defaultdict
-from math import radians, pi
-from mathutils import Vector, Matrix
-from mathutils.bvhtree import BVHTree
from bonsai.bim.ifc import IfcStore
-from typing import (
- Union,
- Optional,
- Literal,
- TYPE_CHECKING,
- get_args,
- cast,
- TypeGuard,
- Any,
-)
-from collections.abc import Iterable, Iterator, Generator
-from typing_extensions import TypeIs
if TYPE_CHECKING:
+ from bonsai.bim.module.geometry.prop import (
+ BIMGeometryProperties,
+ BIMObjectGeometryProperties,
+ )
from bonsai.bim.prop import Attribute, BIMMeshProperties
- from bonsai.bim.module.geometry.prop import BIMObjectGeometryProperties, BIMGeometryProperties
class Geometry(bonsai.core.tool.Geometry):
diff --git a/src/bonsai/bonsai/tool/georeference.py b/src/bonsai/bonsai/tool/georeference.py
index 7b56adbab2..eefdd12cd9 100644
--- a/src/bonsai/bonsai/tool/georeference.py
+++ b/src/bonsai/bonsai/tool/georeference.py
@@ -17,22 +17,25 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import json
-import numpy as np
+from typing import TYPE_CHECKING, Any, Literal, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.api.georeference
import ifcopenshell.util.geolocation
import ifcopenshell.util.placement
import ifcopenshell.util.unit
+import numpy as np
+
+import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim.helper
-from typing import Any, Union, Literal, TYPE_CHECKING
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.georeference.prop import BIMGeoreferenceProperties
+ from bonsai.bim.prop import Attribute
class Georeference(bonsai.core.tool.Georeference):
diff --git a/src/bonsai/bonsai/tool/group.py b/src/bonsai/bonsai/tool/group.py
index d800904bf8..f0f3664f6f 100644
--- a/src/bonsai/bonsai/tool/group.py
+++ b/src/bonsai/bonsai/tool/group.py
@@ -17,17 +17,21 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import json
+from typing import TYPE_CHECKING, Literal, Union, assert_never
+
import bpy
import ifcopenshell
+from natsort import natsorted
+
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-from typing import TYPE_CHECKING, Literal, assert_never, Union
-from natsort import natsorted
if TYPE_CHECKING:
- from bonsai.bim.module.group.prop import BIMGroupProperties, Group as GroupProp
+ from bonsai.bim.module.group.prop import BIMGroupProperties
+ from bonsai.bim.module.group.prop import Group as GroupProp
from bonsai.bim.module.system.prop import BIMSystemProperties, System
diff --git a/src/bonsai/bonsai/tool/ifc.py b/src/bonsai/bonsai/tool/ifc.py
index 9f1c84e6d1..81c5202c19 100644
--- a/src/bonsai/bonsai/tool/ifc.py
+++ b/src/bonsai/bonsai/tool/ifc.py
@@ -17,20 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import os
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union, final
+
import bpy
-import numpy as np
import ifcopenshell.api
import ifcopenshell.ifcopenshell_wrapper as ifcopenshell_wrapper
import ifcopenshell.util.element
import ifcopenshell.util.schema
-import bonsai.core.tool
+import numpy as np
+
import bonsai.bim.handler
import bonsai.bim.schema
+import bonsai.core.tool
import bonsai.tool as tool
-from pathlib import Path
-from bonsai.bim.ifc import IfcStore, IFC_CONNECTED_TYPE
-from typing import Optional, Union, Any, final, Literal, TYPE_CHECKING
+from bonsai.bim.ifc import IFC_CONNECTED_TYPE, IfcStore
if TYPE_CHECKING:
from bpy.stub_internal import rna_enums
diff --git a/src/bonsai/bonsai/tool/ifcgit.py b/src/bonsai/bonsai/tool/ifcgit.py
index 7dfb2431d0..6854b38432 100644
--- a/src/bonsai/bonsai/tool/ifcgit.py
+++ b/src/bonsai/bonsai/tool/ifcgit.py
@@ -17,17 +17,20 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import logging
import os
import re
import subprocess
-import bpy
-import logging
import tempfile
+from pathlib import Path
+from typing import TYPE_CHECKING, Any, Literal, Union
+
+import bpy
+
+import bonsai.tool as tool
from bonsai.bim import import_ifc
from bonsai.bim.ifc import IfcStore
-import bonsai.tool as tool
-from pathlib import Path
-from typing import TYPE_CHECKING, Union, Literal, Any
# allows git import even if git executable isn't found
os.environ["GIT_PYTHON_REFRESH"] = "quiet"
diff --git a/src/bonsai/bonsai/tool/layer.py b/src/bonsai/bonsai/tool/layer.py
index 7b5775d20d..396cc13605 100644
--- a/src/bonsai/bonsai/tool/layer.py
+++ b/src/bonsai/bonsai/tool/layer.py
@@ -17,10 +17,13 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING
+
import bpy
+
import bonsai.core.tool
import bonsai.tool as tool
-from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.layer.prop import BIMLayerProperties
diff --git a/src/bonsai/bonsai/tool/library.py b/src/bonsai/bonsai/tool/library.py
index e16a159b00..861278e91c 100644
--- a/src/bonsai/bonsai/tool/library.py
+++ b/src/bonsai/bonsai/tool/library.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import ifcopenshell
+
+from typing import TYPE_CHECKING, Any, Literal, Union
+
import bpy
+import ifcopenshell
+
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-from typing import Literal, Any, Union, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.library.prop import BIMLibraryProperties
diff --git a/src/bonsai/bonsai/tool/loader.py b/src/bonsai/bonsai/tool/loader.py
index d5ceea1db5..8fdce1da4c 100644
--- a/src/bonsai/bonsai/tool/loader.py
+++ b/src/bonsai/bonsai/tool/loader.py
@@ -17,11 +17,16 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import logging
import os
import re
-import bpy
+from math import atan, radians
+from pathlib import Path
+from typing import Any, Optional, Union, cast
+
import bmesh
-import logging
+import bpy
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.element
@@ -30,17 +35,14 @@ import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape
import ifcopenshell.util.unit
-import bonsai.core.tool
-import bonsai.tool as tool
-import bonsai.bim.import_ifc
import numpy as np
import numpy.typing as npt
from ifcopenshell.util.shape_builder import np_to_4d
-from math import atan, radians
-from mathutils import Vector, Matrix
-from pathlib import Path
-from typing import Union, Any, Optional, cast
+from mathutils import Matrix, Vector
+import bonsai.bim.import_ifc
+import bonsai.core.tool
+import bonsai.tool as tool
# Progressively we'll refactor loading elements into Blender objects into this
# class. This will break down the monolithic import_ifc module and allow us to
@@ -313,6 +315,7 @@ class Loader(bonsai.core.tool.Loader):
# https://blender.stackexchange.com/questions/173206/how-to-efficiently-convert-a-pil-image-to-bpy-types-image
# https://blender.stackexchange.com/questions/62072/does-blender-have-a-method-to-a-get-png-formatted-bytearray-for-an-image-via-pyt
import io
+
from PIL import Image
value = texture["RasterCode"]
diff --git a/src/bonsai/bonsai/tool/material.py b/src/bonsai/bonsai/tool/material.py
index 5e8b531c5c..6f862100e2 100644
--- a/src/bonsai/bonsai/tool/material.py
+++ b/src/bonsai/bonsai/tool/material.py
@@ -17,22 +17,28 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from collections import defaultdict
+from typing import TYPE_CHECKING, Any, Optional, Union
+
import bpy
import ifcopenshell
import ifcopenshell.api.material
-import bonsai.core.tool
-import bonsai.core.material
-import bonsai.tool as tool
-import bonsai.bim.helper
-import ifcopenshell.util.unit
import ifcopenshell.util.element
-from collections import defaultdict
-from typing import Union, Any, TYPE_CHECKING, Optional
+import ifcopenshell.util.unit
+
+import bonsai.bim.helper
+import bonsai.core.material
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
# Avoid circular imports.
+ from bonsai.bim.module.material.prop import (
+ BIMMaterialProperties,
+ BIMObjectMaterialProperties,
+ )
from bonsai.bim.module.material.prop import Material as MaterialItem
- from bonsai.bim.module.material.prop import BIMMaterialProperties, BIMObjectMaterialProperties
class Material(bonsai.core.tool.Material):
diff --git a/src/bonsai/bonsai/tool/misc.py b/src/bonsai/bonsai/tool/misc.py
index e2a8028181..890e8aac9b 100644
--- a/src/bonsai/bonsai/tool/misc.py
+++ b/src/bonsai/bonsai/tool/misc.py
@@ -16,17 +16,19 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
+from typing import Union
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.unit
-import bonsai.core.tool
+from mathutils import Matrix, Vector
+
import bonsai.core.root
+import bonsai.core.tool
import bonsai.tool as tool
-from mathutils import Vector, Matrix
-from typing import Union
class Misc(bonsai.core.tool.Misc):
diff --git a/src/bonsai/bonsai/tool/model.py b/src/bonsai/bonsai/tool/model.py
index 8ecd7c577b..bc6357cb0d 100644
--- a/src/bonsai/bonsai/tool/model.py
+++ b/src/bonsai/bonsai/tool/model.py
@@ -17,13 +17,26 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
-import json
-import bmesh
-import shapely
+
import collections
import collections.abc
-import numpy as np
+import json
+from collections.abc import Iterable, Sequence
+from copy import deepcopy
+from math import atan, cos, degrees, pi, radians
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Literal,
+ Optional,
+ TypedDict,
+ TypeVar,
+ Union,
+ assert_never,
+)
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.geometry
@@ -37,38 +50,37 @@ import ifcopenshell.util.representation
import ifcopenshell.util.shape
import ifcopenshell.util.shape_builder
import ifcopenshell.util.unit
+import mathutils
+import numpy as np
+import shapely
+from ifcopenshell.util.shape_builder import ShapeBuilder, np_to_3d
+from mathutils import Matrix, Vector
+
import bonsai.core.geometry
import bonsai.core.tool
import bonsai.tool as tool
-import mathutils
-from math import atan, cos, degrees, pi, radians
-from mathutils import Matrix, Vector
-from copy import deepcopy
from bonsai.bim import import_ifc
-from ifcopenshell.util.shape_builder import ShapeBuilder, np_to_3d
-from typing import Optional, Union, TypeVar, Any, Literal, TYPE_CHECKING, TypedDict, assert_never
-from collections.abc import Iterable, Sequence
-
T = TypeVar("T")
V_ = tool.Blender.V_
if TYPE_CHECKING:
- import sverchok.node_tree
import ifcsverchok.nodes.ifc.shape_builder.shape_output
- from bonsai.bim.module.model.prop import (
- BIMModelProperties,
- BIMDoorProperties,
- BIMArrayProperties,
- BIMRoofProperties,
- BIMWindowProperties,
- BIMStairProperties,
- BIMRailingProperties,
- BIMExternalParametricGeometryProperties,
- BIMPolylineProperties,
- )
+ import sverchok.node_tree
from sverchok.core.node_group import SvGroupTreeNode
+ from bonsai.bim.module.model.prop import (
+ BIMArrayProperties,
+ BIMDoorProperties,
+ BIMExternalParametricGeometryProperties,
+ BIMModelProperties,
+ BIMPolylineProperties,
+ BIMRailingProperties,
+ BIMRoofProperties,
+ BIMStairProperties,
+ BIMWindowProperties,
+ )
+
class Model(bonsai.core.tool.Model):
@classmethod
@@ -1181,6 +1193,7 @@ class Model(bonsai.core.tool.Model):
return
from PIL import Image, ImageDraw
+
from bonsai.bim.module.model.data import AuthoringData
obj = tool.Ifc.get_object(element)
diff --git a/src/bonsai/bonsai/tool/nest.py b/src/bonsai/bonsai/tool/nest.py
index 094299c499..a386e402ec 100644
--- a/src/bonsai/bonsai/tool/nest.py
+++ b/src/bonsai/bonsai/tool/nest.py
@@ -17,11 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Union
+
import bpy
+import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
-import ifcopenshell.util.element
-from typing import TYPE_CHECKING, Union
if TYPE_CHECKING:
from bonsai.bim.module.nest.prop import BIMNestProperties, BIMObjectNestProperties
diff --git a/src/bonsai/bonsai/tool/owner.py b/src/bonsai/bonsai/tool/owner.py
index 615fd64db8..9ed0bda219 100644
--- a/src/bonsai/bonsai/tool/owner.py
+++ b/src/bonsai/bonsai/tool/owner.py
@@ -17,12 +17,15 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Literal, Union, assert_never
+
import bpy
+import ifcopenshell
+
+import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim.helper
-import ifcopenshell
-from typing import Union, Any, TYPE_CHECKING, Literal, assert_never
if TYPE_CHECKING:
from bonsai.bim.module.owner.prop import BIMOwnerProperties
diff --git a/src/bonsai/bonsai/tool/patch.py b/src/bonsai/bonsai/tool/patch.py
index eb2b514173..6ae06b5e10 100644
--- a/src/bonsai/bonsai/tool/patch.py
+++ b/src/bonsai/bonsai/tool/patch.py
@@ -17,11 +17,14 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
import bpy
import ifcopenshell
import ifcpatch
+
import bonsai.core.tool
-from typing import Any, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.patch.prop import BIMPatchProperties
diff --git a/src/bonsai/bonsai/tool/polyline.py b/src/bonsai/bonsai/tool/polyline.py
index e8bacd1b4c..b288260d7d 100644
--- a/src/bonsai/bonsai/tool/polyline.py
+++ b/src/bonsai/bonsai/tool/polyline.py
@@ -16,19 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
import math
+from dataclasses import dataclass, field
+from math import cos, degrees, radians, sin, tan
+from typing import Literal, Optional, Union
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.util.unit
+from lark import Lark, Transformer
+from mathutils import Matrix, Vector
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.module.drawing.helper import format_distance
-from dataclasses import dataclass, field
-from lark import Lark, Transformer
-from math import degrees, radians, sin, cos, tan
-from mathutils import Vector, Matrix
-from typing import Optional, Union, Literal
class Polyline(bonsai.core.tool.Polyline):
diff --git a/src/bonsai/bonsai/tool/profile.py b/src/bonsai/bonsai/tool/profile.py
index cfb36a06ab..99d2164a32 100644
--- a/src/bonsai/bonsai/tool/profile.py
+++ b/src/bonsai/bonsai/tool/profile.py
@@ -17,22 +17,25 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell
import ifcopenshell.api.profile
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.element
-import ifcopenshell.util.unit
import ifcopenshell.util.placement
import ifcopenshell.util.representation
import ifcopenshell.util.shape
+import ifcopenshell.util.unit
import numpy as np
+import PIL.ImageDraw
+
import bonsai.core.tool
import bonsai.tool as tool
-import PIL.ImageDraw
from bonsai.bim.module.model.decorator import ProfileDecorator
-from typing import Union, TYPE_CHECKING
if TYPE_CHECKING:
import bonsai.bim.module.profile.prop
diff --git a/src/bonsai/bonsai/tool/project.py b/src/bonsai/bonsai/tool/project.py
index 11c4bef3c9..d4df4c80de 100644
--- a/src/bonsai/bonsai/tool/project.py
+++ b/src/bonsai/bonsai/tool/project.py
@@ -17,27 +17,30 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import os
import shutil
+from collections import defaultdict
+from pathlib import Path
+from typing import TYPE_CHECKING, NamedTuple, Optional, Union
+
import bpy
import ifcopenshell
import ifcopenshell.api.document
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.unit
+from ifcopenshell.api.project.append_asset import APPENDABLE_ASSET_TYPES
+
+import bonsai.bim.schema
import bonsai.core.aggregate
import bonsai.core.context
-import bonsai.core.tool
-import bonsai.core.root
-import bonsai.core.unit
import bonsai.core.owner
-import bonsai.bim.schema
+import bonsai.core.root
+import bonsai.core.tool
+import bonsai.core.unit
import bonsai.tool as tool
-from collections import defaultdict
from bonsai.bim.ifc import IfcStore
-from ifcopenshell.api.project.append_asset import APPENDABLE_ASSET_TYPES
-from pathlib import Path
-from typing import NamedTuple, Optional, Union, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.project.prop import BIMProjectProperties, MeasureToolSettings
diff --git a/src/bonsai/bonsai/tool/pset.py b/src/bonsai/bonsai/tool/pset.py
index b6901238ba..8eabcd155d 100644
--- a/src/bonsai/bonsai/tool/pset.py
+++ b/src/bonsai/bonsai/tool/pset.py
@@ -17,27 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Literal, Union, assert_never
+
import bpy
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.util.attribute
import ifcopenshell.util.element
+
import bonsai.bim.helper
+import bonsai.bim.schema
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim.schema
-from typing import Union, Literal, Any, TYPE_CHECKING, assert_never
-
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.pset.prop import (
- PsetProperties,
- GlobalPsetProperties,
AddEditPropertyEntry,
- RenamePropertyEntry,
DeletePsetEntry,
+ GlobalPsetProperties,
+ PsetProperties,
+ RenamePropertyEntry,
)
+ from bonsai.bim.prop import Attribute
class Pset(bonsai.core.tool.Pset):
diff --git a/src/bonsai/bonsai/tool/pset_template.py b/src/bonsai/bonsai/tool/pset_template.py
index 66a65e820c..e4c1c3dbe1 100644
--- a/src/bonsai/bonsai/tool/pset_template.py
+++ b/src/bonsai/bonsai/tool/pset_template.py
@@ -17,16 +17,19 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from pathlib import Path
+from typing import TYPE_CHECKING, Literal, final
+
import bpy
import ifcopenshell
import ifcopenshell.api.pset_template
import ifcopenshell.util.attribute
import ifcopenshell.util.element
+
+import bonsai.bim
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim
-from pathlib import Path
-from typing import Literal, final, TYPE_CHECKING
from bonsai.bim.ifc import IfcStore
if TYPE_CHECKING:
diff --git a/src/bonsai/bonsai/tool/qto.py b/src/bonsai/bonsai/tool/qto.py
index 0efa759335..4fd271b283 100644
--- a/src/bonsai/bonsai/tool/qto.py
+++ b/src/bonsai/bonsai/tool/qto.py
@@ -17,15 +17,18 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union
+
import bpy
-import bonsai.core.tool
-import bonsai.bim.schema
-import bonsai.tool as tool
import ifcopenshell
-import ifcopenshell.util.unit
import ifcopenshell.util.element
+import ifcopenshell.util.unit
from mathutils import Vector
-from typing import Optional, Union, Literal, TYPE_CHECKING, Any
+
+import bonsai.bim.schema
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
from bonsai.bim.module.qto.prop import BIMQtoProperties
diff --git a/src/bonsai/bonsai/tool/raycast.py b/src/bonsai/bonsai/tool/raycast.py
index 90bec96644..ee06066dd7 100644
--- a/src/bonsai/bonsai/tool/raycast.py
+++ b/src/bonsai/bonsai/tool/raycast.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import copy
+from typing import Union
+
import bmesh
import bpy
-import copy
+import mathutils
import numpy as np
from bpy_extras import view3d_utils
+from mathutils import Vector
+
import bonsai.core.tool
import bonsai.tool as tool
-import mathutils
-from mathutils import Vector
-from typing import Union
class Raycast(bonsai.core.tool.Raycast):
diff --git a/src/bonsai/bonsai/tool/resource.py b/src/bonsai/bonsai/tool/resource.py
index 425dce1a76..c64b7b503b 100644
--- a/src/bonsai/bonsai/tool/resource.py
+++ b/src/bonsai/bonsai/tool/resource.py
@@ -19,25 +19,31 @@
# ############################################################################ #
from __future__ import annotations
-import bpy
-import bonsai.core.tool
-import bonsai.tool as tool
-import bonsai.bim.helper
+
import json
import time
-import isodate
from datetime import datetime
+from typing import TYPE_CHECKING, Any, Literal, Union
+
+import bpy
import ifcopenshell.api.pset
import ifcopenshell.api.resource
-import ifcopenshell.util.date as ifcdateutils
-import ifcopenshell.util.cost
-import ifcopenshell.util.resource
import ifcopenshell.util.constraint
-from typing import Any, Union, TYPE_CHECKING, Literal
+import ifcopenshell.util.cost
+import ifcopenshell.util.date as ifcdateutils
+import ifcopenshell.util.resource
+import isodate
+
+import bonsai.bim.helper
+import bonsai.core.tool
+import bonsai.tool as tool
if TYPE_CHECKING:
+ from bonsai.bim.module.resource.prop import (
+ BIMResourceProductivity,
+ BIMResourceProperties,
+ )
from bonsai.bim.prop import Attribute
- from bonsai.bim.module.resource.prop import BIMResourceProperties, BIMResourceProductivity
class Resource(bonsai.core.tool.Resource):
diff --git a/src/bonsai/bonsai/tool/root.py b/src/bonsai/bonsai/tool/root.py
index 42bd558bd1..be7e350adc 100644
--- a/src/bonsai/bonsai/tool/root.py
+++ b/src/bonsai/bonsai/tool/root.py
@@ -17,6 +17,9 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union
+
import bpy
import ifcopenshell
import ifcopenshell.api
@@ -24,16 +27,16 @@ import ifcopenshell.api.feature
import ifcopenshell.api.geometry
import ifcopenshell.api.root
import ifcopenshell.api.style
-import ifcopenshell.util.representation
import ifcopenshell.util.element
import ifcopenshell.util.placement
-import bonsai.core.tool
+import ifcopenshell.util.representation
+
import bonsai.core.aggregate
import bonsai.core.geometry
+import bonsai.core.tool
import bonsai.tool as tool
-from typing import Union, Optional, Any, Literal, TYPE_CHECKING
-from bonsai.bim.module.spatial.decorator import GridDecorator
from bonsai.bim.module.geometry.decorator import ItemDecorator
+from bonsai.bim.module.spatial.decorator import GridDecorator
if TYPE_CHECKING:
from bonsai.bim.module.root.prop import BIMRootProperties
diff --git a/src/bonsai/bonsai/tool/search.py b/src/bonsai/bonsai/tool/search.py
index 439e3469b3..ffd3a1aef3 100644
--- a/src/bonsai/bonsai/tool/search.py
+++ b/src/bonsai/bonsai/tool/search.py
@@ -17,20 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import json
-import lark
-import bonsai.tool as tool
-import bonsai.core.tool
+from itertools import cycle
+from typing import TYPE_CHECKING, Literal, Union
+
+import bpy
import ifcopenshell.guid
import ifcopenshell.util.selector
-from itertools import cycle
+import lark
+
+import bonsai.core.tool
+import bonsai.tool as tool
from bonsai.bim.prop import BIMFacet
-from typing import Union, Literal, TYPE_CHECKING
if TYPE_CHECKING:
- from bonsai.bim.prop import BIMFilterGroup
from bonsai.bim.module.search.prop import BIMSearchProperties
+ from bonsai.bim.prop import BIMFilterGroup
class Search(bonsai.core.tool.Search):
diff --git a/src/bonsai/bonsai/tool/sequence.py b/src/bonsai/bonsai/tool/sequence.py
index a2a2cb9668..8c5339d438 100644
--- a/src/bonsai/bonsai/tool/sequence.py
+++ b/src/bonsai/bonsai/tool/sequence.py
@@ -17,35 +17,37 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import base64
+import json
import os
import re
-import bpy
-import json
-import base64
-import ifcopenshell.api.sequence
-import ifcopenshell.util.element
-import pystache
-import mathutils
import webbrowser
-import isodate
-import ifcopenshell
-import ifcopenshell.api.group
-import ifcopenshell.ifcopenshell_wrapper as W
-import ifcopenshell.util.date
-import ifcopenshell.util.selector
-import ifcopenshell.util.sequence
-import bonsai.core.tool
-import bonsai.tool as tool
-import bonsai.bim.helper
-from dateutil import parser
+from collections.abc import Iterable
from datetime import datetime
from datetime import time as datetime_time
-from typing import Optional, Any, Union, Literal, TYPE_CHECKING
-from collections.abc import Iterable
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union
+
+import bpy
+import ifcopenshell
+import ifcopenshell.api.group
+import ifcopenshell.api.sequence
+import ifcopenshell.ifcopenshell_wrapper as W
+import ifcopenshell.util.date
+import ifcopenshell.util.element
+import ifcopenshell.util.selector
+import ifcopenshell.util.sequence
+import isodate
+import mathutils
+import pystache
+from dateutil import parser
from mathutils import Color
+import bonsai.bim.helper
+import bonsai.core.tool
+import bonsai.tool as tool
+
if TYPE_CHECKING:
- from bonsai.bim.prop import Attribute
from bonsai.bim.module.sequence.prop import (
BIMAnimationProperties,
BIMStatusProperties,
@@ -54,6 +56,7 @@ if TYPE_CHECKING:
BIMWorkPlanProperties,
BIMWorkScheduleProperties,
)
+ from bonsai.bim.prop import Attribute
class Sequence(bonsai.core.tool.Sequence):
diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py
index 0e6fe06f9e..5c538dfc43 100644
--- a/src/bonsai/bonsai/tool/snap.py
+++ b/src/bonsai/bonsai/tool/snap.py
@@ -17,20 +17,23 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
+import math
+from typing import TYPE_CHECKING, Any, Union
+
import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.util.unit
+import mathutils
+from lark import Lark, Transformer
+from mathutils import Matrix, Vector
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim.module.drawing.data import DecoratorData
from bonsai.bim.module.drawing.decoration import CutDecorator
from bonsai.bim.module.model.decorator import PolylineDecorator
-import math
-import mathutils
-from mathutils import Matrix, Vector
-from lark import Lark, Transformer
-from typing import Union, Any, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.prop import BIMSnapGroups, BIMSnapProperties
diff --git a/src/bonsai/bonsai/tool/spatial.py b/src/bonsai/bonsai/tool/spatial.py
index a177a237e8..922c6cc9ad 100644
--- a/src/bonsai/bonsai/tool/spatial.py
+++ b/src/bonsai/bonsai/tool/spatial.py
@@ -17,43 +17,46 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
+import json
+from collections import defaultdict
+from collections.abc import Generator, Iterable
+from math import pi
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union
+
import bmesh
-import shapely
-import shapely.ops
+import bpy
import ifcopenshell
import ifcopenshell.api.attribute
import ifcopenshell.api.type
import ifcopenshell.geom
+import ifcopenshell.util.classification
import ifcopenshell.util.element
import ifcopenshell.util.placement
import ifcopenshell.util.representation
-import ifcopenshell.util.classification
import ifcopenshell.util.shape_builder
import ifcopenshell.util.type
import ifcopenshell.util.unit
-import bonsai.core.type
-import bonsai.core.tool
+import numpy as np
+import shapely
+import shapely.ops
+from mathutils import Matrix, Vector
+from natsort import natsorted
+from shapely import Polygon
+
+import bonsai.core.geometry
import bonsai.core.root
import bonsai.core.spatial
-import bonsai.core.geometry
+import bonsai.core.tool
+import bonsai.core.type
import bonsai.core.unit
import bonsai.tool as tool
-import json
-import numpy as np
-from math import pi
-from mathutils import Vector, Matrix
-from shapely import Polygon
-from typing import Optional, Union, Literal, Any, TYPE_CHECKING
-from collections.abc import Generator, Iterable
-from collections import defaultdict
-from natsort import natsorted
if TYPE_CHECKING:
from bonsai.bim.module.spatial.prop import (
BIMGridProperties,
- BIMSpatialDecompositionProperties,
BIMObjectSpatialProperties,
+ BIMSpatialDecompositionProperties,
)
diff --git a/src/bonsai/bonsai/tool/structural.py b/src/bonsai/bonsai/tool/structural.py
index 3f218e52e9..b011f5df88 100644
--- a/src/bonsai/bonsai/tool/structural.py
+++ b/src/bonsai/bonsai/tool/structural.py
@@ -17,21 +17,30 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import json
+from typing import TYPE_CHECKING, Any, Union
+
import bpy
import ifcopenshell
import ifcopenshell.api.context
import ifcopenshell.api.structural
import ifcopenshell.util.attribute
import ifcopenshell.util.representation
-import json
+
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-from typing import Union, Any, TYPE_CHECKING
if TYPE_CHECKING:
- from bonsai.bim.module.structural.prop import BIMStructuralProperties, BIMObjectStructuralProperties
- from ifcopenshell.api.structural.edit_structural_boundary_condition import AttributeDict
+ from ifcopenshell.api.structural.edit_structural_boundary_condition import (
+ AttributeDict,
+ )
+
+ from bonsai.bim.module.structural.prop import (
+ BIMObjectStructuralProperties,
+ BIMStructuralProperties,
+ )
class Structural(bonsai.core.tool.Structural):
diff --git a/src/bonsai/bonsai/tool/style.py b/src/bonsai/bonsai/tool/style.py
index e6861b53dc..78cb19680e 100644
--- a/src/bonsai/bonsai/tool/style.py
+++ b/src/bonsai/bonsai/tool/style.py
@@ -17,23 +17,30 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from collections.abc import Sequence
+from typing import TYPE_CHECKING, Any, Literal, Optional, Union
+
import bpy
-import numpy as np
import ifcopenshell
import ifcopenshell.api.style
import ifcopenshell.util.element
import ifcopenshell.util.representation
+import numpy as np
+from mathutils import Color
+
+import bonsai.bim.helper
import bonsai.core.style
import bonsai.core.tool
import bonsai.tool as tool
-import bonsai.bim.helper
-from mathutils import Color
-from typing import Union, Any, Optional, Literal, TYPE_CHECKING
-from collections.abc import Sequence
if TYPE_CHECKING:
+ from bonsai.bim.module.style.prop import (
+ BIMStyleProperties,
+ BIMStylesProperties,
+ ColourRgb,
+ )
from bonsai.bim.prop import Attribute
- from bonsai.bim.module.style.prop import BIMStylesProperties, BIMStyleProperties, ColourRgb
# fmt: off
TEXTURE_MAPS_BY_METHODS = {
diff --git a/src/bonsai/bonsai/tool/surveyor.py b/src/bonsai/bonsai/tool/surveyor.py
index 7c203586f2..f59d9cd7da 100644
--- a/src/bonsai/bonsai/tool/surveyor.py
+++ b/src/bonsai/bonsai/tool/surveyor.py
@@ -20,12 +20,13 @@ import bpy
import ifcopenshell.api
import ifcopenshell.util.geolocation
import ifcopenshell.util.unit
-import bonsai.core.tool
-import bonsai.tool as tool
import numpy as np
import numpy.typing as npt
from mathutils import Matrix
+import bonsai.core.tool
+import bonsai.tool as tool
+
class Surveyor(bonsai.core.tool.Surveyor):
@classmethod
diff --git a/src/bonsai/bonsai/tool/system.py b/src/bonsai/bonsai/tool/system.py
index 9df19e5619..8b949a36c9 100644
--- a/src/bonsai/bonsai/tool/system.py
+++ b/src/bonsai/bonsai/tool/system.py
@@ -17,26 +17,29 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+import re
+from enum import Enum
+from typing import TYPE_CHECKING, Any, Optional, Union
+
import bpy
import ifcopenshell.api.geometry
import ifcopenshell.api.system
import ifcopenshell.util.element
import ifcopenshell.util.system
+from mathutils import Matrix, Vector
+from natsort import natsorted
+
import bonsai.bim.helper
import bonsai.core.geometry
import bonsai.core.root
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.bim import import_ifc
-import re
-from mathutils import Matrix, Vector
from bonsai.bim.module.system.data import ObjectSystemData, SystemDecorationData
-from enum import Enum
-from typing import TYPE_CHECKING, Optional, Any, Union
-from natsort import natsorted
if TYPE_CHECKING:
- from bonsai.bim.module.system.prop import BIMSystemProperties, BIMZoneProperties, BIMZoneProperties
+ from bonsai.bim.module.system.prop import BIMSystemProperties, BIMZoneProperties
class System(bonsai.core.tool.System):
diff --git a/src/bonsai/bonsai/tool/type.py b/src/bonsai/bonsai/tool/type.py
index 43d86d5076..95474e57b7 100644
--- a/src/bonsai/bonsai/tool/type.py
+++ b/src/bonsai/bonsai/tool/type.py
@@ -17,14 +17,17 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
+from typing import TYPE_CHECKING, Union
+
import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
-import bonsai.core.tool
+
import bonsai.core.geometry
+import bonsai.core.tool
import bonsai.tool as tool
-from typing import Union, TYPE_CHECKING
if TYPE_CHECKING:
from bonsai.bim.module.type.prop import BIMTypeProperties
diff --git a/src/bonsai/bonsai/tool/unit.py b/src/bonsai/bonsai/tool/unit.py
index b98e4fc272..823c50bdc3 100644
--- a/src/bonsai/bonsai/tool/unit.py
+++ b/src/bonsai/bonsai/tool/unit.py
@@ -17,15 +17,18 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-import bpy
+
import json
import math
+from typing import TYPE_CHECKING, Any, Literal, Union, assert_never
+
+import bpy
import ifcopenshell
+from lark import Lark, Transformer
+
import bonsai.bim.helper
import bonsai.core.tool
import bonsai.tool as tool
-from lark import Lark, Transformer
-from typing import Union, Literal, Any, TYPE_CHECKING, assert_never
if TYPE_CHECKING:
from bonsai.bim.module.unit.prop import BIMUnitProperties
diff --git a/src/bonsai/bonsai/tool/web.py b/src/bonsai/bonsai/tool/web.py
index 2e1628378f..35811b3819 100644
--- a/src/bonsai/bonsai/tool/web.py
+++ b/src/bonsai/bonsai/tool/web.py
@@ -17,37 +17,40 @@
# along with Bonsai. If not, see .
from __future__ import annotations
-from ifcopenshell.util.classification import get_classification_data, get_references
-from ifcopenshell.util.selector import filter_elements
-import ifcopenshell.util.cost
+
+import asyncio
+import errno
+import json
+import os
+import queue
+import socket
+import subprocess
+import sys
+import threading
+import time
+import webbrowser
+from pathlib import Path
+from time import sleep
+from typing import TYPE_CHECKING, Any, Optional, Union
+
import bpy
-from bonsai.bim.module.web.data import WebData
-from ifcopenshell.util.element import get_psets, get_type, has_property
-import bonsai.core.tool
-import bonsai.tool as tool
-import ifcopenshell.api.sequence
import ifcopenshell.api.classification
import ifcopenshell.api.cost
-from typing import Any, Optional, TYPE_CHECKING, Union
-from mathutils import Color
-import time
-import socket
-import sys
-import os
-import errno
-import subprocess
-import webbrowser
-import asyncio
+import ifcopenshell.api.sequence
+import ifcopenshell.util.cost
import socketio
-import threading
-import queue
-import json
-from time import sleep
-from pathlib import Path
-import bonsai.core.sequence
-import bonsai.core.cost
from ifc5d.ifc2json import ifc5D2json
+from ifcopenshell.util.classification import get_classification_data, get_references
+from ifcopenshell.util.element import get_psets, get_type, has_property
+from ifcopenshell.util.selector import filter_elements
+from mathutils import Color
+
+import bonsai.core.cost
+import bonsai.core.sequence
+import bonsai.core.tool
+import bonsai.tool as tool
from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.web.data import WebData
if TYPE_CHECKING:
from bonsai.bim.module.web.prop import WebProperties
diff --git a/src/bonsai/pyproject.toml b/src/bonsai/pyproject.toml
index 6dab8f3454..3ec2cb8748 100644
--- a/src/bonsai/pyproject.toml
+++ b/src/bonsai/pyproject.toml
@@ -38,8 +38,3 @@ exclude = ["test*"]
[tool.ruff]
extend = "../../pyproject.toml"
-
-[tool.ruff.lint]
-ignore = [
- "I", # import sorting - ignore it temporarily, still need to do some tests
-]
diff --git a/src/bonsai/runpytest.py b/src/bonsai/runpytest.py
index f9a55fdc27..9a00ea69b0 100755
--- a/src/bonsai/runpytest.py
+++ b/src/bonsai/runpytest.py
@@ -23,6 +23,7 @@ Usage: `blender -b -P runpytest.py -- ARGS`
"""
import sys
+
import pytest
argv = [__file__]
diff --git a/src/bonsai/scripts/bonsai_translations.py b/src/bonsai/scripts/bonsai_translations.py
index de7f613210..7a0fe86ea9 100644
--- a/src/bonsai/scripts/bonsai_translations.py
+++ b/src/bonsai/scripts/bonsai_translations.py
@@ -4,20 +4,20 @@ try:
# Ensure it's not fake-bpy-module.
if not hasattr(bpy, "context"):
raise ModuleNotFoundError
- import bl_i18n_utils
import addon_utils
+ import bl_i18n_utils
BPY_IS_LOADED = True
except ModuleNotFoundError:
BPY_IS_LOADED = False
-import shutil
-import tempfile
import importlib
import os
import re
-from pathlib import Path
+import shutil
+import tempfile
from dataclasses import dataclass, field
+from pathlib import Path
from typing import Optional
bl_info = {
@@ -274,7 +274,9 @@ if BPY_IS_LOADED:
f"Couldn't find locale path in the source directory, creating dummy directory: {source_locale_path}.",
)
- from ui_translate.settings import settings as ui_translate_settings # pyright: ignore[reportMissingImports]
+ from ui_translate.settings import (
+ settings as ui_translate_settings, # pyright: ignore[reportMissingImports]
+ )
from ui_translate.update_ui import ( # pyright: ignore[reportMissingImports]
UI_OT_i18n_updatetranslation_init_settings,
)
diff --git a/src/bonsai/scripts/classifications/uniclass_classification.py b/src/bonsai/scripts/classifications/uniclass_classification.py
index ce55fae9e7..299db8a469 100644
--- a/src/bonsai/scripts/classifications/uniclass_classification.py
+++ b/src/bonsai/scripts/classifications/uniclass_classification.py
@@ -1,4 +1,5 @@
import os
+
import ifcopenshell
import pandas as pd
diff --git a/src/bonsai/scripts/classifications/vbis.py b/src/bonsai/scripts/classifications/vbis.py
index fe77308f82..7c4f43b967 100644
--- a/src/bonsai/scripts/classifications/vbis.py
+++ b/src/bonsai/scripts/classifications/vbis.py
@@ -1,12 +1,13 @@
import csv
-import os
import json
+import os
# import pystache
import subprocess
-import ifcopenshell
from pathlib import Path
+import ifcopenshell
+
class Generator:
def __init__(self):
diff --git a/src/bonsai/scripts/classifications/xml_classification.py b/src/bonsai/scripts/classifications/xml_classification.py
index d75383a051..0a80fb68e7 100644
--- a/src/bonsai/scripts/classifications/xml_classification.py
+++ b/src/bonsai/scripts/classifications/xml_classification.py
@@ -1,9 +1,10 @@
"""This script converts Graphisoft XML into an IFC file"""
+import os
import xml.etree.ElementTree as ET
+
import ifcopenshell
import ifcopenshell.guid
-import os
class IFC4Extractor:
diff --git a/src/bonsai/scripts/dev_environment_vscode_config.py b/src/bonsai/scripts/dev_environment_vscode_config.py
index b574ba9bf4..088810e05c 100644
--- a/src/bonsai/scripts/dev_environment_vscode_config.py
+++ b/src/bonsai/scripts/dev_environment_vscode_config.py
@@ -1,6 +1,10 @@
-import bonsai, json, bpy
+import json
from pathlib import Path
+import bpy
+
+import bonsai
+
repo_path = Path(bonsai.__file__).resolve().parent
install_path = Path(bonsai.__file__).absolute().parent
assert repo_path != install_path, "Run `dev_environment.py` to setup the development environment symlinks first."
diff --git a/src/bonsai/scripts/dxf2ifc.py b/src/bonsai/scripts/dxf2ifc.py
index 3fa34e379a..caef1df864 100644
--- a/src/bonsai/scripts/dxf2ifc.py
+++ b/src/bonsai/scripts/dxf2ifc.py
@@ -16,9 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import ezdxf
import ifcopenshell
import ifcopenshell.guid
-import ezdxf
class Dxf2Ifc:
diff --git a/src/bonsai/scripts/extract.py b/src/bonsai/scripts/extract.py
index dffaaf6d40..2b4166be81 100644
--- a/src/bonsai/scripts/extract.py
+++ b/src/bonsai/scripts/extract.py
@@ -16,9 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import xml.sax, json, copy, pathlib
-from bs4 import BeautifulSoup # pyright: ignore[reportMissingModuleSource]
+import copy
+import json
+import pathlib
import sys
+import xml.sax
+
+from bs4 import BeautifulSoup # pyright: ignore[reportMissingModuleSource]
sys.setrecursionlimit(100)
diff --git a/src/bonsai/scripts/gbxml.py b/src/bonsai/scripts/gbxml.py
index 8d23fe6018..7280c69c2a 100644
--- a/src/bonsai/scripts/gbxml.py
+++ b/src/bonsai/scripts/gbxml.py
@@ -16,15 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import uuid
import math
import sys
+import uuid
+
+import bpy
+import bspy # pyright: ignore[reportMissingImports]
# sys.path.append('C:\Program Files\Python37\Lib\site-packages')
import lxml
import lxml.etree
-import bspy # pyright: ignore[reportMissingImports]
from bspy import Gbxml # pyright: ignore[reportMissingImports]
diff --git a/src/bonsai/scripts/generate_au_library.py b/src/bonsai/scripts/generate_au_library.py
index 044f2fb090..43f05b45da 100644
--- a/src/bonsai/scripts/generate_au_library.py
+++ b/src/bonsai/scripts/generate_au_library.py
@@ -30,6 +30,7 @@ import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.api.unit
+
import bonsai.tool as tool
diff --git a/src/bonsai/scripts/generate_demo_library.py b/src/bonsai/scripts/generate_demo_library.py
index 7a9e741dab..a77fc09ab7 100644
--- a/src/bonsai/scripts/generate_demo_library.py
+++ b/src/bonsai/scripts/generate_demo_library.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from pathlib import Path
+
import bpy
import ifcopenshell
import ifcopenshell.api
@@ -31,8 +33,8 @@ import ifcopenshell.api.style
import ifcopenshell.api.unit
import ifcopenshell.util.schema
import ifcopenshell.util.shape_builder
+
import bonsai.tool as tool
-from pathlib import Path
def sync_guids(target_file: ifcopenshell.file, source_file: ifcopenshell.file) -> None:
diff --git a/src/bonsai/scripts/generate_entourage_library.py b/src/bonsai/scripts/generate_entourage_library.py
index 78ed71ac6a..7435186396 100644
--- a/src/bonsai/scripts/generate_entourage_library.py
+++ b/src/bonsai/scripts/generate_entourage_library.py
@@ -17,6 +17,8 @@
# along with Bonsai. If not, see .
import os
+from pathlib import Path
+
import bpy
import ifcopenshell
import ifcopenshell.api
@@ -26,9 +28,8 @@ import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.api.unit
-import bonsai.tool as tool
-from pathlib import Path
+import bonsai.tool as tool
# When run from Blender
BLEND_DIR = os.path.dirname(bpy.data.filepath)
diff --git a/src/bonsai/scripts/generate_furniture_library.py b/src/bonsai/scripts/generate_furniture_library.py
index 7212191be9..1c1572c854 100644
--- a/src/bonsai/scripts/generate_furniture_library.py
+++ b/src/bonsai/scripts/generate_furniture_library.py
@@ -16,7 +16,11 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import numpy as np
+from itertools import chain
+from math import cos, pi, tan
+from pathlib import Path
+from typing import Optional, Union
+
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.context
@@ -27,11 +31,8 @@ import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.api.unit
import ifcopenshell.util.element
-from math import cos, tan, pi
-from pathlib import Path
-from itertools import chain
-from ifcopenshell.util.shape_builder import ShapeBuilder, V, np_to_3d, np_normalized
-from typing import Optional, Union
+import numpy as np
+from ifcopenshell.util.shape_builder import ShapeBuilder, V, np_normalized, np_to_3d
GeneratorOutput = Union[list[ifcopenshell.entity_instance], list[list[ifcopenshell.entity_instance]]]
diff --git a/src/bonsai/scripts/generate_landscape_library.py b/src/bonsai/scripts/generate_landscape_library.py
index 01e694e9d0..34d2366fd5 100644
--- a/src/bonsai/scripts/generate_landscape_library.py
+++ b/src/bonsai/scripts/generate_landscape_library.py
@@ -16,10 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import bpy
import csv
+import os
import random
+from collections import namedtuple
+from itertools import chain
+from math import cos, pi, sin, tan
+from pathlib import Path
+from random import uniform
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.context
@@ -29,15 +35,10 @@ import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.api.unit
import ifcopenshell.util.unit
-import bonsai.tool as tool
-from math import cos, sin, tan, pi
-from pathlib import Path
-from itertools import chain
from ifcopenshell.util.shape_builder import ShapeBuilder
-from collections import namedtuple
-from mathutils import Vector, Matrix
-from random import uniform
+from mathutils import Matrix, Vector
+import bonsai.tool as tool
# When run from Blender
BLEND_DIR = os.path.dirname(bpy.data.filepath)
diff --git a/src/bonsai/scripts/generate_png_icons.py b/src/bonsai/scripts/generate_png_icons.py
index d24b69fe90..a523163a20 100644
--- a/src/bonsai/scripts/generate_png_icons.py
+++ b/src/bonsai/scripts/generate_png_icons.py
@@ -5,9 +5,9 @@
# to run on mac: python3 generate_png_icons.py
import os
+import re
import subprocess
import xml.etree.ElementTree as ET
-import re
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
SVG_FILE = os.path.join(SCRIPT_DIR, "bonsai_icons.svg")
diff --git a/src/bonsai/scripts/generate_site_library.py b/src/bonsai/scripts/generate_site_library.py
index e42ad4e4f2..0b0511e9da 100644
--- a/src/bonsai/scripts/generate_site_library.py
+++ b/src/bonsai/scripts/generate_site_library.py
@@ -25,6 +25,7 @@ import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.style
import ifcopenshell.api.unit
+
import bonsai.tool as tool
diff --git a/src/bonsai/scripts/generate_steel_profiles_library.py b/src/bonsai/scripts/generate_steel_profiles_library.py
index 086c918689..c54818df4b 100644
--- a/src/bonsai/scripts/generate_steel_profiles_library.py
+++ b/src/bonsai/scripts/generate_steel_profiles_library.py
@@ -19,15 +19,16 @@
# fmt: off
# pylint: skip-file
+from math import cos, pi
+from pathlib import Path
+
+import boltspy as bolts # pyright: ignore[reportMissingImports]
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.material
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.unit
-import boltspy as bolts # pyright: ignore[reportMissingImports]
-from math import cos, pi
-from pathlib import Path
from ifcopenshell.util.shape_builder import ShapeBuilder, V, ifc_safe_vector_type
diff --git a/src/bonsai/scripts/generate_util_type_json.py b/src/bonsai/scripts/generate_util_type_json.py
index c162800f54..7c44a9dfe9 100644
--- a/src/bonsai/scripts/generate_util_type_json.py
+++ b/src/bonsai/scripts/generate_util_type_json.py
@@ -18,6 +18,7 @@
# See bug #1300. Dodgy quick results that we should rebuild later.
import json
+
import ifcopenshell
import ifcopenshell.util.schema
diff --git a/src/bonsai/scripts/geonodes_modifier_prototype.py b/src/bonsai/scripts/geonodes_modifier_prototype.py
index 1b3dbfd8ab..16370c1ca2 100644
--- a/src/bonsai/scripts/geonodes_modifier_prototype.py
+++ b/src/bonsai/scripts/geonodes_modifier_prototype.py
@@ -17,14 +17,15 @@
# along with Bonsai. If not, see .
+import json
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.util.element
-import bonsai.tool as tool
-import bpy
-import bmesh
-import json
+import bonsai.tool as tool
# Below is the code for
# prototype for geonodes modifier (similar to ifc sverchok modifier)
diff --git a/src/bonsai/scripts/getIfcElements.py b/src/bonsai/scripts/getIfcElements.py
index 335260f7e9..57e03d50c4 100644
--- a/src/bonsai/scripts/getIfcElements.py
+++ b/src/bonsai/scripts/getIfcElements.py
@@ -18,9 +18,9 @@
"""This script converts the computer iterpretable listing ifcXML XSD into a JSON file"""
-import xml.etree.ElementTree as ET
import collections
import json
+import xml.etree.ElementTree as ET
class IFC4Extractor:
diff --git a/src/bonsai/scripts/get_all_qtos.py b/src/bonsai/scripts/get_all_qtos.py
index 7f23dca55a..d364115559 100644
--- a/src/bonsai/scripts/get_all_qtos.py
+++ b/src/bonsai/scripts/get_all_qtos.py
@@ -1,13 +1,14 @@
"""Update ifc5d json files with qtos from the provided pset templates path."""
import json
-import ifcopenshell.util.pset
-import ifcopenshell.util.type
-import ifc5d
from collections import defaultdict
from pathlib import Path
from typing import Union
+import ifc5d
+import ifcopenshell.util.pset
+import ifcopenshell.util.type
+
def order_dict(dictionary):
# https://stackoverflow.com/questions/22721579/sorting-a-nested-ordereddict-by-key-recursively
diff --git a/src/bonsai/scripts/get_description.py b/src/bonsai/scripts/get_description.py
index 2d581185aa..a05d5dc287 100644
--- a/src/bonsai/scripts/get_description.py
+++ b/src/bonsai/scripts/get_description.py
@@ -16,11 +16,12 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import os
-import re
import html
import json
+import os
+import re
from pathlib import Path
+
import ifcopenshell
diff --git a/src/bonsai/scripts/get_volume_by_material.py b/src/bonsai/scripts/get_volume_by_material.py
index 2f81862990..312878e53d 100644
--- a/src/bonsai/scripts/get_volume_by_material.py
+++ b/src/bonsai/scripts/get_volume_by_material.py
@@ -16,10 +16,11 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
import pprint
+import bmesh
+import bpy
+
material_volumes = {}
for obj in bpy.context.selected_objects:
diff --git a/src/bonsai/scripts/headless_import.py b/src/bonsai/scripts/headless_import.py
index 111b07d78b..7554eacc04 100644
--- a/src/bonsai/scripts/headless_import.py
+++ b/src/bonsai/scripts/headless_import.py
@@ -1,6 +1,7 @@
# This can be run using `blender -b -P headless_import.py`
import bpy
+
import bonsai.tool as tool
# When federating, you may wish to manually specify the origin to ensure models
diff --git a/src/bonsai/scripts/obj2ifc-meshlab.py b/src/bonsai/scripts/obj2ifc-meshlab.py
index 1d2739ca21..c8292bb0f7 100644
--- a/src/bonsai/scripts/obj2ifc-meshlab.py
+++ b/src/bonsai/scripts/obj2ifc-meshlab.py
@@ -19,21 +19,21 @@
# This can be packaged with `pyinstaller --onefile --hidden-import numpy --collect-all ifcopenshell --clean obj2ifc.py`
import argparse
-import pymeshlab # pyright: ignore[reportMissingImports]
+from pathlib import Path
+
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.aggregate
import ifcopenshell.api.context
import ifcopenshell.api.geometry
+import ifcopenshell.api.owner.settings
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.spatial
import ifcopenshell.api.unit
-import ifcopenshell.api.owner.settings
import ifcopenshell.guid
-from pathlib import Path
-
import numpy as np
+import pymeshlab # pyright: ignore[reportMissingImports]
class Obj2Ifc:
diff --git a/src/bonsai/scripts/obj2ifc.py b/src/bonsai/scripts/obj2ifc.py
index dc91cedfd5..70f3bf7b41 100644
--- a/src/bonsai/scripts/obj2ifc.py
+++ b/src/bonsai/scripts/obj2ifc.py
@@ -19,21 +19,21 @@
# This can be packaged with `pyinstaller --onefile --hidden-import numpy --collect-all ifcopenshell --clean obj2ifc.py`
import argparse
-import pywavefront # pyright: ignore[reportMissingImports]
+from pathlib import Path
+
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.aggregate
import ifcopenshell.api.context
import ifcopenshell.api.geometry
+import ifcopenshell.api.owner.settings
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.spatial
import ifcopenshell.api.unit
-import ifcopenshell.api.owner.settings
import ifcopenshell.guid
-from pathlib import Path
-
import numpy as np
+import pywavefront # pyright: ignore[reportMissingImports]
class Obj2Ifc:
diff --git a/src/bonsai/scripts/replace_drawing_path.py b/src/bonsai/scripts/replace_drawing_path.py
index eeca3911e0..500726082f 100644
--- a/src/bonsai/scripts/replace_drawing_path.py
+++ b/src/bonsai/scripts/replace_drawing_path.py
@@ -27,15 +27,15 @@ It works on the active ifc file (if exists).
"""
-import bonsai.tool as tool
+import os
+import sys
+from sys import platform
+
import ifcopenshell
import ifcopenshell.api.pset
import ifcopenshell.util.element
-import sys
-
-import os
-from sys import platform
+import bonsai.tool as tool
file = tool.Ifc.get()
if not file:
diff --git a/src/bonsai/scripts/reregister_bonsai.py b/src/bonsai/scripts/reregister_bonsai.py
index 437c9f5b34..ba9ab2ba2a 100644
--- a/src/bonsai/scripts/reregister_bonsai.py
+++ b/src/bonsai/scripts/reregister_bonsai.py
@@ -25,6 +25,7 @@ to ensure disable and enable occur in the same Blender session.
import bpy
+
import bonsai.tool as tool
bonsai_name = tool.Blender.get_blender_addon_package_name()
diff --git a/src/bonsai/scripts/setup_pytest.py b/src/bonsai/scripts/setup_pytest.py
index 90af113eca..28dc7565f1 100644
--- a/src/bonsai/scripts/setup_pytest.py
+++ b/src/bonsai/scripts/setup_pytest.py
@@ -16,8 +16,8 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import sys
import subprocess
+import sys
from pathlib import Path
print("Here are the detected system paths:")
@@ -45,10 +45,10 @@ for dep in dependencies:
subprocess.check_call(command + [dep])
try:
+ import pygments
import pytest
import pytest_bdd
import pytest_blender
- import pygments
print("Test dependency installation was successful!")
except Exception as e:
diff --git a/src/bonsai/scripts/standalone_blender_import.py b/src/bonsai/scripts/standalone_blender_import.py
index 27dc84e07f..a2b9908afb 100644
--- a/src/bonsai/scripts/standalone_blender_import.py
+++ b/src/bonsai/scripts/standalone_blender_import.py
@@ -1,6 +1,7 @@
+import multiprocessing
+
import ifcopenshell
import ifcopenshell.geom
-import multiprocessing
class BlenderImporter:
diff --git a/src/bonsai/scripts/standalone_drawer.py b/src/bonsai/scripts/standalone_drawer.py
index 1b669adb3f..3eed11b9c9 100644
--- a/src/bonsai/scripts/standalone_drawer.py
+++ b/src/bonsai/scripts/standalone_drawer.py
@@ -1,10 +1,11 @@
-import sys
-import ifcopenshell
-import ifcopenshell.util.element
-import ifcopenshell.geom
import multiprocessing
+import sys
from typing import NamedTuple
+
+import ifcopenshell
+import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
+import ifcopenshell.util.element
# W.turn_on_detailed_logging()
diff --git a/src/bonsai/scripts/standalone_section_shader.py b/src/bonsai/scripts/standalone_section_shader.py
index 970e58105b..20afd92fea 100644
--- a/src/bonsai/scripts/standalone_section_shader.py
+++ b/src/bonsai/scripts/standalone_section_shader.py
@@ -12,20 +12,16 @@ bl_info = {
}
-import bpy
-from bpy.types import Operator, PropertyGroup, Panel
-from mathutils import Vector, Matrix, Euler
from math import radians
+
+import bpy
from bpy.props import (
- PointerProperty,
- StringProperty,
- EnumProperty,
BoolProperty,
- IntProperty,
- FloatProperty,
FloatVectorProperty,
- CollectionProperty,
+ PointerProperty,
)
+from bpy.types import Operator, Panel, PropertyGroup
+from mathutils import Euler, Vector
class SectionCutawayManager:
diff --git a/src/bonsai/scripts/waldo.py b/src/bonsai/scripts/waldo.py
index 5ed734356c..00243c5782 100644
--- a/src/bonsai/scripts/waldo.py
+++ b/src/bonsai/scripts/waldo.py
@@ -1,4 +1,8 @@
-import numpy as np
+# https://stackoverflow.com/a/9184560/9627415
+# Possible optimisation to linalg.norm?
+from itertools import cycle
+from math import radians
+
import ifcopenshell
import ifcopenshell.api.aggregate
import ifcopenshell.api.context
@@ -12,14 +16,7 @@ import ifcopenshell.api.type
import ifcopenshell.api.unit
import ifcopenshell.util.placement
import ifcopenshell.util.shape_builder
-
-# https://stackoverflow.com/a/9184560/9627415
-# Possible optimisation to linalg.norm?
-
-# from ifcopenshell.util.shape_builder import VectorType, SequenceOfVectors
-from itertools import cycle
-from collections import namedtuple
-from math import sin, cos, radians
+import numpy as np
f = ifcopenshell.api.project.create_file()
diff --git a/src/bonsai/test/bim/bootstrap.py b/src/bonsai/test/bim/bootstrap.py
index 6d997bdd7f..c799c74c00 100644
--- a/src/bonsai/test/bim/bootstrap.py
+++ b/src/bonsai/test/bim/bootstrap.py
@@ -19,17 +19,19 @@
import os
import re
-import bpy
-import pytest
import webbrowser
-import bonsai.bim.handler
-import bonsai.tool as tool
+
+import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
-from bonsai.bim.ifc import IfcStore
+import pytest
from mathutils import Vector
+import bonsai.bim.handler
+import bonsai.tool as tool
+from bonsai.bim.ifc import IfcStore
+
# Monkey-patch webbrowser opening since we want to test headlessly
webbrowser.open = lambda x: True
diff --git a/src/bonsai/test/bim/module/drawing/test_segment_clipping.py b/src/bonsai/test/bim/module/drawing/test_segment_clipping.py
index 2a30f6a957..2846a3f2b7 100644
--- a/src/bonsai/test/bim/module/drawing/test_segment_clipping.py
+++ b/src/bonsai/test/bim/module/drawing/test_segment_clipping.py
@@ -18,8 +18,8 @@
import pytest
from mathutils import Vector
-from bonsai.bim.module.drawing.helper import clip_segment
+from bonsai.bim.module.drawing.helper import clip_segment
BOUNDS = (10, 30, 10, 30, None, None)
diff --git a/src/bonsai/test/bim/stub.py b/src/bonsai/test/bim/stub.py
index a5c498f81e..969cf98cbe 100644
--- a/src/bonsai/test/bim/stub.py
+++ b/src/bonsai/test/bim/stub.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
-from typing import Union, Any, Optional
+from typing import Any, Optional, Union
class bSDDClientStub:
diff --git a/src/bonsai/test/bim/test_feature.py b/src/bonsai/test/bim/test_feature.py
index 036e0bf464..9df6bbf627 100644
--- a/src/bonsai/test/bim/test_feature.py
+++ b/src/bonsai/test/bim/test_feature.py
@@ -17,31 +17,34 @@
# along with Bonsai. If not, see .
from __future__ import annotations
+
import os
-import types
-import bpy
-import pytest
-import shutil
import pprint
+import shutil
import traceback
+import types
import webbrowser
-import numpy as np
-import test.bim.stub
+from collections.abc import Generator
+from inspect import signature
+from math import radians
+from pathlib import Path
+from typing import Any, Union
+
+import bpy
import ifcopenshell
import ifcopenshell.util.element
import ifcopenshell.util.representation
-import bonsai.tool as tool
-import bonsai.bim.handler
-from collections.abc import Generator
-from bonsai.bim.ifc import IfcStore
-from bonsai.tool.brick import BrickStore
-from bonsai.bim.module.model.data import AuthoringData
-from pytest_bdd import scenarios, given, when, then, parsers
-from inspect import signature
+import numpy as np
+import pytest
from mathutils import Vector
-from math import radians
-from pathlib import Path
-from typing import Union, Any
+from pytest_bdd import given, parsers, scenarios, then, when
+
+import bonsai.bim.handler
+import bonsai.tool as tool
+import test.bim.stub
+from bonsai.bim.ifc import IfcStore
+from bonsai.bim.module.model.data import AuthoringData
+from bonsai.tool.brick import BrickStore
scenarios("feature")
diff --git a/src/bonsai/test/core/bootstrap.py b/src/bonsai/test/core/bootstrap.py
index 837ce67b94..3cf7589420 100644
--- a/src/bonsai/test/core/bootstrap.py
+++ b/src/bonsai/test/core/bootstrap.py
@@ -16,11 +16,13 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import sys
import json
+import sys
+from typing import Any, Literal, Optional, Self, TypedDict
+
import pytest
+
import bonsai.core.tool
-from typing import Any, Optional, TypedDict, Literal, Self
@pytest.fixture
diff --git a/src/bonsai/test/core/test_aggregate.py b/src/bonsai/test/core/test_aggregate.py
index 157b1c3999..4e7babe13a 100644
--- a/src/bonsai/test/core/test_aggregate.py
+++ b/src/bonsai/test/core/test_aggregate.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.aggregate as subject
-from test.core.bootstrap import ifc, aggregate, collector
+from test.core.bootstrap import aggregate, collector, ifc
class TestEnableEditingAggregate:
diff --git a/src/bonsai/test/core/test_attribute.py b/src/bonsai/test/core/test_attribute.py
index aba74e1a4e..d62b832cd9 100644
--- a/src/bonsai/test/core/test_attribute.py
+++ b/src/bonsai/test/core/test_attribute.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.attribute as subject
-from test.core.bootstrap import ifc, blender, root, spatial
+from test.core.bootstrap import blender, ifc, root, spatial
class TestCopyAttributeToSelection:
diff --git a/src/bonsai/test/core/test_brick.py b/src/bonsai/test/core/test_brick.py
index 10a4a7cfd1..c40df06973 100644
--- a/src/bonsai/test/core/test_brick.py
+++ b/src/bonsai/test/core/test_brick.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.brick as subject
-from test.core.bootstrap import ifc, brick
+from test.core.bootstrap import brick, ifc
class TestLoadBrickProject:
diff --git a/src/bonsai/test/core/test_context.py b/src/bonsai/test/core/test_context.py
index 7388754765..2fd9e05834 100644
--- a/src/bonsai/test/core/test_context.py
+++ b/src/bonsai/test/core/test_context.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.context as subject
-from test.core.bootstrap import ifc, context
+from test.core.bootstrap import context, ifc
class TestAddContext:
diff --git a/src/bonsai/test/core/test_document.py b/src/bonsai/test/core/test_document.py
index 5baf3e709f..bd9f743a3d 100644
--- a/src/bonsai/test/core/test_document.py
+++ b/src/bonsai/test/core/test_document.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.document as subject
-from test.core.bootstrap import ifc, document
+from test.core.bootstrap import document, ifc
class TestLoadProjectDocuments:
diff --git a/src/bonsai/test/core/test_drawing.py b/src/bonsai/test/core/test_drawing.py
index 957bd79f79..a83f026ad3 100644
--- a/src/bonsai/test/core/test_drawing.py
+++ b/src/bonsai/test/core/test_drawing.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.drawing as subject
-from test.core.bootstrap import ifc, drawing, collector, geometry, blender, Prophecy
+from test.core.bootstrap import Prophecy, blender, collector, drawing, geometry, ifc
class TestEnableEditingText:
diff --git a/src/bonsai/test/core/test_geometry.py b/src/bonsai/test/core/test_geometry.py
index c9e3392808..21ccb09220 100644
--- a/src/bonsai/test/core/test_geometry.py
+++ b/src/bonsai/test/core/test_geometry.py
@@ -18,7 +18,7 @@
import bonsai.core.geometry as subject
import test.core.test_style
-from test.core.bootstrap import ifc, surveyor, geometry, style
+from test.core.bootstrap import geometry, ifc, style, surveyor
class TestEditObjectPlacement:
diff --git a/src/bonsai/test/core/test_georeference.py b/src/bonsai/test/core/test_georeference.py
index 6048ae5828..b9b330d816 100644
--- a/src/bonsai/test/core/test_georeference.py
+++ b/src/bonsai/test/core/test_georeference.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.georeference as subject
-from test.core.bootstrap import ifc, georeference
+from test.core.bootstrap import georeference, ifc
class TestAddGeoreferencing:
diff --git a/src/bonsai/test/core/test_material.py b/src/bonsai/test/core/test_material.py
index a8baee0c6c..a2cbf8c433 100644
--- a/src/bonsai/test/core/test_material.py
+++ b/src/bonsai/test/core/test_material.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.material as subject
-from test.core.bootstrap import ifc, material, style, spatial
+from test.core.bootstrap import ifc, material, spatial, style
class TestAddMaterial:
diff --git a/src/bonsai/test/core/test_misc.py b/src/bonsai/test/core/test_misc.py
index 950799a098..716607c0d8 100644
--- a/src/bonsai/test/core/test_misc.py
+++ b/src/bonsai/test/core/test_misc.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.misc as subject
-from test.core.bootstrap import misc, ifc
+from test.core.bootstrap import ifc, misc
class TestResizeToStorey:
diff --git a/src/bonsai/test/core/test_nest.py b/src/bonsai/test/core/test_nest.py
index d2eefc9109..36cbfafc60 100644
--- a/src/bonsai/test/core/test_nest.py
+++ b/src/bonsai/test/core/test_nest.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.nest as subject
-from test.core.bootstrap import ifc, nest, collector
+from test.core.bootstrap import collector, ifc, nest
class TestEnableEditingNeset:
diff --git a/src/bonsai/test/core/test_owner.py b/src/bonsai/test/core/test_owner.py
index b648030407..12d5bf3fa1 100644
--- a/src/bonsai/test/core/test_owner.py
+++ b/src/bonsai/test/core/test_owner.py
@@ -18,7 +18,7 @@
import bonsai.core.owner as subject
-from test.core.bootstrap import ifc, owner, Prophecy
+from test.core.bootstrap import Prophecy, ifc, owner
class TestAddPerson:
diff --git a/src/bonsai/test/core/test_project.py b/src/bonsai/test/core/test_project.py
index 7ecdc3c36c..462e1cabcd 100644
--- a/src/bonsai/test/core/test_project.py
+++ b/src/bonsai/test/core/test_project.py
@@ -18,7 +18,7 @@
import bonsai.core.project as subject
-from test.core.bootstrap import ifc, project, spatial, georeference
+from test.core.bootstrap import georeference, ifc, project, spatial
class TestCreateProject:
diff --git a/src/bonsai/test/core/test_root.py b/src/bonsai/test/core/test_root.py
index 7d922627ac..121236803d 100644
--- a/src/bonsai/test/core/test_root.py
+++ b/src/bonsai/test/core/test_root.py
@@ -18,7 +18,7 @@
import bonsai.core.root as subject
import test.core.test_geometry
-from test.core.bootstrap import ifc, collector, geometry, root
+from test.core.bootstrap import collector, geometry, ifc, root
class TestCopyClass:
diff --git a/src/bonsai/test/core/test_spatial.py b/src/bonsai/test/core/test_spatial.py
index a2b824fc91..0ae9695ea2 100644
--- a/src/bonsai/test/core/test_spatial.py
+++ b/src/bonsai/test/core/test_spatial.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.spatial as subject
-from test.core.bootstrap import ifc, collector, spatial
+from test.core.bootstrap import collector, ifc, spatial
class TestReferenceStructure:
diff --git a/src/bonsai/test/core/test_style.py b/src/bonsai/test/core/test_style.py
index ca8fc6b962..a2278cf008 100644
--- a/src/bonsai/test/core/test_style.py
+++ b/src/bonsai/test/core/test_style.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.style as subject
-from test.core.bootstrap import ifc, material, style, spatial
+from test.core.bootstrap import ifc, material, spatial, style
class TestAddStyle:
diff --git a/src/bonsai/test/core/test_system.py b/src/bonsai/test/core/test_system.py
index 1d19189c3b..0f7dd34b62 100644
--- a/src/bonsai/test/core/test_system.py
+++ b/src/bonsai/test/core/test_system.py
@@ -18,7 +18,7 @@
import bonsai.core.system as subject
-from test.core.bootstrap import ifc, system, spatial, group
+from test.core.bootstrap import group, ifc, spatial, system
class TestLoadSystems:
diff --git a/src/bonsai/test/core/test_type.py b/src/bonsai/test/core/test_type.py
index 68130c1fa8..ffdb571148 100644
--- a/src/bonsai/test/core/test_type.py
+++ b/src/bonsai/test/core/test_type.py
@@ -17,7 +17,7 @@
# along with Bonsai. If not, see .
import bonsai.core.type as subject
-from test.core.bootstrap import ifc, type, geometry
+from test.core.bootstrap import geometry, ifc, type
class TestAssignType:
diff --git a/src/bonsai/test/tool/test_aggregate.py b/src/bonsai/test/tool/test_aggregate.py
index 20c31cacdc..bab71b2c4a 100644
--- a/src/bonsai/test/tool/test_aggregate.py
+++ b/src/bonsai/test/tool/test_aggregate.py
@@ -24,10 +24,11 @@ import ifcopenshell.api.root
import ifcopenshell.api.spatial
import ifcopenshell.api.unit
import ifcopenshell.util.shape_builder
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.aggregate import Aggregate as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_blender.py b/src/bonsai/test/tool/test_blender.py
index 2db244abe1..43d04c7c19 100644
--- a/src/bonsai/test/tool/test_blender.py
+++ b/src/bonsai/test/tool/test_blender.py
@@ -16,14 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from typing import TYPE_CHECKING
+
import bpy
import ifcopenshell
+import pytest
+
import bonsai.core.tool
import bonsai.tool as tool
-import pytest
-from test.bim.bootstrap import NewFile
-from typing import TYPE_CHECKING
from bonsai.tool.blender import Blender as subject
+from test.bim.bootstrap import NewFile
if TYPE_CHECKING:
import bpy.stub_internal.rna_enums as rna_enums
diff --git a/src/bonsai/test/tool/test_brick.py b/src/bonsai/test/tool/test_brick.py
index 7470dd5954..c3d1f429e3 100644
--- a/src/bonsai/test/tool/test_brick.py
+++ b/src/bonsai/test/tool/test_brick.py
@@ -17,22 +17,24 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import brickschema
import brickschema.persistent
-from brickschema.namespaces import REF, A
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.aggregate
import ifcopenshell.api.root
import ifcopenshell.guid
+from brickschema.namespaces import REF, A
+from rdflib import Literal, Namespace, URIRef
+from rdflib.namespace import RDF
+
import bonsai.core.tool
import bonsai.tool as tool
-from rdflib.namespace import RDF
-from rdflib import Literal, URIRef, Namespace
-from test.bim.bootstrap import NewFile
from bonsai.tool.brick import Brick as subject
from bonsai.tool.brick import BrickStore
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_cad.py b/src/bonsai/test/tool/test_cad.py
index c02aaed8c6..2e84c71718 100644
--- a/src/bonsai/test/tool/test_cad.py
+++ b/src/bonsai/test/tool/test_cad.py
@@ -16,10 +16,11 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-from test.bim.bootstrap import NewFile
-from bonsai.tool.cad import Cad as subject
from mathutils import Vector
+from bonsai.tool.cad import Cad as subject
+from test.bim.bootstrap import NewFile
+
V = lambda *x: Vector([float(i) for i in x])
diff --git a/src/bonsai/test/tool/test_classification.py b/src/bonsai/test/tool/test_classification.py
index b584050e8d..7bfe2a44d7 100644
--- a/src/bonsai/test/tool/test_classification.py
+++ b/src/bonsai/test/tool/test_classification.py
@@ -17,14 +17,16 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
import ifcopenshell.util.classification
import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.classification import Classification as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_collector.py b/src/bonsai/test/tool/test_collector.py
index ba59aeef92..1ddd7e6381 100644
--- a/src/bonsai/test/tool/test_collector.py
+++ b/src/bonsai/test/tool/test_collector.py
@@ -24,6 +24,7 @@ import ifcopenshell.api.feature
import ifcopenshell.api.group
import ifcopenshell.api.spatial
import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.collector import Collector as subject
diff --git a/src/bonsai/test/tool/test_context.py b/src/bonsai/test/tool/test_context.py
index f4035ecd97..c131028e98 100644
--- a/src/bonsai/test/tool/test_context.py
+++ b/src/bonsai/test/tool/test_context.py
@@ -18,9 +18,10 @@
import bpy
import ifcopenshell
-import test.bim.bootstrap
+
import bonsai.core.tool
import bonsai.tool as tool
+import test.bim.bootstrap
from bonsai.tool.context import Context as subject
diff --git a/src/bonsai/test/tool/test_debug.py b/src/bonsai/test/tool/test_debug.py
index 24e875071b..7b434c4ee6 100644
--- a/src/bonsai/test/tool/test_debug.py
+++ b/src/bonsai/test/tool/test_debug.py
@@ -17,16 +17,18 @@
# along with Bonsai. If not, see .
import os
+from pathlib import Path
+
import bpy
import ifcopenshell
import ifcopenshell.api.style
import ifcopenshell.util.schema
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
-from bonsai.tool.debug import Debug as subject
from bonsai.bim.ifc import IfcStore
-from pathlib import Path
+from bonsai.tool.debug import Debug as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_document.py b/src/bonsai/test/tool/test_document.py
index 64ec2791b0..5afb25cd65 100644
--- a/src/bonsai/test/tool/test_document.py
+++ b/src/bonsai/test/tool/test_document.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import json
+
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.document
+
import bonsai.core.tool
import bonsai.tool as tool
-import json
-from test.bim.bootstrap import NewFile
from bonsai.tool.document import Document as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_drawing.py b/src/bonsai/test/tool/test_drawing.py
index 960e283084..f7beb94358 100644
--- a/src/bonsai/test/tool/test_drawing.py
+++ b/src/bonsai/test/tool/test_drawing.py
@@ -17,10 +17,10 @@
# along with Bonsai. If not, see .
import os
+import xml.etree.ElementTree as ET
from pathlib import Path
-import numpy as np
+
import bpy
-import mathutils
import ifcopenshell
import ifcopenshell.api.drawing
import ifcopenshell.api.group
@@ -28,14 +28,15 @@ import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.guid
import ifcopenshell.util.element
-import bonsai.core.tool
-import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
-from bonsai.tool.drawing import Drawing as subject
-from bonsai.bim.module.drawing.data import DecoratorData
+import mathutils
+import numpy as np
from mathutils import Vector
-import xml.etree.ElementTree as ET
+import bonsai.core.tool
+import bonsai.tool as tool
+from bonsai.bim.module.drawing.data import DecoratorData
+from bonsai.tool.drawing import Drawing as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_geometry.py b/src/bonsai/test/tool/test_geometry.py
index a2107da12f..34300f2405 100644
--- a/src/bonsai/test/tool/test_geometry.py
+++ b/src/bonsai/test/tool/test_geometry.py
@@ -16,19 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
-import numpy as np
+from typing import Union
+
+import bpy
import ifcopenshell
import ifcopenshell.api.geometry
import ifcopenshell.api.root
import ifcopenshell.api.type
+import numpy as np
+from mathutils import Vector
+
import bonsai.core.tool
import bonsai.tool as tool
-from mathutils import Vector
-from test.bim.bootstrap import NewFile
from bonsai.tool.geometry import Geometry as subject
-from typing import Union
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_georeference.py b/src/bonsai/test/tool/test_georeference.py
index a6292abde4..2d29f8429b 100644
--- a/src/bonsai/test/tool/test_georeference.py
+++ b/src/bonsai/test/tool/test_georeference.py
@@ -16,19 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
+
+import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.context
import ifcopenshell.api.georeference
import ifcopenshell.api.root
import ifcopenshell.api.unit
+from mathutils import Vector
+
import bonsai.core.tool
import bonsai.tool as tool
-from mathutils import Vector
-from test.bim.bootstrap import NewFile
from bonsai.tool.georeference import Georeference as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_ifc.py b/src/bonsai/test/tool/test_ifc.py
index 3cbd7bdc22..9542332d52 100644
--- a/src/bonsai/test/tool/test_ifc.py
+++ b/src/bonsai/test/tool/test_ifc.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import os
+import tempfile
+from pathlib import Path
+
import bpy
import ifcopenshell
-import test.bim.bootstrap
+import pytest
+
import bonsai.core.tool
import bonsai.tool as tool
-import pytest
-import tempfile
-import os
-from pathlib import Path
+import test.bim.bootstrap
from bonsai.tool.ifc import Ifc as subject
diff --git a/src/bonsai/test/tool/test_library.py b/src/bonsai/test/tool/test_library.py
index 64d73f918b..b0bbbf3990 100644
--- a/src/bonsai/test/tool/test_library.py
+++ b/src/bonsai/test/tool/test_library.py
@@ -18,10 +18,11 @@
import bpy
import ifcopenshell
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.library import Library as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_loader.py b/src/bonsai/test/tool/test_loader.py
index b128988aba..8817d3d92b 100644
--- a/src/bonsai/test/tool/test_loader.py
+++ b/src/bonsai/test/tool/test_loader.py
@@ -16,21 +16,23 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
-import bmesh
import json
+from pathlib import Path
+
+import bmesh
+import bpy
import ifcopenshell
import ifcopenshell.api.library
import ifcopenshell.api.style
import ifcopenshell.util.schema
-import bonsai.core.tool
-import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
-from bonsai.tool.loader import Loader as subject
import numpy as np
from ifcopenshell.util.shape_builder import ShapeBuilder
from mathutils import Vector
-from pathlib import Path
+
+import bonsai.core.tool
+import bonsai.tool as tool
+from bonsai.tool.loader import Loader as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
@@ -188,8 +190,8 @@ class TestCreatingStyles(NewFile):
def get_png_raster_code():
import base64
- import zlib
import struct
+ import zlib
# https://blender.stackexchange.com/questions/62072/does-blender-have-a-method-to-a-get-png-formatted-bytearray-for-an-image-via-pyt
width = 2
diff --git a/src/bonsai/test/tool/test_material.py b/src/bonsai/test/tool/test_material.py
index ef423afb4c..870417a254 100644
--- a/src/bonsai/test/tool/test_material.py
+++ b/src/bonsai/test/tool/test_material.py
@@ -23,10 +23,11 @@ import ifcopenshell.api.material
import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.api.style
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.material import Material as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_misc.py b/src/bonsai/test/tool/test_misc.py
index 883755888a..c3d3cec2fe 100644
--- a/src/bonsai/test/tool/test_misc.py
+++ b/src/bonsai/test/tool/test_misc.py
@@ -16,16 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import bpy
import math
-import numpy
+
+import bpy
import ifcopenshell
import ifcopenshell.api.aggregate
import ifcopenshell.api.spatial
import ifcopenshell.api.unit
-import test.bim.bootstrap
+import numpy
+
import bonsai.core.tool
import bonsai.tool as tool
+import test.bim.bootstrap
from bonsai.tool.misc import Misc as subject
diff --git a/src/bonsai/test/tool/test_model.py b/src/bonsai/test/tool/test_model.py
index d69b2a532e..756268cbee 100644
--- a/src/bonsai/test/tool/test_model.py
+++ b/src/bonsai/test/tool/test_model.py
@@ -16,6 +16,9 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+import json
+from typing import Any
+
import bpy
import ifcopenshell
import ifcopenshell.api.geometry
@@ -26,14 +29,13 @@ import ifcopenshell.api.type
import ifcopenshell.util.element
import ifcopenshell.util.representation
import ifcopenshell.util.shape_builder
+import numpy as np
+from ifcopenshell.util.shape_builder import ShapeBuilder, V
+
import bonsai.core.tool
import bonsai.tool as tool
-import numpy as np
-import json
-from typing import Any
-from test.bim.bootstrap import NewFile
from bonsai.tool.model import Model as subject
-from ifcopenshell.util.shape_builder import V, ShapeBuilder
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_nest.py b/src/bonsai/test/tool/test_nest.py
index 257bbcee88..14acfa18bc 100644
--- a/src/bonsai/test/tool/test_nest.py
+++ b/src/bonsai/test/tool/test_nest.py
@@ -20,10 +20,11 @@ import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.spatial
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.nest import Nest as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_owner.py b/src/bonsai/test/tool/test_owner.py
index 84ca456e96..bc4ed2d533 100644
--- a/src/bonsai/test/tool/test_owner.py
+++ b/src/bonsai/test/tool/test_owner.py
@@ -16,15 +16,17 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from functools import cache
+from typing import Any
+
import bpy
import ifcopenshell
import ifcopenshell.api.owner
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.owner import Owner as subject
-from typing import Any
-from functools import cache
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_patch.py b/src/bonsai/test/tool/test_patch.py
index 8fce8974a9..955908f284 100644
--- a/src/bonsai/test/tool/test_patch.py
+++ b/src/bonsai/test/tool/test_patch.py
@@ -17,12 +17,14 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.patch import Patch as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_polyline.py b/src/bonsai/test/tool/test_polyline.py
index 9dd1e8f41c..b55c6b52a6 100644
--- a/src/bonsai/test/tool/test_polyline.py
+++ b/src/bonsai/test/tool/test_polyline.py
@@ -21,10 +21,11 @@ import ifcopenshell
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.unit
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.polyline import Polyline as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_project.py b/src/bonsai/test/tool/test_project.py
index 5751660d83..06c3f8ec25 100644
--- a/src/bonsai/test/tool/test_project.py
+++ b/src/bonsai/test/tool/test_project.py
@@ -17,20 +17,22 @@
# along with Bonsai. If not, see .
import contextlib
+import tempfile
+from pathlib import Path
+
import bpy
import ifcopenshell
import ifcopenshell.api.context
import ifcopenshell.api.document
import ifcopenshell.api.root
import ifcopenshell.api.unit
-import bonsai.core.tool
-import bonsai.tool as tool
-import tempfile
import ifcpatch
from ifcpatch.recipes import Ifc2Sql
-from test.bim.bootstrap import NewFile
+
+import bonsai.core.tool
+import bonsai.tool as tool
from bonsai.tool.project import Project as subject
-from pathlib import Path
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_pset.py b/src/bonsai/test/tool/test_pset.py
index 9aa8e70289..9b01105748 100644
--- a/src/bonsai/test/tool/test_pset.py
+++ b/src/bonsai/test/tool/test_pset.py
@@ -20,6 +20,7 @@ import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.pset import Pset as subject
diff --git a/src/bonsai/test/tool/test_pset_template.py b/src/bonsai/test/tool/test_pset_template.py
index a104f8baff..d2aa408caa 100644
--- a/src/bonsai/test/tool/test_pset_template.py
+++ b/src/bonsai/test/tool/test_pset_template.py
@@ -20,6 +20,7 @@ import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.pset_template import PsetTemplate as subject
diff --git a/src/bonsai/test/tool/test_qto.py b/src/bonsai/test/tool/test_qto.py
index 2b06cbb3c9..9ec7dc4efd 100644
--- a/src/bonsai/test/tool/test_qto.py
+++ b/src/bonsai/test/tool/test_qto.py
@@ -25,11 +25,12 @@ import ifcopenshell.api.pset
import ifcopenshell.api.root
import ifcopenshell.api.unit
import ifcopenshell.util.pset
-import test.bim.bootstrap
-import bonsai.core.tool
-import bonsai.core.root
-import bonsai.tool as tool
+
import bonsai.bim.import_ifc as import_ifc
+import bonsai.core.root
+import bonsai.core.tool
+import bonsai.tool as tool
+import test.bim.bootstrap
from bonsai.tool.qto import Qto as subject
diff --git a/src/bonsai/test/tool/test_root.py b/src/bonsai/test/tool/test_root.py
index b27b556a03..39b853d63c 100644
--- a/src/bonsai/test/tool/test_root.py
+++ b/src/bonsai/test/tool/test_root.py
@@ -22,10 +22,11 @@ import ifcopenshell.api
import ifcopenshell.api.feature
import ifcopenshell.api.type
import ifcopenshell.util.element
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.root import Root as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_sequence.py b/src/bonsai/test/tool/test_sequence.py
index 7dab2671b9..af915f0273 100644
--- a/src/bonsai/test/tool/test_sequence.py
+++ b/src/bonsai/test/tool/test_sequence.py
@@ -17,15 +17,17 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.pset
import ifcopenshell.api.root
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.sequence import Sequence as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_spatial.py b/src/bonsai/test/tool/test_spatial.py
index fd9316912a..299e615f2f 100644
--- a/src/bonsai/test/tool/test_spatial.py
+++ b/src/bonsai/test/tool/test_spatial.py
@@ -16,17 +16,18 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
-import numpy as np
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.root
import ifcopenshell.api.spatial
+import numpy as np
+from mathutils import Matrix
+
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.spatial import Spatial as subject
from test.bim.bootstrap import NewFile
-from mathutils import Matrix
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_style.py b/src/bonsai/test/tool/test_style.py
index 23c70461ee..743ac317ec 100644
--- a/src/bonsai/test/tool/test_style.py
+++ b/src/bonsai/test/tool/test_style.py
@@ -17,17 +17,19 @@
# along with Bonsai. If not, see .
import os
+
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.root
import ifcopenshell.util.representation
import pytest
+from ifcopenshell.util.shape_builder import ShapeBuilder
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.style import Style as subject
-from ifcopenshell.util.shape_builder import ShapeBuilder
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_surveyor.py b/src/bonsai/test/tool/test_surveyor.py
index 0228cd9271..782b171a6d 100644
--- a/src/bonsai/test/tool/test_surveyor.py
+++ b/src/bonsai/test/tool/test_surveyor.py
@@ -17,16 +17,16 @@
# along with Bonsai. If not, see .
import bpy
-import numpy as np
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.root
import ifcopenshell.api.unit
import ifcopenshell.util.geolocation
+import numpy as np
-import test.bim.bootstrap
import bonsai.core.tool
import bonsai.tool as tool
+import test.bim.bootstrap
from bonsai.tool import Surveyor as subject
diff --git a/src/bonsai/test/tool/test_system.py b/src/bonsai/test/tool/test_system.py
index 1a18811c37..3067ccfa09 100644
--- a/src/bonsai/test/tool/test_system.py
+++ b/src/bonsai/test/tool/test_system.py
@@ -16,19 +16,21 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see .
+from math import pi
+
import bpy
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.api.root
import ifcopenshell.api.system
import ifcopenshell.util.unit
+import numpy as np
+from mathutils import Euler, Matrix, Vector
+
import bonsai.core.tool
import bonsai.tool as tool
-import numpy as np
-from test.bim.bootstrap import NewFile
from bonsai.tool.system import System as subject
-from mathutils import Euler, Vector, Matrix
-from math import pi
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_type.py b/src/bonsai/test/tool/test_type.py
index 5bbf3c4c42..0d91b1f4f0 100644
--- a/src/bonsai/test/tool/test_type.py
+++ b/src/bonsai/test/tool/test_type.py
@@ -20,10 +20,11 @@ import bpy
import ifcopenshell
import ifcopenshell.api.root
import ifcopenshell.api.type
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.type import Type as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/bonsai/test/tool/test_unit.py b/src/bonsai/test/tool/test_unit.py
index 190a8fa302..6e0e756b67 100644
--- a/src/bonsai/test/tool/test_unit.py
+++ b/src/bonsai/test/tool/test_unit.py
@@ -21,10 +21,11 @@ import ifcopenshell
import ifcopenshell.api.project
import ifcopenshell.api.root
import ifcopenshell.api.unit
+
import bonsai.core.tool
import bonsai.tool as tool
-from test.bim.bootstrap import NewFile
from bonsai.tool.unit import Unit as subject
+from test.bim.bootstrap import NewFile
class TestImplementsTool(NewFile):
diff --git a/src/ifc4d/__main__.py b/src/ifc4d/__main__.py
index b876db860c..86c36394e6 100644
--- a/src/ifc4d/__main__.py
+++ b/src/ifc4d/__main__.py
@@ -1,6 +1,7 @@
import argparse
import ifcopenshell
+
from ifc4d.msp2ifc import MSP2Ifc
from ifc4d.p6xer2ifc import P6XER2Ifc
from ifc4d.p62ifc import P62Ifc
diff --git a/src/ifc4d/ifc4d/p62ifc.py b/src/ifc4d/ifc4d/p62ifc.py
index ed2781d5cc..7d4881161a 100644
--- a/src/ifc4d/ifc4d/p62ifc.py
+++ b/src/ifc4d/ifc4d/p62ifc.py
@@ -19,7 +19,6 @@
import datetime
import xml.etree.ElementTree as ET
-
from .common import ScheduleIfcGenerator
diff --git a/src/ifc4d/ifc4d/pp2ifc.py b/src/ifc4d/ifc4d/pp2ifc.py
index ce76b60226..b2be0c753b 100644
--- a/src/ifc4d/ifc4d/pp2ifc.py
+++ b/src/ifc4d/ifc4d/pp2ifc.py
@@ -12,7 +12,6 @@ from collections import defaultdict
from datetime import timedelta
from typing import Any
-
from .common import Activity, Calendar, ScheduleIfcGenerator, WBSEntry
from .wpattern import AstaCalendarWorkPattern
diff --git a/src/ifc5d/test/test_csv2ifc.py b/src/ifc5d/test/test_csv2ifc.py
index fc31e9d86e..c14a795da3 100644
--- a/src/ifc5d/test/test_csv2ifc.py
+++ b/src/ifc5d/test/test_csv2ifc.py
@@ -20,14 +20,15 @@ import csv
import tempfile
from pathlib import Path
-import ifc5d.csv2ifc
-import ifc5d.ifc5Dspreadsheet
import ifcopenshell
import ifcopenshell.api.root
import ifcopenshell.api.unit
import ifcopenshell.util.cost
import pytest
+import ifc5d.csv2ifc
+import ifc5d.ifc5Dspreadsheet
+
class TestCsv2Ifc:
@staticmethod
diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_as_offset_curve.py b/src/ifcopenshell-python/test/api/alignment/test_create_as_offset_curve.py
index 0b431163bc..ac763e6af1 100644
--- a/src/ifcopenshell-python/test/api/alignment/test_create_as_offset_curve.py
+++ b/src/ifcopenshell-python/test/api/alignment/test_create_as_offset_curve.py
@@ -18,7 +18,6 @@
import math
-
import ifcopenshell.api.alignment
import ifcopenshell.api.unit
import ifcopenshell.util
diff --git a/src/ifcopenshell-python/test/api/alignment/test_create_layout_segment.py b/src/ifcopenshell-python/test/api/alignment/test_create_layout_segment.py
index ad654ac97d..e1b0978e1a 100644
--- a/src/ifcopenshell-python/test/api/alignment/test_create_layout_segment.py
+++ b/src/ifcopenshell-python/test/api/alignment/test_create_layout_segment.py
@@ -18,7 +18,6 @@
import math
-
import ifcopenshell.api.alignment
import ifcopenshell.api.context
import ifcopenshell.api.unit
diff --git a/src/ifcopenshell-python/test/test_stream.py b/src/ifcopenshell-python/test/test_stream.py
index 20fe67e5ec..754fcc4527 100644
--- a/src/ifcopenshell-python/test/test_stream.py
+++ b/src/ifcopenshell-python/test/test_stream.py
@@ -18,7 +18,6 @@
from pathlib import Path
-
import ifcopenshell
TEST_FILE = Path(__file__).parent / "files" / "basic.ifc"
diff --git a/src/ifcopenshell-python/test/util/test_file.py b/src/ifcopenshell-python/test/util/test_file.py
index a1ee333b6b..18fc8ef07c 100644
--- a/src/ifcopenshell-python/test/util/test_file.py
+++ b/src/ifcopenshell-python/test/util/test_file.py
@@ -20,7 +20,6 @@ import tempfile
import zipfile
from pathlib import Path
-
import ifcopenshell.util.file as subject
import test.bootstrap
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/extrude.py b/src/ifcsverchok/nodes/ifc/shape_builder/extrude.py
index 44fd47cebc..1725f37aa2 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/extrude.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/extrude.py
@@ -20,14 +20,13 @@ from typing import TYPE_CHECKING, Literal
import bpy
import ifcopenshell
+import ifcsverchok.helper
+import ifcsverchok.helper as helper
from ifcopenshell.util.shape_builder import ShapeBuilder
from sverchok.core.sockets import SvVerticesSocket
from sverchok.data_structure import updateNode
from sverchok.node_tree import SverchCustomTreeNode
-import ifcsverchok.helper
-import ifcsverchok.helper as helper
-
class SvIfcSbExtrude(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore):
bl_idname = "SvIfcSbExtrude"
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/mesh.py b/src/ifcsverchok/nodes/ifc/shape_builder/mesh.py
index ec2609613e..8b740bef08 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/mesh.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/mesh.py
@@ -17,12 +17,11 @@
# along with IfcSverchok. If not, see .
import bpy
+import ifcsverchok.helper as helper
import sverchok.core.sockets
from ifcsverchok.nodes.ifc.shape_builder.representation import ShapeBuilder
from sverchok.node_tree import SverchCustomTreeNode
-import ifcsverchok.helper as helper
-
class SvSbMesh(bpy.types.Node, SverchCustomTreeNode, helper.SvIfcCore):
bl_idname = "SvSbMesh"
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/polyline.py b/src/ifcsverchok/nodes/ifc/shape_builder/polyline.py
index 59e6c94804..2f27a3834f 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/polyline.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/polyline.py
@@ -17,12 +17,11 @@
# along with IfcSverchok. If not, see .
import bpy
+import ifcsverchok.helper as helper
import sverchok.core.sockets
from ifcsverchok.nodes.ifc.shape_builder.representation import ShapeBuilder
from sverchok.node_tree import SverchCustomTreeNode
-import ifcsverchok.helper as helper
-
class SvSbPolyline(bpy.types.Node, SverchCustomTreeNode, helper.SvIfcCore):
bl_idname = "SvSbPolyline"
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/rectangle.py b/src/ifcsverchok/nodes/ifc/shape_builder/rectangle.py
index 8b9b60c81d..35e73db71f 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/rectangle.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/rectangle.py
@@ -17,11 +17,10 @@
# along with IfcSverchok. If not, see .
import bpy
-from ifcopenshell.util.shape_builder import ShapeBuilder
-from sverchok.node_tree import SverchCustomTreeNode
-
import ifcsverchok.helper
import ifcsverchok.helper as helper
+from ifcopenshell.util.shape_builder import ShapeBuilder
+from sverchok.node_tree import SverchCustomTreeNode
class SvIfcSbRectangle(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore):
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/representation.py b/src/ifcsverchok/nodes/ifc/shape_builder/representation.py
index c1e8a9eb54..7fefe038dc 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/representation.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/representation.py
@@ -19,11 +19,10 @@
import bpy
import ifcopenshell
import ifcopenshell.util.representation
-from ifcopenshell.util.shape_builder import ShapeBuilder
-from sverchok.node_tree import SverchCustomTreeNode
-
import ifcsverchok.helper
import ifcsverchok.helper as helper
+from ifcopenshell.util.shape_builder import ShapeBuilder
+from sverchok.node_tree import SverchCustomTreeNode
class SvIfcSbRepresentation(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore):
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/shape_output.py b/src/ifcsverchok/nodes/ifc/shape_builder/shape_output.py
index 2968c5e4ed..d8585ba7a2 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/shape_output.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/shape_output.py
@@ -21,11 +21,10 @@ import ifcopenshell
import ifcopenshell.geom
import ifcopenshell.ifcopenshell_wrapper as W
import ifcopenshell.util.shape
+import ifcsverchok.helper as helper
import sverchok.core.sockets
from sverchok.node_tree import SverchCustomTreeNode
-import ifcsverchok.helper as helper
-
class SvSbShapeOutput(bpy.types.Node, SverchCustomTreeNode, helper.SvIfcCore):
"""
diff --git a/src/ifcsverchok/nodes/ifc/shape_builder/test.py b/src/ifcsverchok/nodes/ifc/shape_builder/test.py
index e2fc702721..4b8cd2ba04 100644
--- a/src/ifcsverchok/nodes/ifc/shape_builder/test.py
+++ b/src/ifcsverchok/nodes/ifc/shape_builder/test.py
@@ -17,10 +17,9 @@
# along with IfcSverchok. If not, see .
import bpy
-from sverchok.node_tree import SverchCustomTreeNode
-
import ifcsverchok.helper
import ifcsverchok.helper as helper
+from sverchok.node_tree import SverchCustomTreeNode
class SvIfcSbTest(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore):
diff --git a/src/ifctester/test/test_facet.py b/src/ifctester/test/test_facet.py
index a8ace9622a..3c5d91a6e4 100644
--- a/src/ifctester/test/test_facet.py
+++ b/src/ifctester/test/test_facet.py
@@ -33,6 +33,7 @@ import ifcopenshell.api.type
import ifcopenshell.api.unit
import ifcopenshell.guid
import ifcopenshell.util.pset
+
import ifctester.facet
import ifctester.ids
from ifctester.facet import (
diff --git a/src/ifctester/webapp/public/worker/api.py b/src/ifctester/webapp/public/worker/api.py
index ebf4bbe01a..c7d3a90662 100644
--- a/src/ifctester/webapp/public/worker/api.py
+++ b/src/ifctester/webapp/public/worker/api.py
@@ -1,9 +1,10 @@
import ifcopenshell
import ifcopenshell.util.attribute
import ifcopenshell.util.pset
-from ifctester.ids import Ids, IdsXmlValidationError, get_schema
from xmlschema.validators.exceptions import XMLSchemaValidationError
+from ifctester.ids import Ids, IdsXmlValidationError, get_schema
+
# https://github.com/buildingSMART/IDS/blob/9914d568c7ac037acd97e58a0d16e9f93c3e3416/Schema/ids.xsd#L232
ifc_schemas = ["IFC2X3", "IFC4", "IFC4X3_ADD2"]