From a941c664e10a4a2ab84c724c8d060c49a667a942 Mon Sep 17 00:00:00 2001 From: Stephen Boddy Date: Fri, 10 Jul 2026 21:27:10 +0100 Subject: [PATCH] Fix ty type-check errors: missing imports and unresolved names - gizmos.py: TYPE_CHECKING-guard `import bmesh` for the string-literal annotation in build_schematic_mesh; suppress the still-unresolved gizmo_textures import in TexturedQuadGizmoMixin (WIP dependency, not dead code). - model/__init__.py: register the `decorator` submodule, which unregister() already calls (would have raised NameError on addon disable). - mep.py / tool/model.py: add explicit imports for bonsai.core.geometry and bonsai.core.model, previously only reachable by accident of import order. - Test files: add explicit ifcopenshell.api.pset / ifcopenshell.util.element submodule imports used but not imported. (cherry picked from commit 4fb8af2278c15618893303774721d6710fa0faba) --- .../bonsai/bim/module/drawing/gizmos.py | 21 ++++++++++++++++--- .../bonsai/bim/module/model/__init__.py | 1 + src/bonsai/bonsai/bim/module/model/mep.py | 1 + src/bonsai/bonsai/tool/model.py | 1 + .../module/model/test_array_batch_recut.py | 1 + .../model/test_array_duplicate_batched.py | 2 ++ src/bonsai/test/modal/test_modal.py | 1 + src/bonsai/test/tool/test_model.py | 1 + 8 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/drawing/gizmos.py b/src/bonsai/bonsai/bim/module/drawing/gizmos.py index 99db87d08d..53a4c8328e 100644 --- a/src/bonsai/bonsai/bim/module/drawing/gizmos.py +++ b/src/bonsai/bonsai/bim/module/drawing/gizmos.py @@ -82,7 +82,15 @@ import math from collections.abc import Callable, Iterator from dataclasses import dataclass from enum import Enum -from typing import Any, ClassVar, Literal, Optional, Protocol, runtime_checkable +from typing import ( + TYPE_CHECKING, + Any, + ClassVar, + Literal, + Optional, + Protocol, + runtime_checkable, +) import blf import bpy @@ -105,6 +113,9 @@ from mathutils.kdtree import KDTree import bonsai.tool as tool from bonsai.bim.module.drawing.shaders import ExtrusionGuidesShader +if TYPE_CHECKING: + import bmesh + SNAP_POINT_SIZE = 10.0 SNAP_POINT_COLOR = (1.0, 0.5, 0.0, 1.0) SNAP_MAX_RADIUS = 50.0 @@ -2035,7 +2046,9 @@ class TexturedQuadGizmoMixin(StaticTrisGizmoMixin): def setup(self) -> None: super().setup() - from bonsai.bim.module.drawing import gizmo_textures + from bonsai.bim.module.drawing import ( + gizmo_textures, # ty: ignore[unresolved-import] + ) self._quad_batch = batch_for_shader( gizmo_textures.get_shader(), @@ -2044,7 +2057,9 @@ class TexturedQuadGizmoMixin(StaticTrisGizmoMixin): ) def draw(self, context: bpy.types.Context) -> None: - from bonsai.bim.module.drawing import gizmo_textures + from bonsai.bim.module.drawing import ( + gizmo_textures, # ty: ignore[unresolved-import] + ) texture = gizmo_textures.get_icon_texture(self.icon_name) if texture is None: diff --git a/src/bonsai/bonsai/bim/module/model/__init__.py b/src/bonsai/bonsai/bim/module/model/__init__.py index 3bfb1accea..d59cd6d260 100644 --- a/src/bonsai/bonsai/bim/module/model/__init__.py +++ b/src/bonsai/bonsai/bim/module/model/__init__.py @@ -27,6 +27,7 @@ import bonsai.tool as tool from . import ( array, covering, + decorator, door, external, grid, diff --git a/src/bonsai/bonsai/bim/module/model/mep.py b/src/bonsai/bonsai/bim/module/model/mep.py index 723ac75e46..2a906d4ec4 100644 --- a/src/bonsai/bonsai/bim/module/model/mep.py +++ b/src/bonsai/bonsai/bim/module/model/mep.py @@ -38,6 +38,7 @@ import numpy as np from ifcopenshell.util.shape_builder import ShapeBuilder 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 diff --git a/src/bonsai/bonsai/tool/model.py b/src/bonsai/bonsai/tool/model.py index ecfc23e0f6..f54633c3cc 100644 --- a/src/bonsai/bonsai/tool/model.py +++ b/src/bonsai/bonsai/tool/model.py @@ -59,6 +59,7 @@ from ifcopenshell.util.shape_builder import ShapeBuilder, np_to_3d from mathutils import Matrix, Vector import bonsai.core.geometry +import bonsai.core.model import bonsai.core.tool import bonsai.tool as tool from bonsai.bim import import_ifc diff --git a/src/bonsai/test/bim/module/model/test_array_batch_recut.py b/src/bonsai/test/bim/module/model/test_array_batch_recut.py index d4b1ff2bf6..fc257884f8 100644 --- a/src/bonsai/test/bim/module/model/test_array_batch_recut.py +++ b/src/bonsai/test/bim/module/model/test_array_batch_recut.py @@ -35,6 +35,7 @@ from unittest.mock import Mock, patch import bpy import ifcopenshell +import ifcopenshell.api.pset import pytest import bonsai.tool as tool diff --git a/src/bonsai/test/bim/module/model/test_array_duplicate_batched.py b/src/bonsai/test/bim/module/model/test_array_duplicate_batched.py index d8dc931336..3cf23dbd24 100644 --- a/src/bonsai/test/bim/module/model/test_array_duplicate_batched.py +++ b/src/bonsai/test/bim/module/model/test_array_duplicate_batched.py @@ -37,6 +37,8 @@ from unittest.mock import patch import bpy import ifcopenshell +import ifcopenshell.api.pset +import ifcopenshell.util.element import pytest import bonsai.tool as tool diff --git a/src/bonsai/test/modal/test_modal.py b/src/bonsai/test/modal/test_modal.py index 1ea6b1dbd5..1dd7055033 100644 --- a/src/bonsai/test/modal/test_modal.py +++ b/src/bonsai/test/modal/test_modal.py @@ -24,6 +24,7 @@ import time import bpy import ifcopenshell +import ifcopenshell.util.element import pytest from bonsai import tool as tool diff --git a/src/bonsai/test/tool/test_model.py b/src/bonsai/test/tool/test_model.py index e1b4601663..34ea117da0 100644 --- a/src/bonsai/test/tool/test_model.py +++ b/src/bonsai/test/tool/test_model.py @@ -23,6 +23,7 @@ import bpy import ifcopenshell import ifcopenshell.api.geometry import ifcopenshell.api.material +import ifcopenshell.api.pset import ifcopenshell.api.root import ifcopenshell.api.style import ifcopenshell.api.type