From 17177d5f1c8f61dd4e2d818d4ce110a018e4fa0d Mon Sep 17 00:00:00 2001 From: Stephen Boddy Date: Fri, 10 Jul 2026 21:45:31 +0100 Subject: [PATCH] Fix remaining ty type-check errors in tool.py, product.py, railing.py - tool.py: drop the `-> int` annotation on the Parametric interface's get_geom_generation stub; its `pass` body implicitly returns None, which ty can't reconcile with the runtime @interface/@abstractmethod rewriting it never sees statically. Matches the file's other stubs (-> None). - railing.py: qualify the "BIMRailingProperties" string annotations as "prop.BIMRailingProperties" on the two functions using it, since the bare name was never imported into this module's namespace. - product.py: suppress ty's missing-argument errors on copy_z_rotation_to_selected's Surveyor.get_z_rotation/set_z_rotation calls with targeted ty: ignore comments. The function is unused and its two dependencies were never implemented on the concrete Surveyor tool; left as-is rather than deleted or implemented. (cherry picked from commit 9f848a73e182912ef3ed34ea696e3660ff84485c) --- src/bonsai/bonsai/bim/module/model/railing.py | 6 ++++-- src/bonsai/bonsai/core/product.py | 7 ++++--- src/bonsai/bonsai/core/tool.py | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/railing.py b/src/bonsai/bonsai/bim/module/model/railing.py index 825cc339ac..353ade10d2 100644 --- a/src/bonsai/bonsai/bim/module/model/railing.py +++ b/src/bonsai/bonsai/bim/module/model/railing.py @@ -138,7 +138,7 @@ def update_bbim_railing_pset(element: ifcopenshell.entity_instance, railing_data def generate_wall_mounted_handrail_preview( obj: bpy.types.Object, - props: "BIMRailingProperties", + props: "prop.BIMRailingProperties", path_data: dict[str, Any], si_conversion: float, ) -> None: @@ -860,7 +860,9 @@ class GizmoRailingSchematic(bpy.types.GizmoGroup, gizmo.BaseSchematicGizmoGroup) terminal_world = anchor + billboard_rot @ view_rotation @ terminal_local self.terminal_gizmo.matrix_basis = gizmo.billboarded_at(terminal_world, billboard_rot, 0.18) - def update_editing_gizmos(self, context: bpy.types.Context, mw: "Matrix", props: "BIMRailingProperties") -> None: + def update_editing_gizmos( + self, context: bpy.types.Context, mw: "Matrix", props: "prop.BIMRailingProperties" + ) -> None: """Hide the pen gizmo while polyline path-edit is active; reposition the cycle icon. The base class shows the pen gizmo whenever ``is_editing`` is False, diff --git a/src/bonsai/bonsai/core/product.py b/src/bonsai/bonsai/core/product.py index 4eaddc833d..ae6d5e8a21 100644 --- a/src/bonsai/bonsai/core/product.py +++ b/src/bonsai/bonsai/core/product.py @@ -50,14 +50,15 @@ def copy_z_rotation_to_selected( flip: bool = False, ) -> int: """Apply ``active``'s Z-Euler rotation to each target.""" - source_z = surveyor.get_z_rotation(active) + source_z = surveyor.get_z_rotation(active) # ty: ignore[missing-argument] if flip: source_z += math.pi rotated = 0 for obj in targets: - if abs(_z_rotation_diff(surveyor.get_z_rotation(obj), source_z)) < Z_ROTATION_ALIGNMENT_TOLERANCE: + target_z = surveyor.get_z_rotation(obj) # ty: ignore[missing-argument] + if abs(_z_rotation_diff(target_z, source_z)) < Z_ROTATION_ALIGNMENT_TOLERANCE: continue - surveyor.set_z_rotation(obj, source_z) + surveyor.set_z_rotation(obj, source_z) # ty: ignore[missing-argument] rotated += 1 if ifc.get_entity(obj) is not None: bonsai.core.geometry.edit_object_placement(ifc, geometry, surveyor, obj=obj) diff --git a/src/bonsai/bonsai/core/tool.py b/src/bonsai/bonsai/core/tool.py index 598b1557e4..3b64145542 100644 --- a/src/bonsai/bonsai/core/tool.py +++ b/src/bonsai/bonsai/core/tool.py @@ -804,7 +804,7 @@ class Profile: @interface class Parametric: - def get_geom_generation(cls) -> int: pass + def get_geom_generation(cls): pass def refresh_post_commit(cls, operator) -> None: pass