From 7cde9629f882052870377b8e253a32d2576597b7 Mon Sep 17 00:00:00 2001 From: Andrej Date: Wed, 28 May 2025 17:09:05 +0500 Subject: [PATCH] Fix Ruff UP034 (extraneous-parentheses) https://docs.astral.sh/ruff/rules/extraneous-parentheses/ --- src/bcf/bcf/v2/bcfxml.py | 2 +- src/bonsai/bonsai/bim/module/bcf/operator.py | 2 +- .../bonsai/bim/module/geometry/operator.py | 8 ++++---- src/bonsai/bonsai/bim/module/project/prop.py | 2 +- src/bonsai/bonsai/bim/module/qto/helper.py | 4 ++-- .../module/structural/load_decoration_data.py | 4 ++-- src/bonsai/bonsai/tool/cad.py | 4 ++-- src/bonsai/bonsai/tool/drawing.py | 2 +- src/bonsai/bonsai/tool/misc.py | 2 +- src/bonsai/bonsai/tool/root.py | 2 +- src/bonsai/scripts/dxf2ifc.py | 2 +- src/bonsai/scripts/generate_demo_library.py | 2 +- src/bonsai/test/bim/test_feature.py | 8 ++++---- src/bonsai/test/tool/test_loader.py | 8 ++++---- src/bonsai/test/tool/test_model.py | 20 +++++++++---------- .../api/alignment/add_zero_length_segment.py | 2 +- .../api/geometry/add_slab_representation.py | 2 +- .../api/geometry/add_wall_representation.py | 2 +- .../api/sequence/unassign_lag_time.py | 2 +- .../ifcopenshell/ifcopenshell_wrapper.pyi | 2 +- .../ifcopenshell/util/sequence.py | 2 +- .../recipes/FixArchiCADToRevitSpaces.py | 2 +- .../ifcpatch/recipes/MergeProjects.py | 6 ++---- 23 files changed, 45 insertions(+), 47 deletions(-) diff --git a/src/bcf/bcf/v2/bcfxml.py b/src/bcf/bcf/v2/bcfxml.py index d94552b41f..039f1cbe09 100644 --- a/src/bcf/bcf/v2/bcfxml.py +++ b/src/bcf/bcf/v2/bcfxml.py @@ -100,7 +100,7 @@ class BcfXml: extensions = mdl_extensions.Extensions() xs = "{http://www.w3.org/2001/XMLSchema}" - root = etree.parse(io.BytesIO((self.extension_schema))) + root = etree.parse(io.BytesIO(self.extension_schema)) attrs = bcf.agnostic.extensions.get_extensions_attributes(extensions) xsd_to_attrs = {v.subattr_xsd_name: k for k, v in attrs.items()} diff --git a/src/bonsai/bonsai/bim/module/bcf/operator.py b/src/bonsai/bonsai/bim/module/bcf/operator.py index 9a090a4b38..ed2859ac8b 100644 --- a/src/bonsai/bonsai/bim/module/bcf/operator.py +++ b/src/bonsai/bonsai/bim/module/bcf/operator.py @@ -397,7 +397,7 @@ class AddBcfBimSnippet(bpy.types.Operator): def poll(cls, context): props = tool.Bcf.get_bcf_props() props_are_filled = all( - (getattr(props, attr) for attr in ("bim_snippet_reference", "bim_snippet_schema", "bim_snippet_type")) + getattr(props, attr) for attr in ("bim_snippet_reference", "bim_snippet_schema", "bim_snippet_type") ) if not props_are_filled: cls.poll_message_set("Some BIM snippet fields are empty.") diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 34ef583eb1..28de1f78af 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -724,7 +724,7 @@ class GetRepresentationIfcParameters(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): obj = context.active_object - assert obj and tool.Geometry.has_mesh_properties((data := obj.data)) + assert obj and tool.Geometry.has_mesh_properties(data := obj.data) core.get_representation_ifc_parameters(tool.Geometry, obj=obj) parameters = tool.Geometry.get_mesh_props(data).ifc_parameters self.report({"INFO"}, f"{len(parameters)} parameters found.") @@ -1691,7 +1691,7 @@ class OverrideJoin(bpy.types.Operator, tool.Ifc.Operator): if obj == self.target: continue if obj.type != self.target_type: - obj.select_set((False)) + obj.select_set(False) continue element = tool.Ifc.get_entity(obj) @@ -1752,7 +1752,7 @@ class OverrideJoin(bpy.types.Operator, tool.Ifc.Operator): copied_item = ifcopenshell.util.element.copy_deep( ifc_file, item, exclude=("IfcCartesianPointList",) ) - new_points = processed_point_lists.get((points := item.Points)) + new_points = processed_point_lists.get(points := item.Points) if new_points is None: new_points = ifcopenshell.util.element.copy_deep(ifc_file, points) dim = item.Dim @@ -2365,7 +2365,7 @@ class EnableEditingRepresentationItems(bpy.types.Operator, tool.Ifc.Operator): item.tags += "," item.tags += tag - if tool.Geometry.has_mesh_properties((data := obj.data)): + if tool.Geometry.has_mesh_properties(data := obj.data): representation = tool.Geometry.get_data_representation(data) assert representation diff --git a/src/bonsai/bonsai/bim/module/project/prop.py b/src/bonsai/bonsai/bim/module/project/prop.py index 84f42f644e..fcab17143b 100644 --- a/src/bonsai/bonsai/bim/module/project/prop.py +++ b/src/bonsai/bonsai/bim/module/project/prop.py @@ -435,7 +435,7 @@ class BIMProjectProperties(PropertyGroup): return new def get_library_element_index(self, lib_element: LibraryElement) -> int: - return next((i for i in range(len(self.library_elements)) if self.library_elements[i] == lib_element)) + return next(i for i in range(len(self.library_elements)) if self.library_elements[i] == lib_element) if TYPE_CHECKING: is_editing: bool diff --git a/src/bonsai/bonsai/bim/module/qto/helper.py b/src/bonsai/bonsai/bim/module/qto/helper.py index a796d0a164..4b45d5113c 100644 --- a/src/bonsai/bonsai/bim/module/qto/helper.py +++ b/src/bonsai/bonsai/bim/module/qto/helper.py @@ -27,11 +27,11 @@ def calculate_height(obj: bpy.types.Object) -> float: def calculate_edges_lengths(objs: list[bpy.types.Object], context: bpy.types.Context): - return calculate_mesh_quantity(objs, context, lambda bm: sum((e.calc_length() for e in bm.edges if e.select))) + return calculate_mesh_quantity(objs, context, lambda bm: sum(e.calc_length() for e in bm.edges if e.select)) def calculate_faces_areas(objs: list[bpy.types.Object], context: bpy.types.Context) -> float: - return calculate_mesh_quantity(objs, context, lambda bm: sum((f.calc_area() for f in bm.faces if f.select))) + return calculate_mesh_quantity(objs, context, lambda bm: sum(f.calc_area() for f in bm.faces if f.select)) def calculate_volumes(objs: list[bpy.types.Object], context: bpy.types.Context) -> float: 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 4d7068a6b3..ea0626d8c3 100644 --- a/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py +++ b/src/bonsai/bonsai/bim/module/structural/load_decoration_data.py @@ -398,12 +398,12 @@ class ShaderInfo: returns a numpy array with the sum of the values of structural activities applied loads in each direction, multiplied by the factors in load combinations """ - values = np.zeros((3)) + values = np.zeros(3) for item in activity_list: activity = item[0] factor = item[1] load = activity.AppliedLoad - temp = np.zeros((3)) + temp = np.zeros(3) if load is not None and load.is_a("IfcStructuralLoadPlanarForce"): temp[0] = load.PlanarForceX if load.PlanarForceX is not None else 0 temp[1] = load.PlanarForceY if load.PlanarForceY is not None else 0 diff --git a/src/bonsai/bonsai/tool/cad.py b/src/bonsai/bonsai/tool/cad.py index 3ef6100671..a83598a63f 100644 --- a/src/bonsai/bonsai/tool/cad.py +++ b/src/bonsai/bonsai/tool/cad.py @@ -103,8 +103,8 @@ class Cad: d2 = v3 - v2 # Rounding avoids problems when dealing with 180 degrees - d1 = Vector((round(c, 6) for c in d1)) - d2 = Vector((round(c, 6) for c in d2)) + d1 = Vector(round(c, 6) for c in d1) + d2 = Vector(round(c, 6) for c in d2) d1.normalize() d2.normalize() diff --git a/src/bonsai/bonsai/tool/drawing.py b/src/bonsai/bonsai/tool/drawing.py index 6f12faf5b5..fefbbdc3ff 100644 --- a/src/bonsai/bonsai/tool/drawing.py +++ b/src/bonsai/bonsai/tool/drawing.py @@ -1709,7 +1709,7 @@ class Drawing(bonsai.core.tool.Drawing): a_quaternion = a.matrix_world.to_quaternion() b_quaternion = b.matrix_world.to_quaternion() for axis in axes: - if abs((a_quaternion @ axis).angle((b_quaternion @ axis)) - (math.pi / 2)) < 1e-5: + if abs((a_quaternion @ axis).angle(b_quaternion @ axis) - (math.pi / 2)) < 1e-5: return True return False diff --git a/src/bonsai/bonsai/tool/misc.py b/src/bonsai/bonsai/tool/misc.py index 646d9c0750..e2a8028181 100644 --- a/src/bonsai/bonsai/tool/misc.py +++ b/src/bonsai/bonsai/tool/misc.py @@ -73,7 +73,7 @@ class Misc(bonsai.core.tool.Misc): assert isinstance(obj.data, bpy.types.Mesh) obj.data.transform( Matrix.Translation( - (obj.matrix_world.inverted().to_quaternion() @ (obj.matrix_world.translation - new_origin)) + obj.matrix_world.inverted().to_quaternion() @ (obj.matrix_world.translation - new_origin) ) ) obj.matrix_world.translation = new_origin diff --git a/src/bonsai/bonsai/tool/root.py b/src/bonsai/bonsai/tool/root.py index ee50f6804b..004a60999a 100644 --- a/src/bonsai/bonsai/tool/root.py +++ b/src/bonsai/bonsai/tool/root.py @@ -445,7 +445,7 @@ class Root(bonsai.core.tool.Root): to unlink them. """ tool.Ifc.unlink(obj=obj) - if tool.Geometry.has_mesh_properties((data := obj.data)): + if tool.Geometry.has_mesh_properties(data := obj.data): tool.Geometry.get_mesh_props(data).ifc_definition_id = 0 for material_slot in obj.material_slots: if material := material_slot.material: diff --git a/src/bonsai/scripts/dxf2ifc.py b/src/bonsai/scripts/dxf2ifc.py index 62e3b2d708..3fa34e379a 100644 --- a/src/bonsai/scripts/dxf2ifc.py +++ b/src/bonsai/scripts/dxf2ifc.py @@ -38,7 +38,7 @@ class Dxf2Ifc: self.file.createIfcFaceOuterBound( self.file.createIfcPolyLoop( [ - self.file.createIfcCartesianPoint((face[index].dxf.location)) + self.file.createIfcCartesianPoint(face[index].dxf.location) for index in range(len(face) - 1) ] ), diff --git a/src/bonsai/scripts/generate_demo_library.py b/src/bonsai/scripts/generate_demo_library.py index 219f0f74db..7a9e741dab 100644 --- a/src/bonsai/scripts/generate_demo_library.py +++ b/src/bonsai/scripts/generate_demo_library.py @@ -81,7 +81,7 @@ def sync_guids(target_file: ifcopenshell.file, source_file: ifcopenshell.file) - # New type with material was added. print(f"WARNING! Couldn't find a matching rel for '{rel}'.") return - rel_ = next((r for r in related_object_.HasAssociations if r.is_a("IfcRelAssociatesMaterial"))) + rel_ = next(r for r in related_object_.HasAssociations if r.is_a("IfcRelAssociatesMaterial")) assert rel_ rel.GlobalId = rel_.GlobalId elif rel.is_a("IfcRelDeclares"): diff --git a/src/bonsai/test/bim/test_feature.py b/src/bonsai/test/bim/test_feature.py index 4a44ad7787..41e53882a0 100644 --- a/src/bonsai/test/bim/test_feature.py +++ b/src/bonsai/test/bim/test_feature.py @@ -1134,7 +1134,7 @@ def the_object_name_should_display_as_mode(name, mode): def the_object_name_is_voided_by_void(name, void): ifc = tool.Ifc.get() element = ifc.by_id(tool.Blender.get_ifc_definition_id(the_object_name_exists(name))) - assert any((rel for rel in element.HasOpenings if rel.RelatedOpeningElement.Name == void)), "No void found" + assert any(rel for rel in element.HasOpenings if rel.RelatedOpeningElement.Name == void), "No void found" @then(parsers.parse('the object "{name}" is not voided by "{void}"')) @@ -1158,7 +1158,7 @@ def the_object_name_is_a_void(name): ifc = tool.Ifc.get() obj = the_object_name_exists(name) element = ifc.by_id(tool.Blender.get_ifc_definition_id(obj)) - assert any((element.VoidsElements)), "No void was found" + assert any(element.VoidsElements), "No void was found" @then(parsers.parse('the object "{name}" is not a void')) @@ -1282,7 +1282,7 @@ def the_object_name_is_filled_by_filling(name, name2): def the_void_name_is_filled_by_filling(name, filling): ifc = tool.Ifc.get() element = ifc.by_id(tool.Blender.get_ifc_definition_id(the_object_name_exists(name))) - assert any((rel.RelatedBuildingElement.Name == filling for rel in element.HasFillings)), "No filling found" + assert any(rel.RelatedBuildingElement.Name == filling for rel in element.HasFillings), "No filling found" @then(parsers.parse('the void "{name}" is not filled by "{filling}"')) @@ -1468,7 +1468,7 @@ def the_object_name_has_a_vertex_at_location(name, location): target = Vector([float(co) for co in location.split(",")]) verts = [] for v in obj.data.vertices: - verts.append((obj.matrix_world @ v.co)) + verts.append(obj.matrix_world @ v.co) if (verts[-1] - target).length < 0.001: is_pass = True assert is_pass, f"No verts found at {location}: {verts}" diff --git a/src/bonsai/test/tool/test_loader.py b/src/bonsai/test/tool/test_loader.py index abb3473245..1eaadf96ec 100644 --- a/src/bonsai/test/tool/test_loader.py +++ b/src/bonsai/test/tool/test_loader.py @@ -71,7 +71,7 @@ class TestCreatingStyles(NewFile): subject.create_surface_style_with_textures(material, style_data, texture_data) used_node_types = set([n.type for n in material.node_tree.nodes[:]]) - assert used_node_types == set((["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"])) + assert used_node_types == set(["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"]) bsdf = tool.Blender.get_material_node(material, "BSDF_PRINCIPLED") alpha = 1 - style_data["Transparency"] @@ -137,7 +137,7 @@ class TestCreatingStyles(NewFile): subject.create_surface_style_with_textures(material, rendering_style, texture_style) used_node_types = set([n.type for n in material.node_tree.nodes[:]]) - assert used_node_types == set((["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"])) + assert used_node_types == set(["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"]) color_to_tuple = lambda x: (x.Red, x.Green, x.Blue) bsdf = tool.Blender.get_material_node(material, "BSDF_PRINCIPLED") @@ -250,7 +250,7 @@ class TestCreatingStyles(NewFile): subject.create_surface_style_with_textures(material, rendering_style, texture_style) used_node_types = set([n.type for n in material.node_tree.nodes[:]]) - assert used_node_types == set((["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"])) + assert used_node_types == set(["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"]) image_node = tool.Blender.get_material_node(material, "TEX_IMAGE") assert image_node.outputs["Color"].links[0].to_socket.name == "Base Color" @@ -385,7 +385,7 @@ class TestCreatingStyles(NewFile): subject.create_surface_style_with_textures(material, rendering_style, texture_style) used_node_types = set([n.type for n in material.node_tree.nodes[:]]) - assert used_node_types == set((["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"])) + assert used_node_types == set(["OUTPUT_MATERIAL", "BSDF_PRINCIPLED", "TEX_IMAGE", "TEX_COORD"]) image_node = tool.Blender.get_material_node(material, "TEX_IMAGE") assert image_node.outputs["Color"].links[0].to_socket.name == "Base Color" diff --git a/src/bonsai/test/tool/test_model.py b/src/bonsai/test/tool/test_model.py index 4b539caf97..20571dbb18 100644 --- a/src/bonsai/test/tool/test_model.py +++ b/src/bonsai/test/tool/test_model.py @@ -489,14 +489,14 @@ class TestApplyIfcMaterialChanges(NewFile): sprops = tool.Style.get_style_props() sprops.style_name = "Red" bpy.ops.bim.add_presentation_style() - red_style = next((i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Red")) + red_style = next(i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Red") ifcopenshell.api.style.assign_material_style(ifc_file, red_material, red_style, context) blue_material = ifcopenshell.api.material.add_material(ifc_file, "Blue Material") bpy.ops.bim.enable_adding_presentation_style() sprops.style_name = "Blue" bpy.ops.bim.add_presentation_style() - blue_style = next((i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Blue")) + blue_style = next(i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Blue") ifcopenshell.api.style.assign_material_style(ifc_file, blue_material, blue_style, context) bpy.ops.bim.enable_adding_presentation_style() @@ -508,7 +508,7 @@ class TestApplyIfcMaterialChanges(NewFile): def setup_elements(self) -> None: ifc_file = tool.Ifc.get() - blue_material = next((i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Blue Material")) + blue_material = next(i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Blue Material") blue_style = tool.Material.get_style(blue_material) # Element type. @@ -552,9 +552,9 @@ class TestApplyIfcMaterialChanges(NewFile): self.setup_test() ifc_file = tool.Ifc.get() element_type = next(ifc_file.by_type("IfcActuatorType").__iter__()) - red_material = next((i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material")) + red_material = next(i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material") red_style = tool.Material.get_style(red_material) - blue_style = next((i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Blue")) + blue_style = next(i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Blue") ifcopenshell.api.material.assign_material(ifc_file, material=red_material, products=[element_type]) tool.Material.ensure_material_assigned([element_type], material=red_material) @@ -576,8 +576,8 @@ class TestApplyIfcMaterialChanges(NewFile): self.setup_test() ifc_file = tool.Ifc.get() element_type = next(ifc_file.by_type("IfcActuatorType").__iter__()) - red_material = next((i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material")) - green_style = next((i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Green")) + red_material = next(i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material") + green_style = next(i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Green") # Occurrence with a style. element_type_obj = tool.Ifc.get_object(element_type) @@ -601,9 +601,9 @@ class TestApplyIfcMaterialChanges(NewFile): def test_assign_material_to_representation_that_has_2_items_and_1_item_has_a_style(self): self.setup_test(and_elements=False) ifc_file = tool.Ifc.get() - red_material = next((i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material")) + red_material = next(i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material") red_style = tool.Material.get_style(red_material) - green_style = next((i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Green")) + green_style = next(i for i in ifc_file.by_type("IfcSurfaceStyle") if i.Name == "Green") bpy.ops.mesh.primitive_cube_add(size=10, location=(0, 0, 4)) obj = bpy.data.objects["Cube"] @@ -664,7 +664,7 @@ class TestApplyIfcMaterialChanges(NewFile): self.setup_test(and_elements=True) ifc_file = tool.Ifc.get() element_type = next(ifc_file.by_type("IfcActuatorType").__iter__()) - red_material = next((i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material")) + red_material = next(i for i in ifc_file.by_type("IfcMaterial") if i.Name == "Red Material") no_style_material = ifcopenshell.api.material.add_material(ifc_file, "No Style") obj = bpy.data.objects["Simple"] element = tool.Ifc.get_entity(obj) diff --git a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py index 968b681ede..65d590dfa4 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py +++ b/src/ifcopenshell-python/ifcopenshell/api/alignment/add_zero_length_segment.py @@ -70,7 +70,7 @@ def add_zero_length_segment(file: ifcopenshell.file, entity: entity_instance) -> curve_segment = file.createIfcCurveSegment( Transition="DISCONTINUOUS", Placement=file.createIfcAxis2Placement2D( - Location=file.createIfcCartesianPoint(((x, y))), + Location=file.createIfcCartesianPoint((x, y)), RefDirection=file.createIfcDirection((dx, dy)), ), SegmentStart=file.createIfcLengthMeasure(0.0), diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_slab_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_slab_representation.py index c0d78872f4..f6a6f85d1a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_slab_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_slab_representation.py @@ -116,7 +116,7 @@ class Usecase: offset_direction = direction_ratios # offset direction doesn't change if direction_sense is negative extrusion_direction = self.file.createIfcDirection(direction_ratios) if self.direction_sense == "NEGATIVE": - direction_ratios = tuple((-n for n in direction_ratios)) + direction_ratios = tuple(-n for n in direction_ratios) extrusion_direction = self.file.createIfcDirection(direction_ratios) perpendicular_offset = self.convert_si_to_unit(self.offset) * abs(1 / cos(self.x_angle)) diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_wall_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_wall_representation.py index 28e0112be9..53e2f58660 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_wall_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_wall_representation.py @@ -112,7 +112,7 @@ class Usecase: self.file.createIfcDirection((1.0, 0.0, 0.0)), ), extrusion_direction, - self.convert_si_to_unit(self.settings["height"]) * abs((1 / cos(self.settings["x_angle"]))), + self.convert_si_to_unit(self.settings["height"]) * abs(1 / cos(self.settings["x_angle"])), ) if self.settings["booleans"]: extrusion = self.apply_booleans(extrusion) diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py index b07a630684..36cd447a54 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py @@ -55,7 +55,7 @@ def unassign_lag_time(file: ifcopenshell.file, rel_sequence: ifcopenshell.entity # What if you didn't? ifcopenshell.api.sequence.unassign_lag_time(model, rel_sequence=sequence) """ - if file.get_total_inverses((current_lag_time := rel_sequence.TimeLag)) == 1: + if file.get_total_inverses(current_lag_time := rel_sequence.TimeLag) == 1: file.remove(current_lag_time) else: rel_sequence.TimeLag = None diff --git a/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi b/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi index a9de6b7bb4..db42ca385d 100644 --- a/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi +++ b/src/ifcopenshell-python/ifcopenshell/ifcopenshell_wrapper.pyi @@ -302,7 +302,7 @@ class Settings: def set_(self, *args): ... def setting_names(self): ... -class SvgSerializer (WriteOnlyGeometrySerializer): +class SvgSerializer(WriteOnlyGeometrySerializer): SH_NONE: Any SH_FULL: Any SH_LEFT: Any diff --git a/src/ifcopenshell-python/ifcopenshell/util/sequence.py b/src/ifcopenshell-python/ifcopenshell/util/sequence.py index 46483824f1..121c4d2273 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/sequence.py +++ b/src/ifcopenshell-python/ifcopenshell/util/sequence.py @@ -135,7 +135,7 @@ def offset_date(start, duration, duration_type: DURATION_TYPE, calendar: ifcopen months = getattr(duration, "months", 0) years = getattr(duration, "years", 0) - abs_duration = abs((duration.days + months * 30 + years * 12 * 30)) + abs_duration = abs(duration.days + months * 30 + years * 12 * 30) date_offset = datetime.timedelta(days=1 if duration.days > 0 else -1) while abs_duration > 0: if duration_type == "ELAPSEDTIME" or not is_calendar_applicable(current_date, calendar): diff --git a/src/ifcpatch/ifcpatch/recipes/FixArchiCADToRevitSpaces.py b/src/ifcpatch/ifcpatch/recipes/FixArchiCADToRevitSpaces.py index be7fac9d71..d19bc8b26c 100644 --- a/src/ifcpatch/ifcpatch/recipes/FixArchiCADToRevitSpaces.py +++ b/src/ifcpatch/ifcpatch/recipes/FixArchiCADToRevitSpaces.py @@ -86,7 +86,7 @@ class Patcher: assert isinstance(wall.data, bpy.types.Mesh) wall.data.transform( Matrix.Translation( - (wall.matrix_world.inverted().to_quaternion() @ (wall.matrix_world.translation - new_origin)) + wall.matrix_world.inverted().to_quaternion() @ (wall.matrix_world.translation - new_origin) ) ) wall.matrix_world.translation = new_origin diff --git a/src/ifcpatch/ifcpatch/recipes/MergeProjects.py b/src/ifcpatch/ifcpatch/recipes/MergeProjects.py index 22f0ac9e7a..9372f1d75f 100644 --- a/src/ifcpatch/ifcpatch/recipes/MergeProjects.py +++ b/src/ifcpatch/ifcpatch/recipes/MergeProjects.py @@ -55,10 +55,8 @@ class Patcher: def patch(self): if isinstance(self.filepaths, Union[str, ifcopenshell.file]): print( - ( - "WARNING. Passing a single file/filepath will be deprecated soon for MergeProjects ifcpatch, " - "replace it with a list of file/filepaths." - ) + "WARNING. Passing a single file/filepath will be deprecated soon for MergeProjects ifcpatch, " + "replace it with a list of file/filepaths." ) self.filepaths = [self.filepaths] for filepath in self.filepaths: