From 865c0f489542a4eeed371444ed42ecd9fa614087 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 9 Sep 2021 21:27:23 +1000 Subject: [PATCH] Run black, and add black to a "qa" target to make it a standardised process. --- src/blenderbim/Makefile | 4 + src/blenderbim/blenderbim/__init__.py | 1 - src/blenderbim/blenderbim/bim/export_ifc.py | 2 - src/blenderbim/blenderbim/bim/handler.py | 1 - src/blenderbim/blenderbim/bim/helper.py | 1 - src/blenderbim/blenderbim/bim/ifc.py | 1 - src/blenderbim/blenderbim/bim/import_ifc.py | 7 +- .../blenderbim/bim/module/__init__.py | 2 - .../bim/module/aggregate/__init__.py | 1 - .../bim/module/aggregate/operator.py | 1 - .../blenderbim/bim/module/aggregate/ui.py | 5 +- .../bim/module/attribute/__init__.py | 1 - .../bim/module/attribute/operator.py | 5 +- .../blenderbim/bim/module/attribute/prop.py | 2 +- .../blenderbim/bim/module/attribute/ui.py | 1 - .../blenderbim/bim/module/augin/__init__.py | 1 - .../blenderbim/bim/module/augin/operator.py | 3 +- .../blenderbim/bim/module/augin/prop.py | 1 - .../blenderbim/bim/module/augin/ui.py | 1 - .../blenderbim/bim/module/bcf/__init__.py | 1 - .../blenderbim/bim/module/bcf/bcfstore.py | 2 +- .../blenderbim/bim/module/bcf/operator.py | 76 +- .../blenderbim/bim/module/bcf/prop.py | 5 +- .../blenderbim/bim/module/bcf/ui.py | 8 +- .../bim/module/bimtester/__init__.py | 1 - .../bim/module/bimtester/operator.py | 1 - .../blenderbim/bim/module/bimtester/prop.py | 1 - .../blenderbim/bim/module/bimtester/ui.py | 1 - .../bim/module/boundary/__init__.py | 5 +- .../blenderbim/bim/module/boundary/ui.py | 1 - .../blenderbim/bim/module/clash/__init__.py | 1 - .../blenderbim/bim/module/clash/operator.py | 5 +- .../blenderbim/bim/module/clash/prop.py | 1 - .../blenderbim/bim/module/clash/ui.py | 1 - .../bim/module/classification/__init__.py | 1 - .../bim/module/classification/operator.py | 1 - .../bim/module/classification/prop.py | 1 - .../bim/module/classification/ui.py | 1 - .../blenderbim/bim/module/cobie/__init__.py | 1 - .../blenderbim/bim/module/cobie/operator.py | 11 +- .../blenderbim/bim/module/cobie/prop.py | 2 - .../blenderbim/bim/module/cobie/ui.py | 6 +- .../bim/module/constraint/__init__.py | 1 - .../bim/module/constraint/operator.py | 1 - .../blenderbim/bim/module/constraint/prop.py | 1 - .../blenderbim/bim/module/constraint/ui.py | 3 +- .../blenderbim/bim/module/context/__init__.py | 1 - .../blenderbim/bim/module/context/operator.py | 1 - .../blenderbim/bim/module/context/ui.py | 1 - .../blenderbim/bim/module/cost/__init__.py | 1 - .../blenderbim/bim/module/cost/ui.py | 1 + .../bim/module/covetool/__init__.py | 1 - .../blenderbim/bim/module/covetool/api.py | 1 - .../bim/module/covetool/operator.py | 1 - .../blenderbim/bim/module/covetool/prop.py | 1 - .../blenderbim/bim/module/covetool/ui.py | 1 - .../blenderbim/bim/module/csv/__init__.py | 3 - .../blenderbim/bim/module/csv/operator.py | 1 - .../blenderbim/bim/module/csv/prop.py | 1 - .../blenderbim/bim/module/csv/ui.py | 1 - .../blenderbim/bim/module/debug/__init__.py | 1 - .../blenderbim/bim/module/debug/operator.py | 9 +- .../blenderbim/bim/module/debug/prop.py | 1 - .../blenderbim/bim/module/debug/ui.py | 1 - .../blenderbim/bim/module/diff/__init__.py | 3 - .../blenderbim/bim/module/diff/operator.py | 6 +- .../blenderbim/bim/module/diff/prop.py | 1 - .../blenderbim/bim/module/diff/ui.py | 1 - .../bim/module/document/__init__.py | 1 - .../bim/module/document/operator.py | 1 - .../blenderbim/bim/module/document/prop.py | 1 - .../blenderbim/bim/module/document/ui.py | 1 - .../blenderbim/bim/module/drawing/__init__.py | 1 - .../bim/module/drawing/annotation.py | 19 +- .../bim/module/drawing/decoration.py | 97 +- .../blenderbim/bim/module/drawing/gizmos.py | 1 - .../blenderbim/bim/module/drawing/handler.py | 1 - .../blenderbim/bim/module/drawing/helper.py | 1 - .../blenderbim/bim/module/drawing/operator.py | 20 +- .../blenderbim/bim/module/drawing/prop.py | 10 +- .../bim/module/drawing/scheduler.py | 7 +- .../blenderbim/bim/module/drawing/shaders.py | 1 - .../blenderbim/bim/module/drawing/sheeter.py | 1 - .../bim/module/drawing/svgwriter.py | 27 +- .../blenderbim/bim/module/drawing/ui.py | 2 - .../bim/module/geometry/__init__.py | 1 - .../blenderbim/bim/module/geometry/helper.py | 1 - .../bim/module/geometry/operator.py | 1 - .../blenderbim/bim/module/geometry/prop.py | 1 - .../blenderbim/bim/module/geometry/ui.py | 5 +- .../bim/module/georeference/__init__.py | 1 - .../bim/module/georeference/prop.py | 5 +- .../blenderbim/bim/module/georeference/ui.py | 1 - .../blenderbim/bim/module/group/__init__.py | 1 - .../blenderbim/bim/module/group/operator.py | 1 - .../blenderbim/bim/module/group/prop.py | 1 - .../blenderbim/bim/module/group/ui.py | 1 - .../blenderbim/bim/module/layer/__init__.py | 1 - .../blenderbim/bim/module/layer/operator.py | 1 - .../blenderbim/bim/module/layer/prop.py | 1 - .../blenderbim/bim/module/layer/ui.py | 1 - .../blenderbim/bim/module/lca/prop.py | 5 +- .../bim/module/material/__init__.py | 1 - .../bim/module/material/operator.py | 1 - .../blenderbim/bim/module/material/prop.py | 15 +- .../blenderbim/bim/module/material/ui.py | 1 - .../blenderbim/bim/module/model/__init__.py | 1 - .../blenderbim/bim/module/model/door.py | 41 +- .../blenderbim/bim/module/model/grid.py | 1 - .../blenderbim/bim/module/model/handler.py | 1 - .../blenderbim/bim/module/model/opening.py | 25 +- .../blenderbim/bim/module/model/pie.py | 2 +- .../blenderbim/bim/module/model/product.py | 3 +- .../blenderbim/bim/module/model/profile.py | 1 - .../blenderbim/bim/module/model/prop.py | 3 +- .../blenderbim/bim/module/model/root.py | 1 - .../blenderbim/bim/module/model/slab.py | 1 - .../blenderbim/bim/module/model/stair.py | 1 - .../blenderbim/bim/module/model/task.py | 1 - .../blenderbim/bim/module/model/ui.py | 3 +- .../blenderbim/bim/module/model/wall.py | 1 - .../blenderbim/bim/module/model/window.py | 37 +- .../blenderbim/bim/module/model/workspace.py | 2 - .../blenderbim/bim/module/owner/__init__.py | 1 - .../blenderbim/bim/module/owner/operator.py | 14 +- .../blenderbim/bim/module/owner/prop.py | 3 +- .../blenderbim/bim/module/owner/ui.py | 22 +- .../blenderbim/bim/module/patch/__init__.py | 1 - .../blenderbim/bim/module/patch/operator.py | 3 +- .../blenderbim/bim/module/patch/prop.py | 6 +- .../blenderbim/bim/module/patch/ui.py | 4 +- .../blenderbim/bim/module/profile/__init__.py | 1 - .../blenderbim/bim/module/profile/operator.py | 1 - .../blenderbim/bim/module/profile/prop.py | 2 +- .../blenderbim/bim/module/profile/ui.py | 1 - .../blenderbim/bim/module/project/__init__.py | 1 - .../blenderbim/bim/module/project/prop.py | 1 - .../blenderbim/bim/module/project/ui.py | 1 - .../blenderbim/bim/module/pset/__init__.py | 1 - .../blenderbim/bim/module/pset/operator.py | 1 - .../blenderbim/bim/module/pset/prop.py | 5 +- .../bim/module/pset/qto_calculator.py | 7 +- .../blenderbim/bim/module/pset/ui.py | 1 - .../bim/module/pset_template/__init__.py | 1 - .../bim/module/pset_template/operator.py | 64 +- .../bim/module/pset_template/prop.py | 1 - .../blenderbim/bim/module/pset_template/ui.py | 1 - .../blenderbim/bim/module/qto/__init__.py | 1 - .../blenderbim/bim/module/qto/helper.py | 37 +- .../blenderbim/bim/module/qto/operator.py | 8 +- .../blenderbim/bim/module/qto/prop.py | 2 +- .../blenderbim/bim/module/qto/ui.py | 1 - .../bim/module/resource/__init__.py | 2 +- .../blenderbim/bim/module/resource/ui.py | 1 - .../blenderbim/bim/module/root/__init__.py | 1 - .../blenderbim/bim/module/root/operator.py | 1 - .../blenderbim/bim/module/root/prop.py | 1 - .../blenderbim/bim/module/root/ui.py | 5 +- .../blenderbim/bim/module/search/__init__.py | 1 - .../blenderbim/bim/module/search/operator.py | 15 +- .../blenderbim/bim/module/search/prop.py | 2 +- .../blenderbim/bim/module/search/ui.py | 1 - .../bim/module/sequence/__init__.py | 1 - .../blenderbim/bim/module/sequence/helper.py | 3 +- .../bim/module/sequence/operator.py | 4 +- .../blenderbim/bim/module/sequence/prop.py | 1 - .../blenderbim/bim/module/spatial/__init__.py | 1 - .../blenderbim/bim/module/spatial/operator.py | 16 +- .../blenderbim/bim/module/spatial/prop.py | 1 - .../blenderbim/bim/module/spatial/ui.py | 1 - .../bim/module/structural/__init__.py | 1 - .../bim/module/structural/operator.py | 16 +- .../blenderbim/bim/module/structural/prop.py | 11 +- .../blenderbim/bim/module/structural/ui.py | 1 - .../blenderbim/bim/module/style/__init__.py | 1 - .../blenderbim/bim/module/style/operator.py | 15 +- .../blenderbim/bim/module/style/prop.py | 2 +- .../blenderbim/bim/module/style/ui.py | 1 - .../blenderbim/bim/module/system/__init__.py | 1 - .../blenderbim/bim/module/system/operator.py | 5 +- .../blenderbim/bim/module/system/prop.py | 1 - .../blenderbim/bim/module/system/ui.py | 1 - .../blenderbim/bim/module/type/__init__.py | 1 - .../blenderbim/bim/module/type/operator.py | 1 - .../blenderbim/bim/module/type/prop.py | 1 - .../blenderbim/bim/module/type/ui.py | 1 - .../blenderbim/bim/module/unit/__init__.py | 1 - .../blenderbim/bim/module/unit/operator.py | 9 +- .../blenderbim/bim/module/unit/prop.py | 1 - .../blenderbim/bim/module/unit/ui.py | 1 - .../blenderbim/bim/module/void/__init__.py | 1 - .../blenderbim/bim/module/void/prop.py | 2 - .../blenderbim/bim/module/void/ui.py | 1 - src/blenderbim/blenderbim/bim/prop.py | 1 - src/blenderbim/blenderbim/bim/schema.py | 2 +- src/blenderbim/blenderbim/bim/ui.py | 1 - src/blenderbim/docs/conf.py | 1 - src/blenderbim/dxf2ifc.py | 7 +- src/blenderbim/extract.py | 1 - src/blenderbim/gbxml.py | 1 - src/blenderbim/generate_util_type_json.py | 1 - src/blenderbim/getIfcElements.py | 1 - src/blenderbim/get_description.py | 1 - src/blenderbim/get_volume_by_material.py | 1 - src/blenderbim/runpytest.py | 7 +- src/blenderbim/test/__init__.py | 2 - src/blenderbim/test/bim/__init__.py | 2 - src/blenderbim/test/bim/module/__init__.py | 2 - .../test/bim/module/drawing/__init__.py | 2 - .../test/bim/module/project/__init__.py | 2 - src/ifcopenshell-python/Makefile | 4 + .../ifcopenshell/alignment.py | 4 +- .../ifcopenshell/api/attribute/data.py | 20 +- .../ifcopenshell/api/classification/data.py | 2 +- .../api/classification/edit_classification.py | 5 +- .../api/classification/edit_reference.py | 5 +- .../ifcopenshell/api/constraint/add_metric.py | 14 +- .../api/constraint/add_objective.py | 9 +- .../api/constraint/assign_constraint.py | 13 +- .../ifcopenshell/api/constraint/data.py | 3 +- .../api/constraint/edit_metric.py | 5 +- .../api/constraint/edit_objective.py | 5 +- .../ifcopenshell/api/context/add_context.py | 15 +- .../ifcopenshell/api/context/data.py | 5 +- .../api/document/add_information.py | 8 +- .../api/document/add_reference.py | 5 +- .../api/document/assign_document.py | 13 +- .../api/document/edit_information.py | 5 +- .../api/document/edit_reference.py | 5 +- .../ifcopenshell/api/geometry/data.py | 2 +- .../api/georeference/add_georeferencing.py | 17 +- .../api/georeference/edit_georeferencing.py | 2 - .../ifcopenshell/api/grid/create_grid_axis.py | 7 +- .../ifcopenshell/api/group/add_group.py | 13 +- .../ifcopenshell/api/group/assign_group.py | 15 +- .../ifcopenshell/api/group/data.py | 2 +- .../ifcopenshell/api/group/edit_group.py | 5 +- .../ifcopenshell/api/layer/add_layer.py | 4 +- .../ifcopenshell/api/layer/edit_layer.py | 5 +- .../ifcopenshell/api/material/add_layer.py | 7 +- .../api/material/edit_assigned_material.py | 7 +- .../api/material/edit_constituent.py | 8 +- .../ifcopenshell/api/material/edit_layer.py | 8 +- .../ifcopenshell/api/material/edit_profile.py | 9 +- .../api/material/edit_profile_usage.py | 43 +- .../ifcopenshell/api/owner/add_address.py | 4 +- .../ifcopenshell/api/owner/edit_address.py | 5 +- .../api/owner/edit_organisation.py | 5 +- .../ifcopenshell/api/owner/edit_person.py | 5 +- .../ifcopenshell/api/owner/edit_role.py | 5 +- .../ifcopenshell/api/owner/settings.py | 2 +- .../ifcopenshell/api/profile/edit_profile.py | 2 +- .../api/pset_template/add_prop_template.py | 17 +- .../api/pset_template/add_pset_template.py | 15 +- .../ifcopenshell/api/pset_template/data.py | 2 +- .../api/pset_template/remove_prop_template.py | 4 +- .../api/pset_template/remove_pset_template.py | 4 +- .../ifcopenshell/api/resource/add_resource.py | 9 +- .../api/resource/add_resource_time.py | 1 + .../ifcopenshell/api/resource/data.py | 4 +- .../api/resource/edit_resource_time.py | 5 +- .../ifcopenshell/api/root/create_entity.py | 11 +- .../ifcopenshell/api/root/data.py | 2 +- .../api/sequence/add_task_time.py | 1 + .../api/sequence/add_work_plan.py | 4 +- .../api/sequence/calculate_task_duration.py | 6 +- .../ifcopenshell/api/sequence/data.py | 10 +- .../api/sequence/edit_task_time.py | 11 +- .../api/sequence/remove_work_schedule.py | 6 +- .../api/sequence/unassign_lag_time.py | 4 +- .../ifcopenshell/api/spatial/data.py | 2 +- .../assign_structural_analysis_model.py | 15 +- .../ifcopenshell/api/structural/data.py | 7 +- .../edit_structural_analysis_model.py | 5 +- .../edit_structural_boundary_condition.py | 5 +- .../edit_structural_connection_cs.py | 4 +- .../api/structural/edit_structural_load.py | 5 +- .../remove_structural_connection_condition.py | 1 - .../api/style/assign_material_style.py | 4 +- .../api/style/edit_style_colours.py | 34 +- .../ifcopenshell/api/system/add_system.py | 13 +- .../ifcopenshell/api/system/assign_system.py | 15 +- .../ifcopenshell/api/system/data.py | 2 +- .../ifcopenshell/api/system/edit_system.py | 5 +- .../ifcopenshell/api/type/unassign_type.py | 4 +- .../ifcopenshell/api/unit/remove_unit.py | 2 +- .../ifcopenshell/api/void/add_filling.py | 13 +- .../ifcopenshell/api/void/add_opening.py | 15 +- .../ifcopenshell/api/void/data.py | 4 +- .../ifcopenshell/express/express_parser.py | 1397 ++++++++++++++--- .../ifcopenshell/express/implementation.py | 18 +- .../ifcopenshell/express/schema_class.py | 10 +- src/ifcopenshell-python/ifcopenshell/file.py | 2 +- .../ifcopenshell/geom/app.py | 52 +- .../ifcopenshell/geom/main.py | 2 +- src/ifcopenshell-python/ifcopenshell/ids.py | 2 - .../ifcopenshell/transition_curve.py | 42 +- .../ifcopenshell/util/attribute.py | 8 +- .../ifcopenshell/util/cost.py | 2 + .../ifcopenshell/util/placement.py | 1 + .../ifcopenshell/util/schema.py | 8 +- .../ifcopenshell/util/unit.py | 2 +- .../ifcopenshell/validate.py | 18 +- .../test/api/void/test_remove_opening.py | 1 + src/ifcopenshell-python/test/test_file.py | 2 +- 305 files changed, 1968 insertions(+), 1143 deletions(-) diff --git a/src/blenderbim/Makefile b/src/blenderbim/Makefile index 3447aa25da..23ef33155f 100644 --- a/src/blenderbim/Makefile +++ b/src/blenderbim/Makefile @@ -457,6 +457,10 @@ test-core: test-bim: pytest test/bim +.PHONY: qa +qa: + black . + .PHONY: coverage coverage: coverage run --source blenderbim.core -m pytest -p no:pytest-blender test/core diff --git a/src/blenderbim/blenderbim/__init__.py b/src/blenderbim/blenderbim/__init__.py index 1e80592560..728b563351 100644 --- a/src/blenderbim/blenderbim/__init__.py +++ b/src/blenderbim/blenderbim/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/export_ifc.py b/src/blenderbim/blenderbim/bim/export_ifc.py index b27cc03f7c..14051fd5b7 100644 --- a/src/blenderbim/blenderbim/bim/export_ifc.py +++ b/src/blenderbim/blenderbim/bim/export_ifc.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -158,7 +157,6 @@ class IfcExporter: else: parent_collection = obj.users_collection[0] - parent_obj = bpy.data.objects.get(parent_collection.name) if not parent_obj or not parent_obj.BIMObjectProperties.ifc_definition_id: return diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index ac0d0206ca..cc249506fd 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/helper.py b/src/blenderbim/blenderbim/bim/helper.py index 8b7dfc6c1d..e6eea8757d 100644 --- a/src/blenderbim/blenderbim/bim/helper.py +++ b/src/blenderbim/blenderbim/bim/helper.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/ifc.py b/src/blenderbim/blenderbim/bim/ifc.py index c5d9f65d78..62c029be53 100644 --- a/src/blenderbim/blenderbim/bim/ifc.py +++ b/src/blenderbim/blenderbim/bim/ifc.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/import_ifc.py b/src/blenderbim/blenderbim/bim/import_ifc.py index 6b3c6a1921..c60946d568 100644 --- a/src/blenderbim/blenderbim/bim/import_ifc.py +++ b/src/blenderbim/blenderbim/bim/import_ifc.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -456,9 +455,9 @@ class IfcImporter: obj.BIMObjectProperties.blender_offset_type = "CARTESIAN_POINT" if self.ifc_import_settings.should_offset_model: - matrix[0,3] += self.ifc_import_settings.model_offset_coordinates[0] - matrix[1,3] += self.ifc_import_settings.model_offset_coordinates[1] - matrix[2,3] += self.ifc_import_settings.model_offset_coordinates[2] + matrix[0, 3] += self.ifc_import_settings.model_offset_coordinates[0] + matrix[1, 3] += self.ifc_import_settings.model_offset_coordinates[1] + matrix[2, 3] += self.ifc_import_settings.model_offset_coordinates[2] return mathutils.Matrix(matrix.tolist()) diff --git a/src/blenderbim/blenderbim/bim/module/__init__.py b/src/blenderbim/blenderbim/bim/module/__init__.py index 3a32fe4bf7..1498d0279b 100644 --- a/src/blenderbim/blenderbim/bim/module/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/__init__.py b/src/blenderbim/blenderbim/bim/module/aggregate/__init__.py index a97637b771..bd7f6946ea 100644 --- a/src/blenderbim/blenderbim/bim/module/aggregate/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/aggregate/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py index d5b972791a..b9b830df3b 100644 --- a/src/blenderbim/blenderbim/bim/module/aggregate/operator.py +++ b/src/blenderbim/blenderbim/bim/module/aggregate/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/aggregate/ui.py b/src/blenderbim/blenderbim/bim/module/aggregate/ui.py index 7f9c033b12..3ce391dc8e 100644 --- a/src/blenderbim/blenderbim/bim/module/aggregate/ui.py +++ b/src/blenderbim/blenderbim/bim/module/aggregate/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -56,7 +55,9 @@ class BIM_PT_aggregate(Panel): row = self.layout.row(align=True) row.prop(props, "relating_object", text="") if props.relating_object: - row.operator("bim.assign_object", icon="CHECKMARK", text="").relating_object = props.relating_object.name + row.operator( + "bim.assign_object", icon="CHECKMARK", text="" + ).relating_object = props.relating_object.name row.operator("bim.disable_editing_aggregate", icon="CANCEL", text="") else: row = self.layout.row(align=True) diff --git a/src/blenderbim/blenderbim/bim/module/attribute/__init__.py b/src/blenderbim/blenderbim/bim/module/attribute/__init__.py index afa3ad0e18..d91a5ad409 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/attribute/operator.py b/src/blenderbim/blenderbim/bim/module/attribute/operator.py index ef5798a5d9..e29bc69628 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/operator.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -119,9 +118,7 @@ class EditAttributes(bpy.types.Operator): elif attribute["type"] == "enum": attributes[attribute["name"]] = blender_attribute.enum_value product = self.file.by_id(oprops.ifc_definition_id) - ifcopenshell.api.run( - "attribute.edit_attributes", self.file, **{"product": product, "attributes": attributes} - ) + ifcopenshell.api.run("attribute.edit_attributes", self.file, **{"product": product, "attributes": attributes}) Data.load(IfcStore.get_file(), oprops.ifc_definition_id) bpy.ops.bim.disable_editing_attributes(obj=obj.name, obj_type=self.obj_type) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/attribute/prop.py b/src/blenderbim/blenderbim/bim/module/attribute/prop.py index d402546092..35391fc321 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/prop.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -32,6 +31,7 @@ from bpy.props import ( CollectionProperty, ) + class BIMAttributeProperties(PropertyGroup): attributes: CollectionProperty(name="Attributes", type=Attribute) is_editing_attributes: BoolProperty(name="Is Editing Attributes") diff --git a/src/blenderbim/blenderbim/bim/module/attribute/ui.py b/src/blenderbim/blenderbim/bim/module/attribute/ui.py index 5bdb184576..e6d5c5fa1b 100644 --- a/src/blenderbim/blenderbim/bim/module/attribute/ui.py +++ b/src/blenderbim/blenderbim/bim/module/attribute/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/augin/__init__.py b/src/blenderbim/blenderbim/bim/module/augin/__init__.py index 9f659c7088..d34dd212ef 100644 --- a/src/blenderbim/blenderbim/bim/module/augin/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/augin/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/augin/operator.py b/src/blenderbim/blenderbim/bim/module/augin/operator.py index d4b5b0d316..62f5c3b09d 100644 --- a/src/blenderbim/blenderbim/bim/module/augin/operator.py +++ b/src/blenderbim/blenderbim/bim/module/augin/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -68,6 +67,7 @@ class AuginCreateNewModel(bpy.types.Operator): def execute(self, context): import boto3 from botocore.config import Config + props = context.scene.AuginProperties # Create project @@ -135,7 +135,6 @@ class AuginCreateNewModel(bpy.types.Operator): client.upload_file(context.scene.BIMProperties.ifc_file, result["s3_bucket"], result["model_path"]) client.upload_file(thumb_path, result["s3_bucket"], result["thumb_path"]) - # Notify done url = "https://server.auge.pro.br/API/v3/augin_rest.php/files_uploaded" payload = { diff --git a/src/blenderbim/blenderbim/bim/module/augin/prop.py b/src/blenderbim/blenderbim/bim/module/augin/prop.py index d111ab0263..3424ac09b8 100644 --- a/src/blenderbim/blenderbim/bim/module/augin/prop.py +++ b/src/blenderbim/blenderbim/bim/module/augin/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/augin/ui.py b/src/blenderbim/blenderbim/bim/module/augin/ui.py index 30f593846b..8349cd8c23 100644 --- a/src/blenderbim/blenderbim/bim/module/augin/ui.py +++ b/src/blenderbim/blenderbim/bim/module/augin/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/bcf/__init__.py b/src/blenderbim/blenderbim/bim/module/bcf/__init__.py index c64a01ba66..a6cde8cf30 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/bcf/bcfstore.py b/src/blenderbim/blenderbim/bim/module/bcf/bcfstore.py index 88ec005b3e..d6b829339c 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/bcfstore.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/bcfstore.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -20,6 +19,7 @@ import bcf import bcf.v2.bcfxml + class BcfStore: bcfxml = None diff --git a/src/blenderbim/blenderbim/bim/module/bcf/operator.py b/src/blenderbim/blenderbim/bim/module/bcf/operator.py index 08276a0a33..1ce425c590 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/operator.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -31,6 +30,7 @@ from blenderbim.bim.ifc import IfcStore from math import radians, degrees, atan, tan, cos, sin from mathutils import Vector, Matrix, Euler, geometry + class NewBcfProject(bpy.types.Operator): bl_idname = "bim.new_bcf_project" bl_label = "New BCF Project" @@ -79,7 +79,7 @@ class LoadBcfTopics(bpy.types.Operator): context.scene.BCFProperties.topics.clear() for index, topic_guid in enumerate(bcfxml.topics.keys()): new = context.scene.BCFProperties.topics.add() - bpy.ops.bim.load_bcf_topic(topic_guid = topic_guid, topic_index = index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic_guid, topic_index=index) return {"FINISHED"} @@ -107,7 +107,7 @@ class LoadBcfTopic(bpy.types.Operator): "modified_author": topic.modified_author, "assigned_to": topic.assigned_to, "due_date": topic.due_date, - "description": topic.description + "description": topic.description, } for key, value in data_map.items(): if value is not None: @@ -128,7 +128,7 @@ class LoadBcfTopic(bpy.types.Operator): "type": topic.bim_snippet.snippet_type, "is_external": topic.bim_snippet.is_external, "reference": topic.bim_snippet.reference, - "schema": topic.bim_snippet.reference_schema + "schema": topic.bim_snippet.reference_schema, } for key, value in data_map.items(): if value is not None: @@ -141,7 +141,7 @@ class LoadBcfTopic(bpy.types.Operator): "reference": doc.referenced_document, "description": doc.description, "guid": doc.guid, - "is_external": doc.is_external + "is_external": doc.is_external, } for key, value in data_map.items(): if value is not None: @@ -152,7 +152,7 @@ class LoadBcfTopic(bpy.types.Operator): new_related_topic = new.related_topics.add() new_related_topic.name = related_topic.guid - bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid) + bpy.ops.bim.load_bcf_comments(topic_guid=topic.guid) return {"FINISHED"} @@ -287,11 +287,12 @@ class AddBcfBimSnippet(bpy.types.Operator): @classmethod def poll(cls, context): - return all((getattr(context.scene.BCFProperties, attr, False) for attr in ( - "bim_snippet_reference", - "bim_snippet_schema", - "bim_snippet_type" - ))) + return all( + ( + getattr(context.scene.BCFProperties, attr, False) + for attr in ("bim_snippet_reference", "bim_snippet_schema", "bim_snippet_type") + ) + ) def execute(self, context): bcfxml = bcfstore.BcfStore.get_bcfxml() @@ -303,7 +304,7 @@ class AddBcfBimSnippet(bpy.types.Operator): bim_snippet.reference_schema = props.bim_snippet_schema bim_snippet.snippet_type = props.bim_snippet_type bcfxml.add_bim_snippet(topic, bim_snippet) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) bim_snippet.reference = "" bim_snippet.reference_schema = "" bim_snippet.snippet_type = "" @@ -316,7 +317,7 @@ class AddBcfRelatedTopic(bpy.types.Operator): bl_options = {"REGISTER", "UNDO"} @classmethod - def poll(cls, context): + def poll(cls, context): bcfxml = bcfstore.BcfStore.get_bcfxml() props = context.scene.BCFProperties blender_topic = props.active_topic @@ -347,7 +348,7 @@ class AddBcfRelatedTopic(bpy.types.Operator): topic = bcfxml.topics[blender_topic.name] topic.related_topics.append(related_topic) bcfxml.edit_topic(topic) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) props.related_topic = "" return {"FINISHED"} @@ -516,7 +517,7 @@ class AddBcfReferenceLink(bpy.types.Operator): topic = bcfxml.topics[blender_topic.name] topic.reference_links.append(props.reference_link) bcfxml.edit_topic(topic) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) props.reference_link = "" return {"FINISHED"} @@ -539,7 +540,7 @@ class AddBcfDocumentReference(bpy.types.Operator): document_reference.referenced_document = props.document_reference document_reference.description = props.document_reference_description or None bcfxml.add_document_reference(topic, document_reference) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) props.document_reference = "" props.document_reference_description = "" return {"FINISHED"} @@ -668,7 +669,7 @@ class RemoveBcfDocumentReference(bpy.types.Operator): blender_topic = props.active_topic topic = bcfxml.topics[blender_topic.name] bcfxml.delete_document_reference(topic, self.index) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) return {"FINISHED"} @@ -685,7 +686,7 @@ class RemoveBcfRelatedTopic(bpy.types.Operator): topic = bcfxml.topics[blender_topic.name] del topic.related_topics[self.index] bcfxml.edit_topic(topic) - bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index) + bpy.ops.bim.load_bcf_topic(topic_guid=topic.guid, topic_index=props.active_topic_index) return {"FINISHED"} @@ -701,7 +702,7 @@ class RemoveBcfComment(bpy.types.Operator): blender_topic = props.active_topic topic = bcfxml.topics[blender_topic.name] bcfxml.delete_comment(self.comment_guid, topic) - bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid) + bpy.ops.bim.load_bcf_comments(topic_guid=topic.guid) return {"FINISHED"} @@ -720,7 +721,7 @@ class EditBcfComment(bpy.types.Operator): comment = topic.comments[self.comment_guid] comment.comment = blender_comment.comment bcfxml.edit_comment(comment, topic) - bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid) + bpy.ops.bim.load_bcf_comments(topic_guid=topic.guid) return {"FINISHED"} @@ -750,7 +751,7 @@ class AddBcfComment(bpy.types.Operator): comment.viewpoint = bcf.v2.data.Viewpoint() comment.viewpoint.guid = blender_topic.viewpoints bcfxml.add_comment(topic, comment) - bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid) + bpy.ops.bim.load_bcf_comments(topic_guid=topic.guid) props.comment = "" props.has_related_viewpoint = False return {"FINISHED"} @@ -787,14 +788,12 @@ class ActivateBcfViewpoint(bpy.types.Operator): cam_width = context.scene.render.resolution_x cam_height = context.scene.render.resolution_y cam_aspect = cam_width / cam_height - + if viewpoint.snapshot: obj.data.show_background_images = True obj.data.background_images.clear() background = obj.data.background_images.new() - background.image = bpy.data.images.load( - os.path.join(bcfxml.filepath, topic.guid, viewpoint.snapshot) - ) + background.image = bpy.data.images.load(os.path.join(bcfxml.filepath, topic.guid, viewpoint.snapshot)) src_width = background.image.size[0] src_height = background.image.size[1] src_aspect = src_width / src_height @@ -839,19 +838,25 @@ class ActivateBcfViewpoint(bpy.types.Operator): obj.data.angle = radians(camera.field_of_view) else: # https://blender.stackexchange.com/questions/23431/how-to-set-camera-horizontal-and-vertical-fov - obj.data.angle = 2 * atan((0.5 * cam_height) / (0.5 * cam_width / tan(radians(camera.field_of_view) / 2))) + obj.data.angle = 2 * atan( + (0.5 * cam_height) / (0.5 * cam_width / tan(radians(camera.field_of_view) / 2)) + ) - z_axis = Vector((-camera.camera_direction.x, -camera.camera_direction.y, -camera.camera_direction.z)).normalized() + z_axis = Vector( + (-camera.camera_direction.x, -camera.camera_direction.y, -camera.camera_direction.z) + ).normalized() y_axis = Vector((camera.camera_up_vector.x, camera.camera_up_vector.y, camera.camera_up_vector.z)).normalized() x_axis = y_axis.cross(z_axis).normalized() rotation = Matrix((x_axis, y_axis, z_axis)) rotation.invert() - matrix = np.matrix(( - [x_axis[0], y_axis[0], z_axis[0], camera.camera_view_point.x], - [x_axis[1], y_axis[1], z_axis[1], camera.camera_view_point.y], - [x_axis[2], y_axis[2], z_axis[2], camera.camera_view_point.z], - [0, 0, 0, 1], - )) + matrix = np.matrix( + ( + [x_axis[0], y_axis[0], z_axis[0], camera.camera_view_point.x], + [x_axis[1], y_axis[1], z_axis[1], camera.camera_view_point.y], + [x_axis[2], y_axis[2], z_axis[2], camera.camera_view_point.z], + [0, 0, 0, 1], + ) + ) props = context.scene.BIMGeoreferenceProperties if props.has_blender_offset: unit_scale = ifcopenshell.util.unit.calculate_unit_scale(self.file) @@ -961,7 +966,9 @@ class ActivateBcfViewpoint(bpy.types.Operator): stroke.points.add(len(viewpoint.lines) * 2) coords = [] for l in viewpoint.lines: - coords.extend([l.start_point.x, l.start_point.y, l.start_point.z, l.end_point.x, l.end_point.y, l.end_point.z]) + coords.extend( + [l.start_point.x, l.start_point.y, l.start_point.z, l.end_point.x, l.end_point.y, l.end_point.z] + ) stroke.points.foreach_set("co", coords) def create_clipping_planes(self, viewpoint): @@ -1025,6 +1032,7 @@ class ActivateBcfViewpoint(bpy.types.Operator): t = tuple(int(value[i : i + lv // 3], 16) for i in range(0, lv, lv // 3)) return [t[0] / 255.0, t[1] / 255.0, t[2] / 255.0, 1] + class OpenBcfReferenceLink(bpy.types.Operator): bl_idname = "bim.open_bcf_reference_link" bl_label = "Open BCF Reference Link" diff --git a/src/blenderbim/blenderbim/bim/module/bcf/prop.py b/src/blenderbim/blenderbim/bim/module/bcf/prop.py index 8f20938e64..e24f5adba0 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/prop.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -73,7 +72,7 @@ def updateBcfTopicIsEditable(self, context): def updateBcfCommentIsEditable(self, context): if context.scene.BCFProperties.is_loaded and not self.is_editable: - bpy.ops.bim.edit_bcf_comment(comment_guid = self.name) + bpy.ops.bim.edit_bcf_comment(comment_guid=self.name) def refreshBcfTopic(self, context): @@ -91,7 +90,7 @@ class BcfLabel(PropertyGroup): def getBcfViewpoints(self, context, force_update=False): global bcfviewpoints_enum - if bcfviewpoints_enum is None or force_update: # Retrieving Viewpoints is slow. Make sure we only do when needed + if bcfviewpoints_enum is None or force_update: # Retrieving Viewpoints is slow. Make sure we only do when needed bcfviewpoints_enum = [] props = context.scene.BCFProperties bcfxml = bcfstore.BcfStore.get_bcfxml() diff --git a/src/blenderbim/blenderbim/bim/module/bcf/ui.py b/src/blenderbim/blenderbim/bim/module/bcf/ui.py index dfa8de1aa6..4b1fa8d339 100644 --- a/src/blenderbim/blenderbim/bim/module/bcf/ui.py +++ b/src/blenderbim/blenderbim/bim/module/bcf/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -22,6 +21,7 @@ import bpy from . import bcfstore from bpy.types import Panel + class BIM_PT_bcf(Panel): bl_label = "BCF Project" bl_idname = "BIM_PT_bcf" @@ -231,12 +231,12 @@ class BIM_PT_bcf_metadata(Panel): row.operator("bim.add_bcf_document_reference") layout.label(text="Related Topics:") - for index, related_topic in enumerate(topic.related_topics): + for index, related_topic in enumerate(topic.related_topics): try: row = layout.row(align=True) op = row.operator( - "bim.view_bcf_topic", - text=f"Select {bcfxml.topics[related_topic.name.lower()].title}") + "bim.view_bcf_topic", text=f"Select {bcfxml.topics[related_topic.name.lower()].title}" + ) op.topic_guid = related_topic.name row.operator("bim.remove_bcf_related_topic", icon="X", text="").index = index except KeyError: diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/__init__.py b/src/blenderbim/blenderbim/bim/module/bimtester/__init__.py index a9793f5c5d..0018a98abe 100644 --- a/src/blenderbim/blenderbim/bim/module/bimtester/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/bimtester/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/operator.py b/src/blenderbim/blenderbim/bim/module/bimtester/operator.py index 0f3541e6de..10dc74f20c 100644 --- a/src/blenderbim/blenderbim/bim/module/bimtester/operator.py +++ b/src/blenderbim/blenderbim/bim/module/bimtester/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/prop.py b/src/blenderbim/blenderbim/bim/module/bimtester/prop.py index 1518ea234e..e3b438423b 100644 --- a/src/blenderbim/blenderbim/bim/module/bimtester/prop.py +++ b/src/blenderbim/blenderbim/bim/module/bimtester/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/bimtester/ui.py b/src/blenderbim/blenderbim/bim/module/bimtester/ui.py index af557c77fc..74e6e853fd 100644 --- a/src/blenderbim/blenderbim/bim/module/bimtester/ui.py +++ b/src/blenderbim/blenderbim/bim/module/bimtester/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/boundary/__init__.py b/src/blenderbim/blenderbim/bim/module/boundary/__init__.py index 32c66b3b15..1f65558621 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -20,9 +19,7 @@ import bpy from . import ui -classes = ( - ui.BIM_PT_boundary, -) +classes = (ui.BIM_PT_boundary,) def register(): diff --git a/src/blenderbim/blenderbim/bim/module/boundary/ui.py b/src/blenderbim/blenderbim/bim/module/boundary/ui.py index f401fbdc0b..405f171125 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/ui.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/clash/__init__.py b/src/blenderbim/blenderbim/bim/module/clash/__init__.py index 8dcca175c7..7fc23861f1 100644 --- a/src/blenderbim/blenderbim/bim/module/clash/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/clash/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/clash/operator.py b/src/blenderbim/blenderbim/bim/module/clash/operator.py index 90223e46d4..2b2718ee7a 100644 --- a/src/blenderbim/blenderbim/bim/module/clash/operator.py +++ b/src/blenderbim/blenderbim/bim/module/clash/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -232,9 +231,7 @@ class ExecuteIfcClash(bpy.types.Operator): context.scene.render.resolution_x = 480 context.scene.render.resolution_y = 270 context.scene.render.image_settings.file_format = "PNG" - context.scene.render.filepath = os.path.join( - context.scene.BIMProperties.data_dir, "snapshot.png" - ) + context.scene.render.filepath = os.path.join(context.scene.BIMProperties.data_dir, "snapshot.png") bpy.ops.render.opengl(write_still=True) return context.scene.render.filepath diff --git a/src/blenderbim/blenderbim/bim/module/clash/prop.py b/src/blenderbim/blenderbim/bim/module/clash/prop.py index e721db86ce..f057dcd70c 100644 --- a/src/blenderbim/blenderbim/bim/module/clash/prop.py +++ b/src/blenderbim/blenderbim/bim/module/clash/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/clash/ui.py b/src/blenderbim/blenderbim/bim/module/clash/ui.py index 9b6d021a42..bc2e7994c1 100644 --- a/src/blenderbim/blenderbim/bim/module/clash/ui.py +++ b/src/blenderbim/blenderbim/bim/module/clash/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/classification/__init__.py b/src/blenderbim/blenderbim/bim/module/classification/__init__.py index f03523e884..64d2a29a5a 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/classification/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/classification/operator.py b/src/blenderbim/blenderbim/bim/module/classification/operator.py index 9163d3f06d..1db448c9c7 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/operator.py +++ b/src/blenderbim/blenderbim/bim/module/classification/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/classification/prop.py b/src/blenderbim/blenderbim/bim/module/classification/prop.py index e760b5eb47..4b5c091763 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/prop.py +++ b/src/blenderbim/blenderbim/bim/module/classification/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/classification/ui.py b/src/blenderbim/blenderbim/bim/module/classification/ui.py index cdc6357589..1a03ebf3a5 100644 --- a/src/blenderbim/blenderbim/bim/module/classification/ui.py +++ b/src/blenderbim/blenderbim/bim/module/classification/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/cobie/__init__.py b/src/blenderbim/blenderbim/bim/module/cobie/__init__.py index 55ce5b8358..a1ad500ae2 100644 --- a/src/blenderbim/blenderbim/bim/module/cobie/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/cobie/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/cobie/operator.py b/src/blenderbim/blenderbim/bim/module/cobie/operator.py index 58022975a8..3f1a512116 100644 --- a/src/blenderbim/blenderbim/bim/module/cobie/operator.py +++ b/src/blenderbim/blenderbim/bim/module/cobie/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -69,13 +68,14 @@ class ExecuteIfcCobie(bpy.types.Operator): def execute(self, context): from cobie import IfcCobieParser + props = context.scene.COBieProperties if props.should_load_from_memory: output_dir = tempfile.gettempdir() else: - output_dir = os.path.dirname(props.cobie_ifc_file) - + output_dir = os.path.dirname(props.cobie_ifc_file) + output = os.path.join(output_dir, "output") logger = logging.getLogger("IFCtoCOBie") fh = logging.FileHandler(os.path.join(output_dir, "cobie.log")) @@ -92,10 +92,10 @@ class ExecuteIfcCobie(bpy.types.Operator): parser = IfcCobieParser(logger, selector) ifc_file = IfcStore.get_file() - + if not (ifc_file and props.should_load_from_memory): ifc_file = props.cobie_ifc_file - + parser.parse( ifc_file, props.cobie_types, @@ -122,4 +122,3 @@ class ExecuteIfcCobie(bpy.types.Operator): webbrowser.open("file://" + output_dir) webbrowser.open("file://" + output_dir + "/cobie.log") return {"FINISHED"} - diff --git a/src/blenderbim/blenderbim/bim/module/cobie/prop.py b/src/blenderbim/blenderbim/bim/module/cobie/prop.py index 0eb6788f79..567a0f9960 100644 --- a/src/blenderbim/blenderbim/bim/module/cobie/prop.py +++ b/src/blenderbim/blenderbim/bim/module/cobie/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -37,4 +36,3 @@ class COBieProperties(PropertyGroup): cobie_components: StringProperty(default=".COBie", name="COBie Components") cobie_json_file: StringProperty(default="", name="COBie JSON File") should_load_from_memory: BoolProperty(default=False, name="Load from Memory") - diff --git a/src/blenderbim/blenderbim/bim/module/cobie/ui.py b/src/blenderbim/blenderbim/bim/module/cobie/ui.py index c311e58e26..2ae0179a53 100644 --- a/src/blenderbim/blenderbim/bim/module/cobie/ui.py +++ b/src/blenderbim/blenderbim/bim/module/cobie/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -36,11 +35,10 @@ class BIM_PT_cobie(Panel): scene = context.scene props = scene.COBieProperties - - if IfcStore.get_file(): + if IfcStore.get_file(): row = layout.row() row.prop(props, "should_load_from_memory") - + if not IfcStore.get_file() or not props.should_load_from_memory: row = layout.row(align=True) row.prop(props, "cobie_ifc_file") diff --git a/src/blenderbim/blenderbim/bim/module/constraint/__init__.py b/src/blenderbim/blenderbim/bim/module/constraint/__init__.py index 8469bd48bf..97c7dc78c6 100644 --- a/src/blenderbim/blenderbim/bim/module/constraint/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/constraint/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/constraint/operator.py b/src/blenderbim/blenderbim/bim/module/constraint/operator.py index 567d49b266..e7accd3340 100644 --- a/src/blenderbim/blenderbim/bim/module/constraint/operator.py +++ b/src/blenderbim/blenderbim/bim/module/constraint/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/constraint/prop.py b/src/blenderbim/blenderbim/bim/module/constraint/prop.py index 3bd87458ec..aea987c4a7 100644 --- a/src/blenderbim/blenderbim/bim/module/constraint/prop.py +++ b/src/blenderbim/blenderbim/bim/module/constraint/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/constraint/ui.py b/src/blenderbim/blenderbim/bim/module/constraint/ui.py index 5264196e75..27aced601b 100644 --- a/src/blenderbim/blenderbim/bim/module/constraint/ui.py +++ b/src/blenderbim/blenderbim/bim/module/constraint/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -105,7 +104,7 @@ class BIM_PT_object_constraints(Panel): constraint = Data.objectives[constraint_id] icon = "LIGHT" except: - pass # Metric not implemented + pass # Metric not implemented row = self.layout.row(align=True) row.label(text=constraint.get("Name") or "Unnamed") row.operator("bim.unassign_constraint", text="", icon="X").constraint = constraint_id diff --git a/src/blenderbim/blenderbim/bim/module/context/__init__.py b/src/blenderbim/blenderbim/bim/module/context/__init__.py index f4fbdab85e..7577e1d78d 100644 --- a/src/blenderbim/blenderbim/bim/module/context/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/context/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/context/operator.py b/src/blenderbim/blenderbim/bim/module/context/operator.py index 263967f774..9417865eb8 100644 --- a/src/blenderbim/blenderbim/bim/module/context/operator.py +++ b/src/blenderbim/blenderbim/bim/module/context/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/context/ui.py b/src/blenderbim/blenderbim/bim/module/context/ui.py index 614795bb8d..3cdc87be29 100644 --- a/src/blenderbim/blenderbim/bim/module/context/ui.py +++ b/src/blenderbim/blenderbim/bim/module/context/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/cost/__init__.py b/src/blenderbim/blenderbim/bim/module/cost/__init__.py index fce0105e0a..c431d481b1 100644 --- a/src/blenderbim/blenderbim/bim/module/cost/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/cost/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/cost/ui.py b/src/blenderbim/blenderbim/bim/module/cost/ui.py index 5eecac9d49..71f060ccf4 100644 --- a/src/blenderbim/blenderbim/bim/module/cost/ui.py +++ b/src/blenderbim/blenderbim/bim/module/cost/ui.py @@ -463,6 +463,7 @@ class BIM_PT_cost_item_quantities(Panel): row2 = col.row() row2.prop(self.props, "resource_quantity_names", text="") + class BIM_PT_cost_item_rates(Panel): bl_label = "IFC Cost Item Rates" bl_idname = "BIM_PT_cost_item_rates" diff --git a/src/blenderbim/blenderbim/bim/module/covetool/__init__.py b/src/blenderbim/blenderbim/bim/module/covetool/__init__.py index 837f9b8382..5a51292ed5 100644 --- a/src/blenderbim/blenderbim/bim/module/covetool/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/covetool/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/covetool/api.py b/src/blenderbim/blenderbim/bim/module/covetool/api.py index d52e332b09..cff6937d26 100644 --- a/src/blenderbim/blenderbim/bim/module/covetool/api.py +++ b/src/blenderbim/blenderbim/bim/module/covetool/api.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/covetool/operator.py b/src/blenderbim/blenderbim/bim/module/covetool/operator.py index 10820227c6..e035063b9e 100644 --- a/src/blenderbim/blenderbim/bim/module/covetool/operator.py +++ b/src/blenderbim/blenderbim/bim/module/covetool/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/covetool/prop.py b/src/blenderbim/blenderbim/bim/module/covetool/prop.py index 018cac6566..68ad2188a0 100644 --- a/src/blenderbim/blenderbim/bim/module/covetool/prop.py +++ b/src/blenderbim/blenderbim/bim/module/covetool/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/covetool/ui.py b/src/blenderbim/blenderbim/bim/module/covetool/ui.py index d5a91d578c..e67e654caf 100644 --- a/src/blenderbim/blenderbim/bim/module/covetool/ui.py +++ b/src/blenderbim/blenderbim/bim/module/covetool/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/csv/__init__.py b/src/blenderbim/blenderbim/bim/module/csv/__init__.py index 24722c9420..238b4698cb 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/csv/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -32,11 +31,9 @@ classes = ( ) - def register(): bpy.types.Scene.CsvProperties = bpy.props.PointerProperty(type=prop.CsvProperties) def unregister(): del bpy.types.Scene.CsvProperties - diff --git a/src/blenderbim/blenderbim/bim/module/csv/operator.py b/src/blenderbim/blenderbim/bim/module/csv/operator.py index e9f9c0739c..e5f248821c 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/operator.py +++ b/src/blenderbim/blenderbim/bim/module/csv/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/csv/prop.py b/src/blenderbim/blenderbim/bim/module/csv/prop.py index f1e0dc93f0..39418d754c 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/prop.py +++ b/src/blenderbim/blenderbim/bim/module/csv/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/csv/ui.py b/src/blenderbim/blenderbim/bim/module/csv/ui.py index 347877f616..819401c612 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/ui.py +++ b/src/blenderbim/blenderbim/bim/module/csv/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/debug/__init__.py b/src/blenderbim/blenderbim/bim/module/debug/__init__.py index 9406090275..11c6a2d54d 100644 --- a/src/blenderbim/blenderbim/bim/module/debug/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/debug/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/debug/operator.py b/src/blenderbim/blenderbim/bim/module/debug/operator.py index 7ef5b31b99..adcfd3a44a 100644 --- a/src/blenderbim/blenderbim/bim/module/debug/operator.py +++ b/src/blenderbim/blenderbim/bim/module/debug/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -164,9 +163,11 @@ class SelectHighPolygonMeshes(bpy.types.Operator): bl_options = {"REGISTER", "UNDO"} def execute(self, context): - [o.select_set(True) for o in context.view_layer.objects - if o.type == "MESH" - and len(o.data.polygons) > context.scene.BIMDebugProperties.number_of_polygons] + [ + o.select_set(True) + for o in context.view_layer.objects + if o.type == "MESH" and len(o.data.polygons) > context.scene.BIMDebugProperties.number_of_polygons + ] return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/debug/prop.py b/src/blenderbim/blenderbim/bim/module/debug/prop.py index 49369f4ff0..2257fa1e52 100644 --- a/src/blenderbim/blenderbim/bim/module/debug/prop.py +++ b/src/blenderbim/blenderbim/bim/module/debug/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/debug/ui.py b/src/blenderbim/blenderbim/bim/module/debug/ui.py index 68ce199db7..ea14629b81 100644 --- a/src/blenderbim/blenderbim/bim/module/debug/ui.py +++ b/src/blenderbim/blenderbim/bim/module/debug/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/diff/__init__.py b/src/blenderbim/blenderbim/bim/module/diff/__init__.py index a296d69a9e..02c9fbda20 100644 --- a/src/blenderbim/blenderbim/bim/module/diff/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/diff/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -31,11 +30,9 @@ classes = ( ) - def register(): bpy.types.Scene.DiffProperties = bpy.props.PointerProperty(type=prop.DiffProperties) def unregister(): del bpy.types.Scene.DiffProperties - diff --git a/src/blenderbim/blenderbim/bim/module/diff/operator.py b/src/blenderbim/blenderbim/bim/module/diff/operator.py index 8befc8e1c2..574c79a1b7 100644 --- a/src/blenderbim/blenderbim/bim/module/diff/operator.py +++ b/src/blenderbim/blenderbim/bim/module/diff/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -24,7 +23,6 @@ import json from blenderbim.bim.ifc import IfcStore - class SelectDiffJsonFile(bpy.types.Operator): bl_idname = "bim.select_diff_json_file" bl_label = "Select Diff JSON File" @@ -46,8 +44,8 @@ class VisualiseDiff(bpy.types.Operator): bl_options = {"REGISTER", "UNDO"} def execute(self, context): - #ifc_file = IfcStore.get_file() # In case we get from Store - ifc_file = ifcopenshell.open(context.scene.DiffProperties.diff_new_file) # for Now refer to the new file + # ifc_file = IfcStore.get_file() # In case we get from Store + ifc_file = ifcopenshell.open(context.scene.DiffProperties.diff_new_file) # for Now refer to the new file with open(context.scene.DiffProperties.diff_json_file, "r") as file: diff = json.load(file) for obj in context.visible_objects: diff --git a/src/blenderbim/blenderbim/bim/module/diff/prop.py b/src/blenderbim/blenderbim/bim/module/diff/prop.py index 6233a02a9a..1ae467c960 100644 --- a/src/blenderbim/blenderbim/bim/module/diff/prop.py +++ b/src/blenderbim/blenderbim/bim/module/diff/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/diff/ui.py b/src/blenderbim/blenderbim/bim/module/diff/ui.py index 9cfbd3efde..525455329c 100644 --- a/src/blenderbim/blenderbim/bim/module/diff/ui.py +++ b/src/blenderbim/blenderbim/bim/module/diff/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/document/__init__.py b/src/blenderbim/blenderbim/bim/module/document/__init__.py index 6d1a6ab13e..edfe7a60ef 100644 --- a/src/blenderbim/blenderbim/bim/module/document/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/document/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/document/operator.py b/src/blenderbim/blenderbim/bim/module/document/operator.py index ac13c55590..a81a053524 100644 --- a/src/blenderbim/blenderbim/bim/module/document/operator.py +++ b/src/blenderbim/blenderbim/bim/module/document/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/document/prop.py b/src/blenderbim/blenderbim/bim/module/document/prop.py index e93fc291d9..a470e715ae 100644 --- a/src/blenderbim/blenderbim/bim/module/document/prop.py +++ b/src/blenderbim/blenderbim/bim/module/document/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/document/ui.py b/src/blenderbim/blenderbim/bim/module/document/ui.py index e13e2fcb95..2eb5e8b482 100644 --- a/src/blenderbim/blenderbim/bim/module/document/ui.py +++ b/src/blenderbim/blenderbim/bim/module/document/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py index a100f5fc1a..b24d93f953 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py index 965b0d79b4..085be95aa1 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Maxim Vasilyev # @@ -171,16 +170,14 @@ class Annotator: camera = context.scene.camera z_offset = camera.matrix_world.to_quaternion() @ Vector((0, 0, -1)) if context.scene.render.resolution_x > context.scene.render.resolution_y: - y = ( - camera.data.ortho_scale - * (context.scene.render.resolution_y / context.scene.render.resolution_x) - / 4 - ) + y = camera.data.ortho_scale * (context.scene.render.resolution_y / context.scene.render.resolution_x) / 4 else: y = camera.data.ortho_scale / 4 y_offset = camera.matrix_world.to_quaternion() @ Vector((0, y, 0)) - x_offset = camera.matrix_world.to_quaternion() @ Vector((y/2, 0, 0)) - return (camera.location + z_offset, - camera.location + z_offset + y_offset, - camera.location + z_offset + x_offset, - camera.location + z_offset + x_offset + y_offset) + x_offset = camera.matrix_world.to_quaternion() @ Vector((y / 2, 0, 0)) + return ( + camera.location + z_offset, + camera.location + z_offset + y_offset, + camera.location + z_offset + x_offset, + camera.location + z_offset + x_offset + y_offset, + ) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py index 66db9bf261..1e17b5e9f9 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Maxim Vasilyev # @@ -35,7 +34,7 @@ from gpu_extras.batch import batch_for_shader import blenderbim.bim.module.drawing.helper as helper -class BaseDecorator(): +class BaseDecorator: # base name of objects to decorate basename = "IfcAnnotation/Something" @@ -128,10 +127,12 @@ class BaseDecorator(): def __init__(self): # NB: libcode param doesn't work - self.shader = GPUShader(vertexcode=self.VERT_GLSL, - fragcode=self.FRAG_GLSL, - geocode=self.LIB_GLSL + self.GEOM_GLSL, - defines=self.DEF_GLSL) + self.shader = GPUShader( + vertexcode=self.VERT_GLSL, + fragcode=self.FRAG_GLSL, + geocode=self.LIB_GLSL + self.GEOM_GLSL, + defines=self.DEF_GLSL, + ) def get_objects(self, collection): """find relevant objects @@ -172,7 +173,7 @@ class BaseDecorator(): topology.append(1) topology.extend([0] * max(0, cnt - 2)) topology.append(2) - indices.extend((idx+i, idx+i+1) for i in range(cnt-1)) + indices.extend((idx + i, idx + i + 1) for i in range(cnt - 1)) idx += cnt return vertices, indices, topology @@ -192,8 +193,7 @@ class BaseDecorator(): return vertices, indices def get_editmesh_geom(self, obj): - """Parses editmode mesh geometry into line segments - """ + """Parses editmode mesh geometry into line segments""" mesh = bmesh.from_edit_mesh(obj.data) vertices = [] indices = [] @@ -201,7 +201,7 @@ class BaseDecorator(): for edge in mesh.edges: vertices.extend(edge.verts) - indices.append((idx, idx+1)) + indices.append((idx, idx + 1)) idx += 2 vertices = [obj.matrix_world @ v.co for v in vertices] @@ -217,18 +217,18 @@ class BaseDecorator(): color = context.scene.DocProperties.decorations_colour fmt = GPUVertFormat() - fmt.attr_add(id="pos", comp_type='F32', len=3, fetch_mode='FLOAT') + fmt.attr_add(id="pos", comp_type="F32", len=3, fetch_mode="FLOAT") if topology: - fmt.attr_add(id="topo", comp_type='U8', len=1, fetch_mode='INT') + fmt.attr_add(id="topo", comp_type="U8", len=1, fetch_mode="INT") vbo = GPUVertBuf(len=len(vertices), format=fmt) vbo.attr_fill(id="pos", data=vertices) if topology: vbo.attr_fill(id="topo", data=topology) - ibo = GPUIndexBuf(type='LINES', seq=indices) + ibo = GPUIndexBuf(type="LINES", seq=indices) - batch = GPUBatch(type='LINES', buf=vbo, elem=ibo) + batch = GPUBatch(type="LINES", buf=vbo, elem=ibo) bgl.glEnable(bgl.GL_LINE_SMOOTH) bgl.glHint(bgl.GL_LINE_SMOOTH_HINT, bgl.GL_NICEST) @@ -289,7 +289,7 @@ class BaseDecorator(): def format_value(self, context, value): unit_system = context.scene.unit_settings.system - if unit_system == 'IMPERIAL': + if unit_system == "IMPERIAL": precision = context.scene.BIMProperties.imperial_precision if precision == "NONE": precision = 256 @@ -297,12 +297,12 @@ class BaseDecorator(): precision = 1 elif "/" in precision: precision = int(precision.split("/")[1]) - elif unit_system == 'METRIC': + elif unit_system == "METRIC": precision = 3 else: return - return bpy.utils.units.to_string(unit_system, 'LENGTH', value, precision, split_unit=True) + return bpy.utils.units.to_string(unit_system, "LENGTH", value, precision, split_unit=True) class DimensionDecorator(BaseDecorator): @@ -310,12 +310,16 @@ class DimensionDecorator(BaseDecorator): - each edge of a segment with arrow - puts metric text next to each segment """ + basename = "IfcAnnotation/Dimension" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define ARROW_ANGLE PI / 12.0 #define ARROW_SIZE 16.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -392,7 +396,7 @@ class DimensionDecorator(BaseDecorator): continue length = (v1 - v0).length text = self.format_value(context, length) - self.draw_label(context, text, p0 + (dir) * .5, dir) + self.draw_label(context, text, p0 + (dir) * 0.5, dir) class EqualityDecorator(DimensionDecorator): @@ -401,6 +405,7 @@ class EqualityDecorator(DimensionDecorator): - augments with arrows on both sides - puts 'EQ' label """ + basename = "IfcAnnotation/Equal" def draw_labels(self, context, obj, vertices, indices): @@ -414,7 +419,7 @@ class EqualityDecorator(DimensionDecorator): dir = p1 - p0 if dir.length < 1: continue - self.draw_label(context, "EQ", p0 + (dir) * .5, dir) + self.draw_label(context, "EQ", p0 + (dir) * 0.5, dir) class LeaderDecorator(BaseDecorator): @@ -422,12 +427,16 @@ class LeaderDecorator(BaseDecorator): - head point with arrow - middle points w/out decorations """ + basename = "IfcAnnotation/Leader" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define ARROW_ANGLE PI / 12.0 #define ARROW_SIZE 16.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -490,13 +499,17 @@ class StairDecorator(BaseDecorator): - tail point with circle - middle points w/out decorations """ + basename = "IfcAnnotation/Stair" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define CIRCLE_SIZE 8.0 #define ARROW_ANGLE PI / 3.0 #define ARROW_SIZE 24.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -572,10 +585,13 @@ class StairDecorator(BaseDecorator): class HiddenDecorator(BaseDecorator): basename = "IfcAnnotation/Hidden" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define DASH_SIZE 16.0 #define DASH_PATTERN 0x0000FFFFU """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -639,7 +655,6 @@ class MiscDecorator(HiddenDecorator): class LevelDecorator(BaseDecorator): - def get_splines(self, obj): """Iterates through splines Args: @@ -664,10 +679,13 @@ class LevelDecorator(BaseDecorator): class PlanLevelDecorator(LevelDecorator): basename = "IfcAnnotation/Plan Level" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define CIRCLE_SIZE 8.0 #define CROSS_SIZE 16.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -746,10 +764,13 @@ class PlanLevelDecorator(LevelDecorator): class SectionLevelDecorator(LevelDecorator): basename = "IfcAnnotation/Section Level" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define CALLOUT_GAP 8.0 #define CALLOUT_SIZE 64.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -828,12 +849,16 @@ class BreakDecorator(BaseDecorator): Uses first two vertices in verts list. """ + basename = "IfcAnnotation/Break" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define BREAK_LENGTH 32.0 #define BREAK_WIDTH 16.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -905,11 +930,14 @@ class BreakDecorator(BaseDecorator): class GridDecorator(BaseDecorator): basename = "IfcGridAxis/" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define CIRCLE_SIZE 16.0 #define DASH_SIZE 48.0 #define DASH_PATTERN 0x03C0FFFFU """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -1019,11 +1047,14 @@ class GridDecorator(BaseDecorator): class SectionViewDecorator(LevelDecorator): basename = "IfcAnnotation/Section" - DEF_GLSL = BaseDecorator.DEF_GLSL + """ + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ #define CIRCLE_SIZE 8.0 #define TRIANGLE_L 32.0 #define TRIANGLE_W 16.0 """ + ) GEOM_GLSL = """ uniform vec2 winsize; @@ -1118,7 +1149,7 @@ class SectionViewDecorator(LevelDecorator): self.draw_lines(context, obj, verts, [(0, 1)]) -class DecorationsHandler(): +class DecorationsHandler: decorators_classes = [ DimensionDecorator, EqualityDecorator, @@ -1130,7 +1161,7 @@ class DecorationsHandler(): SectionLevelDecorator, StairDecorator, BreakDecorator, - SectionViewDecorator + SectionViewDecorator, ] installed = None @@ -1140,12 +1171,12 @@ class DecorationsHandler(): if cls.installed: cls.uninstall() handler = cls() - cls.installed = SpaceView3D.draw_handler_add(handler, (context,), 'WINDOW', 'POST_PIXEL') + cls.installed = SpaceView3D.draw_handler_add(handler, (context,), "WINDOW", "POST_PIXEL") @classmethod def uninstall(cls): try: - SpaceView3D.draw_handler_remove(cls.installed, 'WINDOW') + SpaceView3D.draw_handler_remove(cls.installed, "WINDOW") except ValueError: pass cls.installed = None diff --git a/src/blenderbim/blenderbim/bim/module/drawing/gizmos.py b/src/blenderbim/blenderbim/bim/module/drawing/gizmos.py index 76fa8e3736..3bc7124fe1 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/gizmos.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/gizmos.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Maxim Vasilyev # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/handler.py b/src/blenderbim/blenderbim/bim/module/drawing/handler.py index 1c6fff0512..27ea862264 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/handler.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/handler.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/helper.py b/src/blenderbim/blenderbim/bim/module/drawing/helper.py index e7a1c9ad19..e00ef1a5f6 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/helper.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/helper.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 4722eb11a9..ee0eec8ac1 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -125,15 +124,19 @@ class CreateDrawing(bpy.types.Operator): - IFC file is created - Camera is in Orthographic mode """ + bl_idname = "bim.create_drawing" bl_label = "Create Drawing" @classmethod def poll(cls, context): camera = context.scene.camera - return IfcStore.get_file() \ - and camera.type == "CAMERA" and camera.data.type == "ORTHO" \ + return ( + IfcStore.get_file() + and camera.type == "CAMERA" + and camera.data.type == "ORTHO" and camera.BIMObjectProperties.ifc_definition_id + ) def execute(self, context): self.camera = context.scene.camera @@ -568,9 +571,7 @@ class OpenSheet(bpy.types.Operator): props = context.scene.DocProperties open_with_user_command( context.preferences.addons["blenderbim"].preferences.svg_command, - os.path.join( - context.scene.BIMProperties.data_dir, "sheets", props.active_sheet.name + ".svg" - ), + os.path.join(context.scene.BIMProperties.data_dir, "sheets", props.active_sheet.name + ".svg"), ) return {"FINISHED"} @@ -661,6 +662,7 @@ class OpenView(bpy.types.Operator): class OpenViewCamera(bpy.types.Operator): """Select this drawing's camera object and expand its drawing properties""" + bl_idname = "bim.open_view_camera" bl_label = "Open View Camera" bl_options = {"REGISTER", "UNDO"} @@ -947,9 +949,7 @@ class ActivateDrawingStyle(bpy.types.Operator): def execute(self, context): scene = context.scene - if scene.camera.data.BIMCameraProperties.active_drawing_style_index < len( - scene.DocProperties.drawing_styles - ): + if scene.camera.data.BIMCameraProperties.active_drawing_style_index < len(scene.DocProperties.drawing_styles): self.drawing_style = scene.DocProperties.drawing_styles[ scene.camera.data.BIMCameraProperties.active_drawing_style_index ] @@ -1265,7 +1265,7 @@ class AddSectionsAnnotations(bpy.types.Operator): bl_options = {"REGISTER", "UNDO"} @classmethod - def poll(cls, context): + def poll(cls, context): camera = helper.get_active_drawing(context.scene)[1] return camera and camera.data.type == "ORTHO" diff --git a/src/blenderbim/blenderbim/bim/module/drawing/prop.py b/src/blenderbim/blenderbim/bim/module/drawing/prop.py index 150d800e32..5a07c570a1 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/prop.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -271,16 +270,17 @@ class DocProperties(PropertyGroup): @property def active_schedule(self): - return self.schedules[self.active_schedule_index] - + return self.schedules[self.active_schedule_index] + @property def active_drawing(self): - return self.drawings[self.active_drawing_index] - + return self.drawings[self.active_drawing_index] + @property def active_sheet(self): return self.sheets[self.active_sheet_index] + class BIMCameraProperties(PropertyGroup): view_name: StringProperty(name="View Name") target_view: EnumProperty( diff --git a/src/blenderbim/blenderbim/bim/module/drawing/scheduler.py b/src/blenderbim/blenderbim/bim/module/drawing/scheduler.py index 902324e6b0..e25e49a835 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/scheduler.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/scheduler.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -27,7 +26,11 @@ from odf.style import Style class Scheduler: def schedule(self, infile, outfile): - self.svg = svgwrite.Drawing(outfile, debug=False, id="root",) + self.svg = svgwrite.Drawing( + outfile, + debug=False, + id="root", + ) self.padding = 1 self.margin = 1 doc = load(infile) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/shaders.py b/src/blenderbim/blenderbim/bim/module/drawing/shaders.py index efdb915edb..384b8a0917 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/shaders.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/shaders.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Maxim Vasilyev # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py index 901771ddea..9d705c195b 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py index e00dc0c84f..c048c40800 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -45,7 +44,7 @@ class External(svgwrite.container.Group): self.xml = xml # Remove namespace - ns = u"{http://www.w3.org/2000/svg}" + ns = "{http://www.w3.org/2000/svg}" nsl = len(ns) for elem in self.xml.iter(): if elem.tag.startswith(ns): @@ -123,12 +122,12 @@ class SvgWriter: self.svg.add( self.svg.image( os.path.join("..", "diagrams", os.path.basename(self.background_image)), - **{"width": self.width, "height": self.height} + **{"width": self.width, "height": self.height}, ) ) def draw_background_elements(self): - return # TODO purge? + return # TODO purge? for element in self.ifc_cutter.background_elements: if element["type"] == "polygon": self.draw_polygon(element, "background") @@ -180,7 +179,7 @@ class SvgWriter: "text-anchor": "middle", "alignment-baseline": "middle", "dominant-baseline": "middle", - } + }, ) ) self.svg.add( @@ -193,7 +192,7 @@ class SvgWriter: "text-anchor": "middle", "alignment-baseline": "middle", "dominant-baseline": "middle", - } + }, ) ) @@ -252,7 +251,7 @@ class SvgWriter: "text-anchor": text_anchor, "alignment-baseline": "baseline", "dominant-baseline": "baseline", - } + }, ) ) @@ -294,7 +293,7 @@ class SvgWriter: "text-anchor": "start", "alignment-baseline": "baseline", "dominant-baseline": "baseline", - } + }, ) ) @@ -325,7 +324,7 @@ class SvgWriter: "text-anchor": "middle", "alignment-baseline": "middle", "dominant-baseline": "middle", - } + }, ) ) self.draw_text_annotations() @@ -473,7 +472,9 @@ class SvgWriter: ) transform = "rotate({}, {}, {})".format( - angle, (text_position * self.scale)[0], (text_position * self.scale)[1], + angle, + (text_position * self.scale)[0], + (text_position * self.scale)[1], ) if text_obj.data.BIMTextProperties.symbol != "None": @@ -516,7 +517,7 @@ class SvgWriter: "alignment-baseline": alignment_baseline, "dominant-baseline": alignment_baseline, "transform": transform, - } + }, ) ) @@ -607,7 +608,7 @@ class SvgWriter: "font-size": annotation.Annotator.get_svg_text_size(2.5), "font-family": "OpenGost Type B TT", "text-anchor": "middle", - } + }, ) ) @@ -623,7 +624,7 @@ class SvgWriter: return spline.bezier_points if spline.bezier_points else spline.points def draw_cut_polygons(self): - return # deprecate? + return # deprecate? for polygon in self.ifc_cutter.cut_polygons: self.draw_polygon(polygon, "cut") diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py index 2662e885ec..fbfb5ea455 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -150,7 +149,6 @@ class BIM_PT_drawing_underlay(Panel): row.operator("bim.activate_drawing_style") - class BIM_PT_drawings(Panel): bl_label = "SVG Drawings" bl_idname = "BIM_PT_drawings" diff --git a/src/blenderbim/blenderbim/bim/module/geometry/__init__.py b/src/blenderbim/blenderbim/bim/module/geometry/__init__.py index 61cf9906d3..70a06345b6 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/geometry/helper.py b/src/blenderbim/blenderbim/bim/module/geometry/helper.py index d27582d8b6..1fd3ab338c 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/helper.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/helper.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index c6fe918272..565dce4095 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/geometry/prop.py b/src/blenderbim/blenderbim/bim/module/geometry/prop.py index f120f57282..289a81a6ea 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/prop.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/geometry/ui.py b/src/blenderbim/blenderbim/bim/module/geometry/ui.py index b05acc8d03..0888ef27a5 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/ui.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -91,12 +90,12 @@ class BIM_PT_mesh(Panel): row = layout.row(align=True) op = row.operator("bim.switch_representation", text="Bake Voids", icon="SELECT_SUBTRACT") - op.should_switch_all_meshes=True + op.should_switch_all_meshes = True op.should_reload = True op.ifc_definition_id = props.ifc_definition_id op.disable_opening_subtractions = False op = row.operator("bim.switch_representation", text="Dynamic Voids", icon="SELECT_INTERSECT") - op.should_switch_all_meshes=True + op.should_switch_all_meshes = True op.should_reload = True op.ifc_definition_id = props.ifc_definition_id op.disable_opening_subtractions = True diff --git a/src/blenderbim/blenderbim/bim/module/georeference/__init__.py b/src/blenderbim/blenderbim/bim/module/georeference/__init__.py index babbbc870d..7d644a30df 100644 --- a/src/blenderbim/blenderbim/bim/module/georeference/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/georeference/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/georeference/prop.py b/src/blenderbim/blenderbim/bim/module/georeference/prop.py index 00421994de..b85cb01275 100644 --- a/src/blenderbim/blenderbim/bim/module/georeference/prop.py +++ b/src/blenderbim/blenderbim/bim/module/georeference/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -36,8 +35,8 @@ class BIMGeoreferenceProperties(PropertyGroup): is_editing: BoolProperty(name="Is Editing") map_conversion: CollectionProperty(name="Map Conversion", type=Attribute) projected_crs: CollectionProperty(name="Projected CRS", type=Attribute) - coordinate_input: StringProperty(name="Coordinate Input", description="Formatted \"x,y,z\" (without quotes)") - coordinate_output: StringProperty(name="Coordinate Output", description="Formatted \"x,y,z\" (without quotes)") + coordinate_input: StringProperty(name="Coordinate Input", description='Formatted "x,y,z" (without quotes)') + coordinate_output: StringProperty(name="Coordinate Output", description='Formatted "x,y,z" (without quotes)') has_blender_offset: BoolProperty(name="Has Blender Offset") blender_eastings: StringProperty(name="Blender Eastings", default="0") blender_northings: StringProperty(name="Blender Northings", default="0") diff --git a/src/blenderbim/blenderbim/bim/module/georeference/ui.py b/src/blenderbim/blenderbim/bim/module/georeference/ui.py index 9e895d36c1..19b1a8b728 100644 --- a/src/blenderbim/blenderbim/bim/module/georeference/ui.py +++ b/src/blenderbim/blenderbim/bim/module/georeference/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/group/__init__.py b/src/blenderbim/blenderbim/bim/module/group/__init__.py index 0bea604778..ddfc4ff48c 100644 --- a/src/blenderbim/blenderbim/bim/module/group/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/group/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/group/operator.py b/src/blenderbim/blenderbim/bim/module/group/operator.py index 885df4c2ae..fdf7548826 100644 --- a/src/blenderbim/blenderbim/bim/module/group/operator.py +++ b/src/blenderbim/blenderbim/bim/module/group/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/group/prop.py b/src/blenderbim/blenderbim/bim/module/group/prop.py index 590d2efd85..03011af513 100644 --- a/src/blenderbim/blenderbim/bim/module/group/prop.py +++ b/src/blenderbim/blenderbim/bim/module/group/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/group/ui.py b/src/blenderbim/blenderbim/bim/module/group/ui.py index 4142ab0db2..a806564db5 100644 --- a/src/blenderbim/blenderbim/bim/module/group/ui.py +++ b/src/blenderbim/blenderbim/bim/module/group/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/layer/__init__.py b/src/blenderbim/blenderbim/bim/module/layer/__init__.py index 136e70fa88..80cedcd07c 100644 --- a/src/blenderbim/blenderbim/bim/module/layer/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/layer/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/layer/operator.py b/src/blenderbim/blenderbim/bim/module/layer/operator.py index 2e90fcc583..2c20351d20 100644 --- a/src/blenderbim/blenderbim/bim/module/layer/operator.py +++ b/src/blenderbim/blenderbim/bim/module/layer/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/layer/prop.py b/src/blenderbim/blenderbim/bim/module/layer/prop.py index 61c310bdb2..c9c0c1fd28 100644 --- a/src/blenderbim/blenderbim/bim/module/layer/prop.py +++ b/src/blenderbim/blenderbim/bim/module/layer/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/layer/ui.py b/src/blenderbim/blenderbim/bim/module/layer/ui.py index 542556adca..1508f370d4 100644 --- a/src/blenderbim/blenderbim/bim/module/layer/ui.py +++ b/src/blenderbim/blenderbim/bim/module/layer/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/lca/prop.py b/src/blenderbim/blenderbim/bim/module/lca/prop.py index 90c3b77f9d..d612b3c666 100644 --- a/src/blenderbim/blenderbim/bim/module/lca/prop.py +++ b/src/blenderbim/blenderbim/bim/module/lca/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -45,9 +44,7 @@ def get_product_systems(self, context): if not len(productsystems_enum): client = olca.Client(context.preferences.addons["blenderbim"].preferences.openlca_port) try: - productsystems_enum = [ - (ps.name, ps.name, "") for ps in client.get_all(olca.ProductSystem) - ] + productsystems_enum = [(ps.name, ps.name, "") for ps in client.get_all(olca.ProductSystem)] except: pass return productsystems_enum diff --git a/src/blenderbim/blenderbim/bim/module/material/__init__.py b/src/blenderbim/blenderbim/bim/module/material/__init__.py index ea1ff8cd0d..aac236d890 100644 --- a/src/blenderbim/blenderbim/bim/module/material/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/material/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py index b9212cf120..d72b86bbe8 100644 --- a/src/blenderbim/blenderbim/bim/module/material/operator.py +++ b/src/blenderbim/blenderbim/bim/module/material/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/material/prop.py b/src/blenderbim/blenderbim/bim/module/material/prop.py index 9412dfe35a..660303d471 100644 --- a/src/blenderbim/blenderbim/bim/module/material/prop.py +++ b/src/blenderbim/blenderbim/bim/module/material/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -69,10 +68,12 @@ def getParameterizedProfileClasses(self, context): for t in IfcStore.get_schema().declaration_by_name("IfcParameterizedProfileDef").subtypes() ] for ifc_class in parameterizedprofileclasses_enum: - parameterizedprofileclasses_enum.extend([ - (t.name(), t.name(), "") - for t in IfcStore.get_schema().declaration_by_name(ifc_class[0]).subtypes() or [] - ]) + parameterizedprofileclasses_enum.extend( + [ + (t.name(), t.name(), "") + for t in IfcStore.get_schema().declaration_by_name(ifc_class[0]).subtypes() or [] + ] + ) return parameterizedprofileclasses_enum @@ -111,7 +112,9 @@ class BIMObjectMaterialProperties(PropertyGroup): material_set_attributes: CollectionProperty(name="Material Set Attributes", type=Attribute) active_material_set_item_id: IntProperty(name="Active Material Set ID") material_set_item_attributes: CollectionProperty(name="Material Set Item Attributes", type=Attribute) - material_set_item_profile_attributes: CollectionProperty(name="Material Set Item Profile Attributes", type=Attribute) + material_set_item_profile_attributes: CollectionProperty( + name="Material Set Item Profile Attributes", type=Attribute + ) material_set_item_material: EnumProperty(items=getMaterials, name="Material") profile_classes: EnumProperty(items=getProfileClasses, name="Profile Classes") parameterized_profile_classes: EnumProperty( diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py index b0101ae014..d89f48a2ac 100644 --- a/src/blenderbim/blenderbim/bim/module/material/ui.py +++ b/src/blenderbim/blenderbim/bim/module/material/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/__init__.py b/src/blenderbim/blenderbim/bim/module/model/__init__.py index f1698528bb..00f3ab557c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/model/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/door.py b/src/blenderbim/blenderbim/bim/module/model/door.py index 197f1e6400..fb89e134e6 100644 --- a/src/blenderbim/blenderbim/bim/module/model/door.py +++ b/src/blenderbim/blenderbim/bim/module/model/door.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -30,7 +29,7 @@ def add_object(self, context): guid = ifcopenshell.guid.new() leaf_width = self.overall_width - 0.045 - 0.045 # TODO reimplement 2D. See #1222. - #verts = [ + # verts = [ # # Left lining # Vector((0, 0, 0)), # Vector((0, self.depth, 0)), @@ -50,8 +49,8 @@ def add_object(self, context): # Vector((0.045, self.depth + leaf_width, 0)), # Vector((0.080, self.depth + leaf_width, 0)), # Vector((0.080, self.depth, 0)), - #] - #edges = [ + # ] + # edges = [ # [0, 1], # [1, 2], # [2, 3], @@ -66,9 +65,9 @@ def add_object(self, context): # [13, 14], # [14, 15], # [15, 12], # Door panel - #] + # ] ## Door swing - #for i in range(0, 9): + # for i in range(0, 9): # verts.append( # Vector( # ( @@ -79,11 +78,11 @@ def add_object(self, context): # ) # ) # edges.append([16 + i, 17 + i]) - #edges.pop() - #faces = [] - #mesh = bpy.data.meshes.new(name="Plan/Annotation/PLAN_VIEW/" + guid) - #mesh.use_fake_user = True - #mesh.from_pydata(verts, edges, faces) + # edges.pop() + # faces = [] + # mesh = bpy.data.meshes.new(name="Plan/Annotation/PLAN_VIEW/" + guid) + # mesh.use_fake_user = True + # mesh.from_pydata(verts, edges, faces) # Door lining profile verts = [ @@ -191,19 +190,19 @@ def add_object(self, context): bpy.ops.bim.assign_class(obj=obj2.name, ifc_class="IfcDoor") obj2.location = context.scene.cursor.location - #obj2.data.name = "Model/Body/MODEL_VIEW/" + guid - #obj2.data.use_fake_user = True + # obj2.data.name = "Model/Body/MODEL_VIEW/" + guid + # obj2.data.use_fake_user = True # TODO: reimplement. See #1222. - #rep = obj2.BIMObjectProperties.representation_contexts.add() - #rep.context = "Model" - #rep.name = "Body" - #rep.target_view = "MODEL_VIEW" + # rep = obj2.BIMObjectProperties.representation_contexts.add() + # rep.context = "Model" + # rep.name = "Body" + # rep.target_view = "MODEL_VIEW" - #rep = obj2.BIMObjectProperties.representation_contexts.add() - #rep.context = "Plan" - #rep.name = "Annotation" - #rep.target_view = "PLAN_VIEW" + # rep = obj2.BIMObjectProperties.representation_contexts.add() + # rep.context = "Plan" + # rep.name = "Annotation" + # rep.target_view = "PLAN_VIEW" class BIM_OT_add_object(Operator): diff --git a/src/blenderbim/blenderbim/bim/module/model/grid.py b/src/blenderbim/blenderbim/bim/module/model/grid.py index f1b0353f9f..08b424bb6b 100644 --- a/src/blenderbim/blenderbim/bim/module/model/grid.py +++ b/src/blenderbim/blenderbim/bim/module/model/grid.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/handler.py b/src/blenderbim/blenderbim/bim/module/model/handler.py index 16b1c16b02..10abf5b2a4 100644 --- a/src/blenderbim/blenderbim/bim/module/model/handler.py +++ b/src/blenderbim/blenderbim/bim/module/model/handler.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py index 58f0bfd137..c075a8046f 100644 --- a/src/blenderbim/blenderbim/bim/module/model/opening.py +++ b/src/blenderbim/blenderbim/bim/module/model/opening.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -151,32 +150,32 @@ class AddElementOpening(bpy.types.Operator): Vector((-0.1, 0, z)), Vector((-0.1, y, 0)), Vector((-0.1, y, z)), - Vector((dimension+0.1, 0, 0)), - Vector((dimension+0.1, 0, z)), - Vector((dimension+0.1, y, 0)), - Vector((dimension+0.1, y, z)), + Vector((dimension + 0.1, 0, 0)), + Vector((dimension + 0.1, 0, z)), + Vector((dimension + 0.1, y, 0)), + Vector((dimension + 0.1, y, z)), ] elif dimension == voided_obj.dimensions[1]: verts = [ Vector((0, -0.1, 0)), Vector((0, -0.1, z)), - Vector((0, dimension+0.1, 0)), - Vector((0, dimension+0.1, z)), + Vector((0, dimension + 0.1, 0)), + Vector((0, dimension + 0.1, z)), Vector((x, -0.1, 0)), Vector((x, -0.1, z)), - Vector((x, dimension+0.1, 0)), - Vector((x, dimension+0.1, z)), + Vector((x, dimension + 0.1, 0)), + Vector((x, dimension + 0.1, z)), ] elif dimension == voided_obj.dimensions[2]: verts = [ Vector((0, 0, -0.1)), - Vector((0, 0, dimension+0.1)), + Vector((0, 0, dimension + 0.1)), Vector((0, y, -0.1)), - Vector((0, y, dimension+0.1)), + Vector((0, y, dimension + 0.1)), Vector((x, 0, -0.1)), - Vector((x, 0, dimension+0.1)), + Vector((x, 0, dimension + 0.1)), Vector((x, y, -0.1)), - Vector((x, y, dimension+0.1)), + Vector((x, y, dimension + 0.1)), ] edges = [] faces = [ diff --git a/src/blenderbim/blenderbim/bim/module/model/pie.py b/src/blenderbim/blenderbim/bim/module/model/pie.py index 5c5480f07f..2d4195eb1c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/pie.py +++ b/src/blenderbim/blenderbim/bim/module/model/pie.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -20,6 +19,7 @@ import bpy from blenderbim.bim.ifc import IfcStore + class OpenPieClass(bpy.types.Operator): bl_idname = "bim.open_pie_class" bl_label = "Open Pie Class" diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py index 18d075c257..fc7ed03907 100644 --- a/src/blenderbim/blenderbim/bim/module/model/product.py +++ b/src/blenderbim/blenderbim/bim/module/model/product.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -132,7 +131,7 @@ class AddTypeInstance(bpy.types.Operator): if collection_obj and collection_obj.BIMObjectProperties.ifc_definition_id: obj.location[2] = collection_obj.location[2] - min([v[2] for v in obj.bound_box]) - bpy.ops.object.select_all(action='DESELECT') + bpy.ops.object.select_all(action="DESELECT") obj.select_set(True) context.view_layer.objects.active = obj return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/model/profile.py b/src/blenderbim/blenderbim/bim/module/model/profile.py index 6c9c82f139..cfa7ed47ce 100644 --- a/src/blenderbim/blenderbim/bim/module/model/profile.py +++ b/src/blenderbim/blenderbim/bim/module/model/profile.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/prop.py b/src/blenderbim/blenderbim/bim/module/model/prop.py index 55389ded4c..1d5f985fb8 100644 --- a/src/blenderbim/blenderbim/bim/module/model/prop.py +++ b/src/blenderbim/blenderbim/bim/module/model/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -40,6 +39,7 @@ def purge(): global relating_types_enum relating_types_enum = [] + def getRelatingTypes(self, context): global relating_types_enum if len(relating_types_enum) < 1: @@ -47,5 +47,6 @@ def getRelatingTypes(self, context): relating_types_enum.extend((str(e.id()), e.Name, "") for e in elements) return relating_types_enum + class BIMModelProperties(PropertyGroup): relating_type: EnumProperty(items=getRelatingTypes, name="Relating Type") diff --git a/src/blenderbim/blenderbim/bim/module/model/root.py b/src/blenderbim/blenderbim/bim/module/model/root.py index 4870d1094c..65c72152f1 100644 --- a/src/blenderbim/blenderbim/bim/module/model/root.py +++ b/src/blenderbim/blenderbim/bim/module/model/root.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py index c99e30f79a..c9847d1a21 100644 --- a/src/blenderbim/blenderbim/bim/module/model/slab.py +++ b/src/blenderbim/blenderbim/bim/module/model/slab.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/stair.py b/src/blenderbim/blenderbim/bim/module/model/stair.py index aacb1b40ad..3b06c52334 100644 --- a/src/blenderbim/blenderbim/bim/module/model/stair.py +++ b/src/blenderbim/blenderbim/bim/module/model/stair.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/task.py b/src/blenderbim/blenderbim/bim/module/model/task.py index a7d75b0318..3bc4ed748c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/task.py +++ b/src/blenderbim/blenderbim/bim/module/model/task.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py index 00a34969bf..68891e71e6 100644 --- a/src/blenderbim/blenderbim/bim/module/model/ui.py +++ b/src/blenderbim/blenderbim/bim/module/model/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -37,7 +36,7 @@ class BIM_PT_authoring(Panel): tprops = context.scene.BIMTypeProperties col = self.layout.column(align=True) enabled = True - + if type_prop.getIfcTypes(tprops, context): col.prop(tprops, "ifc_class", text="", icon="FILE_VOLUME") else: diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index 3678422016..9e3dc5c82d 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/model/window.py b/src/blenderbim/blenderbim/bim/module/model/window.py index 8890051ac3..fd081ab0a8 100644 --- a/src/blenderbim/blenderbim/bim/module/model/window.py +++ b/src/blenderbim/blenderbim/bim/module/model/window.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -29,7 +28,7 @@ from blenderbim.bim.ifc import IfcStore def add_object(self, context): guid = ifcopenshell.guid.new() leaf_width = self.overall_width - 0.045 - 0.045 - #verts = [ + # verts = [ # # Left lining # Vector((0, 0, 0)), # Vector((0, self.depth, 0)), @@ -50,8 +49,8 @@ def add_object(self, context): # Vector((0.04, (self.depth / 2) - 0.005, 0)), # Vector((self.overall_width - 0.04, (self.depth / 2) - 0.005, 0)), # Vector((self.overall_width - 0.04, (self.depth / 2) + 0.005, 0)), - #] - #edges = [ + # ] + # edges = [ # [0, 1], # [1, 2], # [2, 3], @@ -66,11 +65,11 @@ def add_object(self, context): # [13, 14], # [14, 15], # [15, 12], # Window panel - #] - #faces = [] - #mesh = bpy.data.meshes.new(name="Plan/Annotation/PLAN_VIEW/" + guid) - #mesh.use_fake_user = True - #mesh.from_pydata(verts, edges, faces) + # ] + # faces = [] + # mesh = bpy.data.meshes.new(name="Plan/Annotation/PLAN_VIEW/" + guid) + # mesh.use_fake_user = True + # mesh.from_pydata(verts, edges, faces) # Window lining profile verts = [ @@ -174,18 +173,18 @@ def add_object(self, context): bpy.ops.bim.assign_class(obj=obj2.name, ifc_class="IfcWindow") obj2.name = "Window" obj2.location = context.scene.cursor.location - #obj2.data.name = "Model/Body/MODEL_VIEW/" + guid - #obj2.data.use_fake_user = True + # obj2.data.name = "Model/Body/MODEL_VIEW/" + guid + # obj2.data.use_fake_user = True - #rep = obj2.BIMObjectProperties.representation_contexts.add() - #rep.context = "Model" - #rep.name = "Body" - #rep.target_view = "MODEL_VIEW" + # rep = obj2.BIMObjectProperties.representation_contexts.add() + # rep.context = "Model" + # rep.name = "Body" + # rep.target_view = "MODEL_VIEW" - #rep = obj2.BIMObjectProperties.representation_contexts.add() - #rep.context = "Plan" - #rep.name = "Annotation" - #rep.target_view = "PLAN_VIEW" + # rep = obj2.BIMObjectProperties.representation_contexts.add() + # rep.context = "Plan" + # rep.name = "Annotation" + # rep.target_view = "PLAN_VIEW" class BIM_OT_add_object(Operator): diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index 7215a1bb2d..4d271a6f57 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -67,7 +66,6 @@ class BimTool(WorkSpaceTool): else: row.label(text="No Relating Type") - row.label(text="", icon="BLANK1") row = layout.row(align=True) diff --git a/src/blenderbim/blenderbim/bim/module/owner/__init__.py b/src/blenderbim/blenderbim/bim/module/owner/__init__.py index b60dc2c370..e33cb27af8 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/owner/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/owner/operator.py b/src/blenderbim/blenderbim/bim/module/owner/operator.py index 50cb544dd3..9c5eb5c3b1 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/operator.py +++ b/src/blenderbim/blenderbim/bim/module/owner/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -40,15 +39,12 @@ class AddOrRemoveElementFromCollection(bpy.types.Operator): bl_idname = "bim.add_or_remove_element_from_collection" bl_label = "Add or Remove Element From Collection" bl_options = {"REGISTER", "UNDO"} - operation : bpy.props.EnumProperty( - items=( - ("+", 'Add', "Add item to collection"), - ("-", 'Remove', "Remove item from collection") - ), + operation: bpy.props.EnumProperty( + items=(("+", "Add", "Add item to collection"), ("-", "Remove", "Remove item from collection")), default="+", ) - collection_path : bpy.props.StringProperty() - selected_item_idx : bpy.props.IntProperty(default=-1) + collection_path: bpy.props.StringProperty() + selected_item_idx: bpy.props.IntProperty(default=-1) def execute(self, context): # Ugly but I hate using eval() @@ -281,7 +277,7 @@ class EnableEditingAddress(bpy.types.Operator): address.description = data["Description"] or "" address.user_defined_purpose = data["UserDefinedPurpose"] or "" - if data["type"] == "IfcTelecomAddress": + if data["type"] == "IfcTelecomAddress": populate_collection(address.telephone_numbers, data.get("TelephoneNumbers", None)) populate_collection(address.facsimile_numbers, data.get("FacsimileNumbers", None)) address.pager_number = data["PagerNumber"] or "" diff --git a/src/blenderbim/blenderbim/bim/module/owner/prop.py b/src/blenderbim/blenderbim/bim/module/owner/prop.py index 9629575be1..867df5e021 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/prop.py +++ b/src/blenderbim/blenderbim/bim/module/owner/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -36,12 +35,14 @@ from bpy.props import ( _persons_enum = [] _organisations_enum = [] + def purge(): global _persons_enum global _organisations_enum _persons_enum.clear() _organisations_enum.clear() + def getPersons(self, context): global _persons_enum if not Data.is_loaded: diff --git a/src/blenderbim/blenderbim/bim/module/owner/ui.py b/src/blenderbim/blenderbim/bim/module/owner/ui.py index e451c3af2c..42565c302e 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/ui.py +++ b/src/blenderbim/blenderbim/bim/module/owner/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -30,11 +29,8 @@ def draw_string_collection(layout, owner, collection_name): for i in range(len(collection)): if i == 0: row = draw_prop_on_new_row( - column, - collection[i], - "name", - align=True, - text=f"{owner.bl_rna.properties[collection_name].name}") + column, collection[i], "name", align=True, text=f"{owner.bl_rna.properties[collection_name].name}" + ) add_op = row.operator(AddOrRemoveElementFromCollection.bl_idname, icon="ADD", text="") add_op.operation = "+" add_op.collection_path = collection.path_from_id() @@ -46,7 +42,7 @@ def draw_string_collection(layout, owner, collection_name): rem_op.selected_item_idx = i -def draw_prop_on_new_row(layout, owner, attribute, align=False, **kwargs): +def draw_prop_on_new_row(layout, owner, attribute, align=False, **kwargs): row = layout.row(align=align) row.prop(owner, attribute, **kwargs) return row @@ -103,7 +99,7 @@ def draw_addresses_ui(box, assigned_object_id, addresses, file, context): draw_prop_on_new_row(box2, blender_address, "pager_number") draw_string_collection(box2, blender_address, "electronic_mail_addresses") draw_prop_on_new_row(box2, blender_address, "www_home_page_url") - if file.schema != "IFC2X3": + if file.schema != "IFC2X3": draw_string_collection(box2, blender_address, "messaging_ids") elif address["type"] == "IfcPostalAddress": draw_prop_on_new_row(box2, blender_address, "internal_location") @@ -151,7 +147,7 @@ class BIM_PT_people(Panel): row = draw_prop_on_new_row(box, blender_person, "name", align=True, icon="USER", text="") row.operator("bim.edit_person", icon="CHECKMARK", text="") row.operator("bim.disable_editing_person", icon="CANCEL", text="") - draw_prop_on_new_row(box, blender_person, "family_name") + draw_prop_on_new_row(box, blender_person, "family_name") draw_prop_on_new_row(box, blender_person, "given_name") draw_string_collection(box, blender_person, "middle_names") draw_string_collection(box, blender_person, "prefix_titles") @@ -204,8 +200,8 @@ class BIM_PT_organisations(Panel): row = box.row(align=True) row.prop(blender_organisation, "name", icon="USER", text="") row.operator("bim.edit_organisation", icon="CHECKMARK", text="") - row.operator("bim.disable_editing_organisation", icon="CANCEL", text="") - draw_prop_on_new_row(box, blender_organisation, "identification") + row.operator("bim.disable_editing_organisation", icon="CANCEL", text="") + draw_prop_on_new_row(box, blender_organisation, "identification") draw_prop_on_new_row(box, blender_organisation, "description") draw_roles_ui(box, organisation_id, organisation["Roles"], context) @@ -215,7 +211,9 @@ class BIM_PT_organisations(Panel): row.label(text=organisation["Name"]) if organisation["Roles"]: row.label(text=", ".join([Data.roles[r]["Role"] for r in organisation["Roles"]])) - row.operator("bim.enable_editing_organisation", icon="GREASEPENCIL", text="").organisation_id = organisation_id + row.operator( + "bim.enable_editing_organisation", icon="GREASEPENCIL", text="" + ).organisation_id = organisation_id if not organisation["is_engaged"]: row.operator("bim.remove_organisation", icon="X", text="").organisation_id = organisation_id diff --git a/src/blenderbim/blenderbim/bim/module/patch/__init__.py b/src/blenderbim/blenderbim/bim/module/patch/__init__.py index 12aec24743..b5c7ef84c6 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/patch/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/patch/operator.py b/src/blenderbim/blenderbim/bim/module/patch/operator.py index ea76cd51c3..1babe6948b 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/operator.py +++ b/src/blenderbim/blenderbim/bim/module/patch/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -100,7 +99,7 @@ class UpdateIfcPatchArguments(bpy.types.Operator): return {"FINISHED"} patch_args = context.scene.BIMPatchProperties.ifc_patch_args_attr patch_args.clear() - docs = ifcpatch.extract_docs(self.recipe, "Patcher", "__init__", ("src", "file", "logger", "args")) + docs = ifcpatch.extract_docs(self.recipe, "Patcher", "__init__", ("src", "file", "logger", "args")) if docs and "inputs" in docs: inputs = docs["inputs"] for arg_name in inputs: diff --git a/src/blenderbim/blenderbim/bim/module/patch/prop.py b/src/blenderbim/blenderbim/bim/module/patch/prop.py index ac9e09faa9..ecf130c9b1 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/prop.py +++ b/src/blenderbim/blenderbim/bim/module/patch/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -53,11 +52,12 @@ def getIfcPatchRecipes(self, context): if f == "__init__": continue docs = ifcpatch.extract_docs(f, "Patcher", "__init__", ("src", "file", "logger", "args")) - ifcpatchrecipes_enum.append((f, f, docs.get("description","") if docs else "")) + ifcpatchrecipes_enum.append((f, f, docs.get("description", "") if docs else "")) return ifcpatchrecipes_enum + def update_ifc_patch_recipe(self, context): - bpy.ops.bim.update_ifc_patch_arguments(recipe = self.ifc_patch_recipes) + bpy.ops.bim.update_ifc_patch_arguments(recipe=self.ifc_patch_recipes) class BIMPatchProperties(PropertyGroup): diff --git a/src/blenderbim/blenderbim/bim/module/patch/ui.py b/src/blenderbim/blenderbim/bim/module/patch/ui.py index 1617adbb27..ec699ab3e0 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/ui.py +++ b/src/blenderbim/blenderbim/bim/module/patch/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -37,8 +36,7 @@ class BIM_PT_patch(bpy.types.Panel): scene = context.scene props = scene.BIMPatchProperties row = layout.row() - row.prop(props, "ifc_patch_recipes") - + row.prop(props, "ifc_patch_recipes") row = layout.row(align=True) row.prop(props, "ifc_patch_input") diff --git a/src/blenderbim/blenderbim/bim/module/profile/__init__.py b/src/blenderbim/blenderbim/bim/module/profile/__init__.py index 60e3baa2c2..18c05e7619 100644 --- a/src/blenderbim/blenderbim/bim/module/profile/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/profile/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/profile/operator.py b/src/blenderbim/blenderbim/bim/module/profile/operator.py index f94f13bfb0..76ea8fa98a 100644 --- a/src/blenderbim/blenderbim/bim/module/profile/operator.py +++ b/src/blenderbim/blenderbim/bim/module/profile/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/profile/prop.py b/src/blenderbim/blenderbim/bim/module/profile/prop.py index 868093f64a..1f8f06ca33 100644 --- a/src/blenderbim/blenderbim/bim/module/profile/prop.py +++ b/src/blenderbim/blenderbim/bim/module/profile/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -35,6 +34,7 @@ from bpy.props import ( CollectionProperty, ) + class Profile(PropertyGroup): name: StringProperty(name="Name") ifc_definition_id: IntProperty(name="IFC Definition ID") diff --git a/src/blenderbim/blenderbim/bim/module/profile/ui.py b/src/blenderbim/blenderbim/bim/module/profile/ui.py index 3d81fce607..8044de9f54 100644 --- a/src/blenderbim/blenderbim/bim/module/profile/ui.py +++ b/src/blenderbim/blenderbim/bim/module/profile/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/project/__init__.py b/src/blenderbim/blenderbim/bim/module/project/__init__.py index 1acd0ef22e..331e27bbbe 100644 --- a/src/blenderbim/blenderbim/bim/module/project/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/project/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/project/prop.py b/src/blenderbim/blenderbim/bim/module/project/prop.py index 6db34e7cbd..8038a0dcce 100644 --- a/src/blenderbim/blenderbim/bim/module/project/prop.py +++ b/src/blenderbim/blenderbim/bim/module/project/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index aaf9139b42..30a89dc5f5 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset/__init__.py b/src/blenderbim/blenderbim/bim/module/pset/__init__.py index 9ce18f5016..8c360d3aa8 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/pset/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py index 3e6a6edf82..1747d047d4 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset/prop.py b/src/blenderbim/blenderbim/bim/module/pset/prop.py index 03959f9969..f47cadd87e 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/prop.py +++ b/src/blenderbim/blenderbim/bim/module/pset/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -56,9 +55,7 @@ def getPsetNames(self, context): if ifc_class not in psetnames: psets = blenderbim.bim.schema.ifc.psetqto.get_applicable(ifc_class, pset_only=True) psetnames[ifc_class] = [(p.Name, p.Name, "") for p in psets] - assigned_names = [ - Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"] - ] + assigned_names = [Data.psets[p]["Name"] for p in Data.products[obj.BIMObjectProperties.ifc_definition_id]["psets"]] return [p for p in psetnames[ifc_class] if p[0] not in assigned_names] diff --git a/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py b/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py index 4e2469d0f6..8411267ed2 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -162,7 +161,11 @@ class QtoCalculator: else: tf_tris = ( (me.vertices[tfv[0]], me.vertices[tfv[1]], me.vertices[tfv[2]]), - (me.vertices[tfv[2]], me.vertices[tfv[3]], me.vertices[tfv[0]],), + ( + me.vertices[tfv[2]], + me.vertices[tfv[3]], + me.vertices[tfv[0]], + ), ) for tf_iter in tf_tris: diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py index f5613cf4c0..90f5791adf 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/__init__.py b/src/blenderbim/blenderbim/bim/module/pset_template/__init__.py index 4094532ac0..e4e5591da4 100644 --- a/src/blenderbim/blenderbim/bim/module/pset_template/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/pset_template/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py index 496ab64aac..b9e86ba16a 100644 --- a/src/blenderbim/blenderbim/bim/module/pset_template/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset_template/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -73,9 +72,11 @@ class RemovePsetTemplate(bpy.types.Operator): props = context.scene.BIMPsetTemplateProperties if props.active_pset_template_id == int(props.pset_templates): bpy.ops.bim.disable_editing_pset_template() - ifcopenshell.api.run("pset_template.remove_pset_template", IfcStore.pset_template_file, **{ - "pset_template": IfcStore.pset_template_file.by_id(int(props.pset_templates)) - }) + ifcopenshell.api.run( + "pset_template.remove_pset_template", + IfcStore.pset_template_file, + **{"pset_template": IfcStore.pset_template_file.by_id(int(props.pset_templates))} + ) Data.load(IfcStore.pset_template_file) updatePsetTemplates(self, context) return {"FINISHED"} @@ -158,15 +159,19 @@ class EditPsetTemplate(bpy.types.Operator): def _execute(self, context): props = context.scene.BIMPsetTemplateProperties - ifcopenshell.api.run("pset_template.edit_pset_template", IfcStore.pset_template_file, **{ - "pset_template": IfcStore.pset_template_file.by_id(props.active_pset_template_id), - "attributes": { - "Name": props.active_pset_template.name, - "Description": props.active_pset_template.description, - "TemplateType": props.active_pset_template.template_type, - "ApplicableEntity": props.active_pset_template.applicable_entity, + ifcopenshell.api.run( + "pset_template.edit_pset_template", + IfcStore.pset_template_file, + **{ + "pset_template": IfcStore.pset_template_file.by_id(props.active_pset_template_id), + "attributes": { + "Name": props.active_pset_template.name, + "Description": props.active_pset_template.description, + "TemplateType": props.active_pset_template.template_type, + "ApplicableEntity": props.active_pset_template.applicable_entity, + }, } - }) + ) Data.load(IfcStore.pset_template_file) updatePsetTemplates(self, context) bpy.ops.bim.disable_editing_pset_template() @@ -179,7 +184,6 @@ class EditPsetTemplate(bpy.types.Operator): IfcStore.pset_template_file.redo() - class SavePsetTemplateFile(bpy.types.Operator): bl_idname = "bim.save_pset_template_file" bl_label = "Save Pset Template File" @@ -208,9 +212,11 @@ class AddPropTemplate(bpy.types.Operator): def _execute(self, context): props = context.scene.BIMPsetTemplateProperties pset_template_id = props.active_pset_template_id or int(props.pset_templates) - ifcopenshell.api.run("pset_template.add_prop_template", IfcStore.pset_template_file, **{ - "pset_template": IfcStore.pset_template_file.by_id(pset_template_id) - }) + ifcopenshell.api.run( + "pset_template.add_prop_template", + IfcStore.pset_template_file, + **{"pset_template": IfcStore.pset_template_file.by_id(pset_template_id)} + ) Data.load(IfcStore.pset_template_file) return {"FINISHED"} @@ -238,9 +244,11 @@ class RemovePropTemplate(bpy.types.Operator): def _execute(self, context): props = context.scene.BIMPsetTemplateProperties - ifcopenshell.api.run("pset_template.remove_prop_template", IfcStore.pset_template_file, **{ - "prop_template": IfcStore.pset_template_file.by_id(self.prop_template) - }) + ifcopenshell.api.run( + "pset_template.remove_prop_template", + IfcStore.pset_template_file, + **{"prop_template": IfcStore.pset_template_file.by_id(self.prop_template)} + ) Data.load(IfcStore.pset_template_file) return {"FINISHED"} @@ -267,14 +275,18 @@ class EditPropTemplate(bpy.types.Operator): def _execute(self, context): props = context.scene.BIMPsetTemplateProperties - ifcopenshell.api.run("pset_template.edit_prop_template", IfcStore.pset_template_file, **{ - "prop_template": IfcStore.pset_template_file.by_id(props.active_prop_template_id), - "attributes": { - "Name": props.active_prop_template.name, - "Description": props.active_prop_template.description, - "PrimaryMeasureType": props.active_prop_template.primary_measure_type, + ifcopenshell.api.run( + "pset_template.edit_prop_template", + IfcStore.pset_template_file, + **{ + "prop_template": IfcStore.pset_template_file.by_id(props.active_prop_template_id), + "attributes": { + "Name": props.active_prop_template.name, + "Description": props.active_prop_template.description, + "PrimaryMeasureType": props.active_prop_template.primary_measure_type, + }, } - }) + ) Data.load(IfcStore.pset_template_file) bpy.ops.bim.disable_editing_prop_template() return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/prop.py b/src/blenderbim/blenderbim/bim/module/pset_template/prop.py index dae0f8d77f..6f41a98a23 100644 --- a/src/blenderbim/blenderbim/bim/module/pset_template/prop.py +++ b/src/blenderbim/blenderbim/bim/module/pset_template/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/pset_template/ui.py b/src/blenderbim/blenderbim/bim/module/pset_template/ui.py index 0080ebb877..0049612fd5 100644 --- a/src/blenderbim/blenderbim/bim/module/pset_template/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset_template/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/qto/__init__.py b/src/blenderbim/blenderbim/bim/module/qto/__init__.py index c99f657c4e..6583deae6a 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/qto/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/qto/helper.py b/src/blenderbim/blenderbim/bim/module/qto/helper.py index 8826a8d5b7..80dd27b565 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/helper.py +++ b/src/blenderbim/blenderbim/bim/module/qto/helper.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -38,25 +37,25 @@ def calculate_volumes(objs, context): def calculate_mesh_quantity(objs: bpy.types.Object, context, operation): - """Get the sum of the target quantity on all passed mesh objects + """Get the sum of the target quantity on all passed mesh objects - :param objs: iterable of mesh object - :param context: current execution context - :param operation: function which takes a single bmesh as an argument, returns a float value - :returns float: - """ - result = 0 - edit_mode = context.active_object.mode == "EDIT" - for obj in objs: - if edit_mode: - bm = bmesh.from_edit_mesh(obj.data) - result += operation(bm) - else: - bm = bmesh.new() - bm.from_mesh(obj.data) - result += operation(bm) - bm.free() - return result + :param objs: iterable of mesh object + :param context: current execution context + :param operation: function which takes a single bmesh as an argument, returns a float value + :returns float: + """ + result = 0 + edit_mode = context.active_object.mode == "EDIT" + for obj in objs: + if edit_mode: + bm = bmesh.from_edit_mesh(obj.data) + result += operation(bm) + else: + bm = bmesh.new() + bm.from_mesh(obj.data) + result += operation(bm) + bm.free() + return result def calculate_formwork_area(objs, context): diff --git a/src/blenderbim/blenderbim/bim/module/qto/operator.py b/src/blenderbim/blenderbim/bim/module/qto/operator.py index de4b968764..0a40caddcc 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/operator.py +++ b/src/blenderbim/blenderbim/bim/module/qto/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -128,11 +127,6 @@ class QuantifyObjects(bpy.types.Operator): product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id), name=props.qto_name, ) - ifcopenshell.api.run( - "pset.edit_qto", - self.file, - qto=qto, - properties={props.prop_name: result} - ) + ifcopenshell.api.run("pset.edit_qto", self.file, qto=qto, properties={props.prop_name: result}) PsetData.load(self.file, obj.BIMObjectProperties.ifc_definition_id) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/qto/prop.py b/src/blenderbim/blenderbim/bim/module/qto/prop.py index 4fec6fec26..0bc3eb4af9 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/prop.py +++ b/src/blenderbim/blenderbim/bim/module/qto/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -31,6 +30,7 @@ from bpy.props import ( CollectionProperty, ) + class BIMQtoProperties(PropertyGroup): qto_result: StringProperty(default="", name="Qto Result") qto_methods: EnumProperty( diff --git a/src/blenderbim/blenderbim/bim/module/qto/ui.py b/src/blenderbim/blenderbim/bim/module/qto/ui.py index aea862d0ce..0b021e66ff 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/ui.py +++ b/src/blenderbim/blenderbim/bim/module/qto/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/resource/__init__.py b/src/blenderbim/blenderbim/bim/module/resource/__init__.py index a1a7adda0f..b2bdd02794 100644 --- a/src/blenderbim/blenderbim/bim/module/resource/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/resource/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -61,6 +60,7 @@ def register(): bpy.types.Scene.BIMResourceProperties = bpy.props.PointerProperty(type=prop.BIMResourceProperties) bpy.types.Scene.BIMResourceTreeProperties = bpy.props.PointerProperty(type=prop.BIMResourceTreeProperties) + def unregister(): del bpy.types.Scene.BIMResourceProperties del bpy.types.Scene.BIMResourceTreeProperties diff --git a/src/blenderbim/blenderbim/bim/module/resource/ui.py b/src/blenderbim/blenderbim/bim/module/resource/ui.py index 6a73a7cf0a..5d6bf8950c 100644 --- a/src/blenderbim/blenderbim/bim/module/resource/ui.py +++ b/src/blenderbim/blenderbim/bim/module/resource/ui.py @@ -165,7 +165,6 @@ class BIM_PT_resources(Panel): op.resource = self.props.active_resource_id op.ifc_class = self.props.quantity_types - def draw_editable_resource_costs_ui(self): row = self.layout.row(align=True) row.prop(self.props, "cost_types", text="") diff --git a/src/blenderbim/blenderbim/bim/module/root/__init__.py b/src/blenderbim/blenderbim/bim/module/root/__init__.py index 4c7c15696e..b43b044acf 100644 --- a/src/blenderbim/blenderbim/bim/module/root/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/root/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/root/operator.py b/src/blenderbim/blenderbim/bim/module/root/operator.py index 2abd1a011b..006e5105cc 100644 --- a/src/blenderbim/blenderbim/bim/module/root/operator.py +++ b/src/blenderbim/blenderbim/bim/module/root/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/root/prop.py b/src/blenderbim/blenderbim/bim/module/root/prop.py index 6a28a40b51..1e73812bf3 100644 --- a/src/blenderbim/blenderbim/bim/module/root/prop.py +++ b/src/blenderbim/blenderbim/bim/module/root/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py index aa2ea98ec2..950195a5ab 100644 --- a/src/blenderbim/blenderbim/bim/module/root/ui.py +++ b/src/blenderbim/blenderbim/bim/module/root/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -51,8 +50,8 @@ class BIM_PT_class(Panel): row.operator("bim.reassign_class", icon="CHECKMARK") row.operator("bim.disable_reassign_class", icon="CANCEL", text="") self.draw_class_dropdowns( - context, - root_prop.getIfcPredefinedTypes(context.scene.BIMRootProperties, context)) + context, root_prop.getIfcPredefinedTypes(context.scene.BIMRootProperties, context) + ) else: data = Data.products[props.ifc_definition_id] name = data["type"] diff --git a/src/blenderbim/blenderbim/bim/module/search/__init__.py b/src/blenderbim/blenderbim/bim/module/search/__init__.py index d11e217190..2550dd1c7b 100644 --- a/src/blenderbim/blenderbim/bim/module/search/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/search/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index af4743877f..566bf5048e 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -44,11 +43,7 @@ colour_list = [ def does_keyword_exist(pattern, string, context): string = str(string) props = context.scene.BIMSearchProperties - if ( - props.should_use_regex - and props.should_ignorecase - and re.search(pattern, string, flags=re.IGNORECASE) - ): + if props.should_use_regex and props.should_ignorecase and re.search(pattern, string, flags=re.IGNORECASE): return True elif props.should_use_regex and re.search(pattern, string): return True @@ -60,6 +55,7 @@ def does_keyword_exist(pattern, string, context): class SelectGlobalId(bpy.types.Operator): """Click to select the objects that match with the given Global ID""" + bl_idname = "bim.select_global_id" bl_label = "Select GlobalId" bl_options = {"REGISTER", "UNDO"} @@ -81,6 +77,7 @@ class SelectGlobalId(bpy.types.Operator): class SelectIfcClass(bpy.types.Operator): """Click to select all objects that match with the given IFC class""" + bl_idname = "bim.select_ifc_class" bl_label = "Select IFC Class" bl_options = {"REGISTER", "UNDO"} @@ -99,6 +96,7 @@ class SelectIfcClass(bpy.types.Operator): class SelectAttribute(bpy.types.Operator): """Click to select all objects that match with the given Attribute Name and Value""" + bl_idname = "bim.select_attribute" bl_label = "Select Attribute" bl_options = {"REGISTER", "UNDO"} @@ -124,6 +122,7 @@ class SelectAttribute(bpy.types.Operator): class SelectPset(bpy.types.Operator): """Click to select all objects that match with the given Pset Name, Properties Name and Value""" + bl_idname = "bim.select_pset" bl_label = "Select Pset" bl_options = {"REGISTER", "UNDO"} @@ -157,6 +156,7 @@ class SelectPset(bpy.types.Operator): class ColourByAttribute(bpy.types.Operator): """Click to colour different objects according to given Attribute Name""" + bl_idname = "bim.colour_by_attribute" bl_label = "Colour by Attribute" bl_options = {"REGISTER", "UNDO"} @@ -207,6 +207,7 @@ class ColourByAttribute(bpy.types.Operator): class ColourByPset(bpy.types.Operator): """Click to colour different objects according to given Prop Name""" + bl_idname = "bim.colour_by_pset" bl_label = "Colour by Pset" bl_options = {"REGISTER", "UNDO"} @@ -265,6 +266,7 @@ class ColourByPset(bpy.types.Operator): class ColourByClass(bpy.types.Operator): """Click to colour different objects according to their IFC Classes""" + bl_idname = "bim.colour_by_class" bl_label = "Colour by Class" bl_options = {"REGISTER", "UNDO"} @@ -310,6 +312,7 @@ class ColourByClass(bpy.types.Operator): class ResetObjectColours(bpy.types.Operator): """Reset the colour of selected objects""" + bl_idname = "bim.reset_object_colours" bl_label = "Reset Colours" diff --git a/src/blenderbim/blenderbim/bim/module/search/prop.py b/src/blenderbim/blenderbim/bim/module/search/prop.py index 722d051314..78a0949e69 100644 --- a/src/blenderbim/blenderbim/bim/module/search/prop.py +++ b/src/blenderbim/blenderbim/bim/module/search/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -30,6 +29,7 @@ from bpy.props import ( CollectionProperty, ) + class BIMSearchProperties(PropertyGroup): should_use_regex: BoolProperty(name="Search With Regex", default=False) should_ignorecase: BoolProperty(name="Search Ignoring Case", default=True) diff --git a/src/blenderbim/blenderbim/bim/module/search/ui.py b/src/blenderbim/blenderbim/bim/module/search/ui.py index b02a328b7b..405a3623da 100644 --- a/src/blenderbim/blenderbim/bim/module/search/ui.py +++ b/src/blenderbim/blenderbim/bim/module/search/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/sequence/__init__.py b/src/blenderbim/blenderbim/bim/module/sequence/__init__.py index 2522c36759..38c4c7cc32 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/sequence/helper.py b/src/blenderbim/blenderbim/bim/module/sequence/helper.py index 6c5282b693..2e26f69921 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/helper.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/helper.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -93,4 +92,4 @@ def get_scene_prop(prop_path): def set_scene_prop(prop_path, value): parent = get_scene_prop(prop_path[: prop_path.rfind(".")]) prop = prop_path.split(".")[-1] - parent[prop] = value \ No newline at end of file + parent[prop] = value diff --git a/src/blenderbim/blenderbim/bim/module/sequence/operator.py b/src/blenderbim/blenderbim/bim/module/sequence/operator.py index b908d80bab..9179483859 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/operator.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/operator.py @@ -911,9 +911,7 @@ class UnassignProcess(bpy.types.Operator): def unassign_resource(self): task = self.file.by_id(self.task) resource = self.file.by_id(self.resource) - ifcopenshell.api.run( - "sequence.unassign_process", self.file, related_object=resource, relating_process=task - ) + ifcopenshell.api.run("sequence.unassign_process", self.file, related_object=resource, relating_process=task) ifcopenshell.api.run("resource.remove_resource", self.file, resource=resource) ResourceData.load(self.file) Data.load(self.file) diff --git a/src/blenderbim/blenderbim/bim/module/sequence/prop.py b/src/blenderbim/blenderbim/bim/module/sequence/prop.py index 78e7a0b0b3..b4185a1388 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/prop.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/spatial/__init__.py b/src/blenderbim/blenderbim/bim/module/spatial/__init__.py index 9335ac64d4..1d1b95cc90 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/spatial/operator.py b/src/blenderbim/blenderbim/bim/module/spatial/operator.py index 5c01b0c357..3b02e5651a 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/operator.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -48,7 +47,7 @@ class AssignContainer(bpy.types.Operator): self.relating_structure or sprops.spatial_elements[sprops.active_spatial_element_index].ifc_definition_id ) for related_element in related_elements: - oprops = related_element.BIMObjectProperties + oprops = related_element.BIMObjectProperties if not oprops.ifc_definition_id: continue props = related_element.BIMObjectSpatialProperties @@ -143,13 +142,7 @@ class RemoveContainer(bpy.types.Operator): obj_id = obj.BIMObjectProperties.ifc_definition_id if not obj_id: continue - ifcopenshell.api.run( - "spatial.remove_container", - self.file, - **{ - "product": self.file.by_id(obj_id) - } - ) + ifcopenshell.api.run("spatial.remove_container", self.file, **{"product": self.file.by_id(obj_id)}) Data.load(self.file, obj_id) aggregate_collection = bpy.data.collections.get(obj.name) @@ -178,6 +171,7 @@ class CopyToContainer(bpy.types.Operator): Check the mark next to a container in the container list to select it Several containers can be selected at a time """ + bl_idname = "bim.copy_to_container" bl_label = "Copy To Container" bl_options = {"REGISTER", "UNDO"} @@ -192,7 +186,9 @@ class CopyToContainer(bpy.types.Operator): sprops = context.scene.BIMSpatialProperties container_ids = [c.ifc_definition_id for c in sprops.spatial_elements if c.is_selected] for obj in objects: - container = ifcopenshell.util.element.get_container(self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)) + container = ifcopenshell.util.element.get_container( + self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) + ) if container: container_obj = IfcStore.get_element(container.id()) local_position = container_obj.matrix_world.inverted() @ obj.matrix_world diff --git a/src/blenderbim/blenderbim/bim/module/spatial/prop.py b/src/blenderbim/blenderbim/bim/module/spatial/prop.py index b9a4538f2a..769479f3e8 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/prop.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/spatial/ui.py b/src/blenderbim/blenderbim/bim/module/spatial/ui.py index 8d88132e5f..00a4e8541d 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/ui.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/structural/__init__.py b/src/blenderbim/blenderbim/bim/module/structural/__init__.py index edccdc92a5..c37f6a4751 100644 --- a/src/blenderbim/blenderbim/bim/module/structural/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/structural/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/structural/operator.py b/src/blenderbim/blenderbim/bim/module/structural/operator.py index 5bb3e1469b..5d60ef6e40 100644 --- a/src/blenderbim/blenderbim/bim/module/structural/operator.py +++ b/src/blenderbim/blenderbim/bim/module/structural/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -607,7 +606,10 @@ class AssignStructuralLoadCase(bpy.types.Operator): ifcopenshell.api.run( "aggregate.assign_object", self.file, - **{"relating_object": self.file.by_id(self.work_plan), "product": self.file.by_id(self.load_case),}, + **{ + "relating_object": self.file.by_id(self.work_plan), + "product": self.file.by_id(self.load_case), + }, ) Data.load(IfcStore.get_file()) return {"FINISHED"} @@ -624,7 +626,10 @@ class UnassignStructuralLoadCase(bpy.types.Operator): ifcopenshell.api.run( "aggregate.unassign_object", self.file, - **{"relating_object": self.file.by_id(self.work_plan), "product": self.file.by_id(self.load_case),}, + **{ + "relating_object": self.file.by_id(self.work_plan), + "product": self.file.by_id(self.load_case), + }, ) Data.load(IfcStore.get_file()) return {"FINISHED"} @@ -968,7 +973,10 @@ class EditStructuralLoad(bpy.types.Operator): ifcopenshell.api.run( "structural.edit_structural_load", self.file, - **{"structural_load": self.file.by_id(props.active_structural_load_id), "attributes": attributes,}, + **{ + "structural_load": self.file.by_id(props.active_structural_load_id), + "attributes": attributes, + }, ) Data.load(IfcStore.get_file()) bpy.ops.bim.load_structural_loads() diff --git a/src/blenderbim/blenderbim/bim/module/structural/prop.py b/src/blenderbim/blenderbim/bim/module/structural/prop.py index 5da6624f1c..38fb4e571a 100644 --- a/src/blenderbim/blenderbim/bim/module/structural/prop.py +++ b/src/blenderbim/blenderbim/bim/module/structural/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -56,10 +55,12 @@ def getApplicableStructuralLoadTypes(self, context): ) types = [("IfcStructuralLoadTemperature", "IfcStructuralLoadTemperature", "")] if "IfcStructuralPointConnection" in element_classes: - types.extend([ - ("IfcStructuralLoadSingleForce", "IfcStructuralLoadSingleForce", ""), - ("IfcStructuralLoadSingleDisplacement", "IfcStructuralLoadSingleDisplacement", "") - ]) + types.extend( + [ + ("IfcStructuralLoadSingleForce", "IfcStructuralLoadSingleForce", ""), + ("IfcStructuralLoadSingleDisplacement", "IfcStructuralLoadSingleDisplacement", ""), + ] + ) if "IfcStructuralCurveMember" in element_classes: types.append(("IfcStructuralLoadLinearForce", "IfcStructuralLoadLinearForce", "")) if "IfcStructuralSurfaceMember" in element_classes: diff --git a/src/blenderbim/blenderbim/bim/module/structural/ui.py b/src/blenderbim/blenderbim/bim/module/structural/ui.py index 0f04cc71f2..498a651749 100644 --- a/src/blenderbim/blenderbim/bim/module/structural/ui.py +++ b/src/blenderbim/blenderbim/bim/module/structural/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/style/__init__.py b/src/blenderbim/blenderbim/bim/module/style/__init__.py index b60aac300f..086450e2ea 100644 --- a/src/blenderbim/blenderbim/bim/module/style/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/style/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/style/operator.py b/src/blenderbim/blenderbim/bim/module/style/operator.py index 598cc9bc3f..88cb72a497 100644 --- a/src/blenderbim/blenderbim/bim/module/style/operator.py +++ b/src/blenderbim/blenderbim/bim/module/style/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -97,11 +96,15 @@ class AddStyle(bpy.types.Operator): if material.BIMObjectProperties.ifc_definition_id: context = ifcopenshell.util.representation.get_context(self.file, "Model", "Body", "MODEL_VIEW") if context: - ifcopenshell.api.run("style.assign_material_style", self.file, **{ - "material": self.file.by_id(material.BIMObjectProperties.ifc_definition_id), - "style": style, - "context": context, - }) + ifcopenshell.api.run( + "style.assign_material_style", + self.file, + **{ + "material": self.file.by_id(material.BIMObjectProperties.ifc_definition_id), + "style": style, + "context": context, + } + ) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/style/prop.py b/src/blenderbim/blenderbim/bim/module/style/prop.py index fe0fcbf6b9..7b56fc86ee 100644 --- a/src/blenderbim/blenderbim/bim/module/style/prop.py +++ b/src/blenderbim/blenderbim/bim/module/style/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -32,6 +31,7 @@ from bpy.props import ( CollectionProperty, ) + class BIMStyleProperties(PropertyGroup): attributes: CollectionProperty(name="Attributes", type=Attribute) is_editing_attributes: BoolProperty(name="Is Editing Attributes") diff --git a/src/blenderbim/blenderbim/bim/module/style/ui.py b/src/blenderbim/blenderbim/bim/module/style/ui.py index a2df554fb5..9da4296975 100644 --- a/src/blenderbim/blenderbim/bim/module/style/ui.py +++ b/src/blenderbim/blenderbim/bim/module/style/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/system/__init__.py b/src/blenderbim/blenderbim/bim/module/system/__init__.py index 47c1210569..115d400737 100644 --- a/src/blenderbim/blenderbim/bim/module/system/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/system/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/system/operator.py b/src/blenderbim/blenderbim/bim/module/system/operator.py index e9824cf14d..bbfa9c40eb 100644 --- a/src/blenderbim/blenderbim/bim/module/system/operator.py +++ b/src/blenderbim/blenderbim/bim/module/system/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -87,7 +86,9 @@ class EditSystem(bpy.types.Operator): attributes[attribute.name] = attribute.string_value self.file = IfcStore.get_file() ifcopenshell.api.run( - "system.edit_system", self.file, **{"system": self.file.by_id(props.active_system_id), "attributes": attributes} + "system.edit_system", + self.file, + **{"system": self.file.by_id(props.active_system_id), "attributes": attributes} ) Data.load(IfcStore.get_file()) bpy.ops.bim.load_systems() diff --git a/src/blenderbim/blenderbim/bim/module/system/prop.py b/src/blenderbim/blenderbim/bim/module/system/prop.py index 328b56882f..d38c867e25 100644 --- a/src/blenderbim/blenderbim/bim/module/system/prop.py +++ b/src/blenderbim/blenderbim/bim/module/system/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/system/ui.py b/src/blenderbim/blenderbim/bim/module/system/ui.py index e63267ca2a..24ece1eecf 100644 --- a/src/blenderbim/blenderbim/bim/module/system/ui.py +++ b/src/blenderbim/blenderbim/bim/module/system/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/type/__init__.py b/src/blenderbim/blenderbim/bim/module/type/__init__.py index 329a930875..72f1a07edc 100644 --- a/src/blenderbim/blenderbim/bim/module/type/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/type/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/type/operator.py b/src/blenderbim/blenderbim/bim/module/type/operator.py index d1a889b459..4a95206fe9 100644 --- a/src/blenderbim/blenderbim/bim/module/type/operator.py +++ b/src/blenderbim/blenderbim/bim/module/type/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/type/prop.py b/src/blenderbim/blenderbim/bim/module/type/prop.py index c5b6c2221d..7088cd20c6 100644 --- a/src/blenderbim/blenderbim/bim/module/type/prop.py +++ b/src/blenderbim/blenderbim/bim/module/type/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/type/ui.py b/src/blenderbim/blenderbim/bim/module/type/ui.py index 84deb86a70..67d680e6e4 100644 --- a/src/blenderbim/blenderbim/bim/module/type/ui.py +++ b/src/blenderbim/blenderbim/bim/module/type/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/unit/__init__.py b/src/blenderbim/blenderbim/bim/module/unit/__init__.py index a0942261df..4fd0c0c258 100644 --- a/src/blenderbim/blenderbim/bim/module/unit/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/unit/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/unit/operator.py b/src/blenderbim/blenderbim/bim/module/unit/operator.py index cc59fdf295..aa0527f690 100644 --- a/src/blenderbim/blenderbim/bim/module/unit/operator.py +++ b/src/blenderbim/blenderbim/bim/module/unit/operator.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -223,7 +222,6 @@ class AddContextDependentUnit(bpy.types.Operator): return {"FINISHED"} - class EnableEditingUnit(bpy.types.Operator): bl_idname = "bim.enable_editing_unit" bl_label = "Enable Editing Unit" @@ -236,9 +234,10 @@ class EnableEditingUnit(bpy.types.Operator): data = Data.units[self.unit] blenderbim.bim.helper.import_attributes( data["type"], - props.unit_attributes, - data, - lambda name, prop, data: self.import_attributes(name, prop, data, context)) + props.unit_attributes, + data, + lambda name, prop, data: self.import_attributes(name, prop, data, context), + ) props.active_unit_id = self.unit return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/unit/prop.py b/src/blenderbim/blenderbim/bim/module/unit/prop.py index d28d093c73..9dcddcbd1a 100644 --- a/src/blenderbim/blenderbim/bim/module/unit/prop.py +++ b/src/blenderbim/blenderbim/bim/module/unit/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/unit/ui.py b/src/blenderbim/blenderbim/bim/module/unit/ui.py index 7fb0f9d5c4..790e960fe9 100644 --- a/src/blenderbim/blenderbim/bim/module/unit/ui.py +++ b/src/blenderbim/blenderbim/bim/module/unit/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/void/__init__.py b/src/blenderbim/blenderbim/bim/module/void/__init__.py index 95c3503a82..c2afbcbaf6 100644 --- a/src/blenderbim/blenderbim/bim/module/void/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/void/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/module/void/prop.py b/src/blenderbim/blenderbim/bim/module/void/prop.py index 08866a8897..faa3813f46 100644 --- a/src/blenderbim/blenderbim/bim/module/void/prop.py +++ b/src/blenderbim/blenderbim/bim/module/void/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -24,4 +23,3 @@ from bpy.props import PointerProperty class VoidProperties(PropertyGroup): desired_opening: PointerProperty(name="Desired Opening To Fill", type=bpy.types.Object) - diff --git a/src/blenderbim/blenderbim/bim/module/void/ui.py b/src/blenderbim/blenderbim/bim/module/void/ui.py index 792867c864..572ad8f71a 100644 --- a/src/blenderbim/blenderbim/bim/module/void/ui.py +++ b/src/blenderbim/blenderbim/bim/module/void/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/prop.py b/src/blenderbim/blenderbim/bim/prop.py index 21fb7b6d3a..481b4234f7 100644 --- a/src/blenderbim/blenderbim/bim/prop.py +++ b/src/blenderbim/blenderbim/bim/prop.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/blenderbim/bim/schema.py b/src/blenderbim/blenderbim/bim/schema.py index 4cdeeb2b7e..90ab1ce2e3 100644 --- a/src/blenderbim/blenderbim/bim/schema.py +++ b/src/blenderbim/blenderbim/bim/schema.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -97,6 +96,7 @@ class IfcSchema: ifc = IfcSchema() + def reload(): global ifc ifc = IfcSchema() diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index b67aeb3ba4..639d8411fa 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/docs/conf.py b/src/blenderbim/docs/conf.py index c441ae8a0a..62b5dea99e 100644 --- a/src/blenderbim/docs/conf.py +++ b/src/blenderbim/docs/conf.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/dxf2ifc.py b/src/blenderbim/dxf2ifc.py index 62bdfd9659..8a1bc4e71b 100644 --- a/src/blenderbim/dxf2ifc.py +++ b/src/blenderbim/dxf2ifc.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -20,6 +19,7 @@ import ifcopenshell import ezdxf + class Dxf2Ifc: def execute(self): self.create_ifc_file() @@ -36,7 +36,10 @@ class Dxf2Ifc: [ self.file.createIfcFaceOuterBound( self.file.createIfcPolyLoop( - [self.file.createIfcCartesianPoint((face[index].dxf.location)) for index in range(len(face) -1)] + [ + self.file.createIfcCartesianPoint((face[index].dxf.location)) + for index in range(len(face) - 1) + ] ), True, ) diff --git a/src/blenderbim/extract.py b/src/blenderbim/extract.py index fcc1ac0d3a..c97a95f5c1 100644 --- a/src/blenderbim/extract.py +++ b/src/blenderbim/extract.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/gbxml.py b/src/blenderbim/gbxml.py index 50abaaaee9..591a1c3509 100644 --- a/src/blenderbim/gbxml.py +++ b/src/blenderbim/gbxml.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/generate_util_type_json.py b/src/blenderbim/generate_util_type_json.py index aa93b0b0f8..c73445673d 100644 --- a/src/blenderbim/generate_util_type_json.py +++ b/src/blenderbim/generate_util_type_json.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/getIfcElements.py b/src/blenderbim/getIfcElements.py index 76ed473c31..a62d91ca4e 100644 --- a/src/blenderbim/getIfcElements.py +++ b/src/blenderbim/getIfcElements.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/get_description.py b/src/blenderbim/get_description.py index ebb673eff8..6e7a58975b 100644 --- a/src/blenderbim/get_description.py +++ b/src/blenderbim/get_description.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/get_volume_by_material.py b/src/blenderbim/get_volume_by_material.py index 0f880dd698..dfb96d700c 100644 --- a/src/blenderbim/get_volume_by_material.py +++ b/src/blenderbim/get_volume_by_material.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # diff --git a/src/blenderbim/runpytest.py b/src/blenderbim/runpytest.py index 259800d0d9..c061734528 100755 --- a/src/blenderbim/runpytest.py +++ b/src/blenderbim/runpytest.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2020, 2021 Dion Moult # @@ -28,8 +27,8 @@ import pytest argv = [__file__] -if '--' in sys.argv: - i = sys.argv.index('--') - argv += sys.argv[i+1:] +if "--" in sys.argv: + i = sys.argv.index("--") + argv += sys.argv[i + 1 :] pytest.main(argv) diff --git a/src/blenderbim/test/__init__.py b/src/blenderbim/test/__init__.py index 6e0329dd57..fb33323db9 100644 --- a/src/blenderbim/test/__init__.py +++ b/src/blenderbim/test/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/blenderbim/test/bim/__init__.py b/src/blenderbim/test/bim/__init__.py index 6e0329dd57..fb33323db9 100644 --- a/src/blenderbim/test/bim/__init__.py +++ b/src/blenderbim/test/bim/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/blenderbim/test/bim/module/__init__.py b/src/blenderbim/test/bim/module/__init__.py index 6e0329dd57..fb33323db9 100644 --- a/src/blenderbim/test/bim/module/__init__.py +++ b/src/blenderbim/test/bim/module/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/blenderbim/test/bim/module/drawing/__init__.py b/src/blenderbim/test/bim/module/drawing/__init__.py index 6e0329dd57..fb33323db9 100644 --- a/src/blenderbim/test/bim/module/drawing/__init__.py +++ b/src/blenderbim/test/bim/module/drawing/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/blenderbim/test/bim/module/project/__init__.py b/src/blenderbim/test/bim/module/project/__init__.py index 6e0329dd57..fb33323db9 100644 --- a/src/blenderbim/test/bim/module/project/__init__.py +++ b/src/blenderbim/test/bim/module/project/__init__.py @@ -1,4 +1,3 @@ - # BlenderBIM Add-on - OpenBIM Blender Add-on # Copyright (C) 2021 Dion Moult # @@ -16,4 +15,3 @@ # # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . - diff --git a/src/ifcopenshell-python/Makefile b/src/ifcopenshell-python/Makefile index 30fc3fab6b..369a245e95 100644 --- a/src/ifcopenshell-python/Makefile +++ b/src/ifcopenshell-python/Makefile @@ -2,6 +2,10 @@ test: pytest -p no:pytest-blender test +.PHONY: qa +qa: + black . + .PHONY: coverage coverage: coverage run --source ifcopenshell -m pytest diff --git a/src/ifcopenshell-python/ifcopenshell/alignment.py b/src/ifcopenshell-python/ifcopenshell/alignment.py index 9dc5c9bf3a..ac34537fcd 100644 --- a/src/ifcopenshell-python/ifcopenshell/alignment.py +++ b/src/ifcopenshell-python/ifcopenshell/alignment.py @@ -34,9 +34,7 @@ class circle: radius: numpy.ndarray def __call__(self, u): - return numpy.array( - [self.radius * numpy.cos(u), self.radius * numpy.sin(u), numpy.nan] - ) + return numpy.array([self.radius * numpy.cos(u), self.radius * numpy.sin(u), numpy.nan]) def place(matrix, func): diff --git a/src/ifcopenshell-python/ifcopenshell/api/attribute/data.py b/src/ifcopenshell-python/ifcopenshell/api/attribute/data.py index a6750c18fd..603bae9ab0 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/attribute/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/attribute/data.py @@ -37,12 +37,14 @@ class Data: if data_type == "enum": enum_items = ifcopenshell.util.attribute.get_enum_items(attribute) - cls.products[product_id].append({ - "name": attribute.name(), - "value": value, - "type": data_type, - "enum_items": enum_items, - "list_type": list_type, - "is_optional": attribute.optional(), - "is_null": getattr(product, attribute.name()) is None - }) + cls.products[product_id].append( + { + "name": attribute.name(), + "value": value, + "type": data_type, + "enum_items": enum_items, + "list_type": list_type, + "is_optional": attribute.optional(), + "is_null": getattr(product, attribute.name()) is None, + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/classification/data.py b/src/ifcopenshell-python/ifcopenshell/api/classification/data.py index 00b39ab610..30e686dcd1 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/classification/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/classification/data.py @@ -57,7 +57,7 @@ class Data: for reference in cls._file.by_type("IfcClassificationReference"): data = reference.get_info() if reference.ReferencedSource: - #data["ReferencedSource"] = cls.get_referenced_source(reference.ReferencedSource) + # data["ReferencedSource"] = cls.get_referenced_source(reference.ReferencedSource) data["ReferencedSource"] = reference.ReferencedSource.id() cls.references[reference.id()] = data diff --git a/src/ifcopenshell-python/ifcopenshell/api/classification/edit_classification.py b/src/ifcopenshell-python/ifcopenshell/api/classification/edit_classification.py index 12c60626f7..04088310f6 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/classification/edit_classification.py +++ b/src/ifcopenshell-python/ifcopenshell/api/classification/edit_classification.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "classification": None, - "attributes": {} - } + self.settings = {"classification": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/classification/edit_reference.py b/src/ifcopenshell-python/ifcopenshell/api/classification/edit_reference.py index a37391d11b..8c97468943 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/classification/edit_reference.py +++ b/src/ifcopenshell-python/ifcopenshell/api/classification/edit_reference.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "reference": None, - "attributes": {} - } + self.settings = {"reference": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/add_metric.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/add_metric.py index ce273a61ec..272957d9f1 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/add_metric.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/add_metric.py @@ -1,5 +1,6 @@ import ifcopenshell + class Usecase: def __init__(self, file, **settings): self.file = file @@ -10,11 +11,14 @@ class Usecase: self.settings[key] = value def execute(self): - metric = self.file.create_entity("IfcMetric", **{ - "Name": "Unnamed", - "ConstraintGrade": "NOTDEFINED", - "Benchmark": "EQUALTO", - }) + metric = self.file.create_entity( + "IfcMetric", + **{ + "Name": "Unnamed", + "ConstraintGrade": "NOTDEFINED", + "Benchmark": "EQUALTO", + } + ) if self.settings["objective"]: benchmark_values = list(self.settings["objective"].BenchmarkValues or []) benchmark_values.append(metric) diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/add_objective.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/add_objective.py index a6dc8e2108..e53c8e2355 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/add_objective.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/add_objective.py @@ -1,5 +1,6 @@ import ifcopenshell + class Usecase: def __init__(self, file, **settings): self.file = file @@ -8,8 +9,6 @@ class Usecase: self.settings[key] = value def execute(self): - return self.file.create_entity("IfcObjective", **{ - "Name": "Unnamed", - "ConstraintGrade": "NOTDEFINED", - "ObjectiveQualifier": "NOTDEFINED" - }) + return self.file.create_entity( + "IfcObjective", **{"Name": "Unnamed", "ConstraintGrade": "NOTDEFINED", "ObjectiveQualifier": "NOTDEFINED"} + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/assign_constraint.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/assign_constraint.py index 0489af80d6..e37385f170 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/assign_constraint.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/assign_constraint.py @@ -22,8 +22,11 @@ class Usecase: for rel in self.file.by_type("IfcRelAssociatesConstraint"): if rel.RelatingConstraint == self.settings["constraint"]: return rel - return self.file.create_entity("IfcRelAssociatesConstraint", **{ - "GlobalId": ifcopenshell.guid.new(), - # TODO: owner history - "RelatingConstraint": self.settings["constraint"] - }) + return self.file.create_entity( + "IfcRelAssociatesConstraint", + **{ + "GlobalId": ifcopenshell.guid.new(), + # TODO: owner history + "RelatingConstraint": self.settings["constraint"], + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/data.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/data.py index 3a4791feeb..2817d79e4a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/data.py @@ -15,10 +15,9 @@ class Data: cls.is_loaded = False cls.products = {} cls.objectives = {} - cls.metrics ={} + cls.metrics = {} cls.references = {} - @classmethod def load(cls, file, product_id=None): cls._file = file diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_metric.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_metric.py index f2859769c2..d88c6fdeb7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_metric.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_metric.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "metric": None, - "attributes": {} - } + self.settings = {"metric": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_objective.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_objective.py index 4b569581ee..dfb2dc593d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_objective.py +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/edit_objective.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "objective": None, - "attributes": {} - } + self.settings = {"objective": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/context/add_context.py b/src/ifcopenshell-python/ifcopenshell/api/context/add_context.py index fe96c66ded..cbe9e0b389 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/context/add_context.py +++ b/src/ifcopenshell-python/ifcopenshell/api/context/add_context.py @@ -35,12 +35,15 @@ class Usecase: project.RepresentationContexts = contexts return context parent = parent[0] - return self.file.create_entity("IfcGeometricRepresentationSubContext", **{ - "ContextIdentifier": self.settings["subcontext"], - "ContextType": self.settings["context"], - "ParentContext": parent, - "TargetView": self.settings["target_view"], - }) + return self.file.create_entity( + "IfcGeometricRepresentationSubContext", + **{ + "ContextIdentifier": self.settings["subcontext"], + "ContextType": self.settings["context"], + "ParentContext": parent, + "TargetView": self.settings["target_view"], + } + ) def create_origin(self): self.origin = self.file.createIfcAxis2Placement3D( diff --git a/src/ifcopenshell-python/ifcopenshell/api/context/data.py b/src/ifcopenshell-python/ifcopenshell/api/context/data.py index cd2380bbcf..383d520a14 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/context/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/context/data.py @@ -20,8 +20,5 @@ class Data: "ContextIdentifier": subcontext.ContextIdentifier, "TargetView": subcontext.TargetView, } - cls.contexts[int(context.id())] = { - "ContextType": context.ContextType, - "HasSubContexts": subcontexts - } + cls.contexts[int(context.id())] = {"ContextType": context.ContextType, "HasSubContexts": subcontexts} cls.is_loaded = True diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py b/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py index bb3013e0b9..fac508ff28 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/add_information.py @@ -1,5 +1,6 @@ import ifcopenshell + class Usecase: def __init__(self, file, **settings): self.file = file @@ -9,7 +10,6 @@ class Usecase: def execute(self): id_attribute = "DocumentId" if self.file.schema == "IFC2X3" else "Identification" - return self.file.create_entity("IfcDocumentInformation", **{ - id_attribute: ifcopenshell.guid.new(), - "Name": "Unnamed" - }) + return self.file.create_entity( + "IfcDocumentInformation", **{id_attribute: ifcopenshell.guid.new(), "Name": "Unnamed"} + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/add_reference.py b/src/ifcopenshell-python/ifcopenshell/api/document/add_reference.py index 0e631fefa9..489721e760 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/add_reference.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/add_reference.py @@ -1,5 +1,6 @@ import ifcopenshell + class Usecase: def __init__(self, file, **settings): self.file = file @@ -9,6 +10,4 @@ class Usecase: def execute(self): id_attribute = "ItemReference" if self.file.schema == "IFC2X3" else "Identification" - return self.file.create_entity("IfcDocumentReference", **{ - id_attribute: ifcopenshell.guid.new() - }) + return self.file.create_entity("IfcDocumentReference", **{id_attribute: ifcopenshell.guid.new()}) diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/assign_document.py b/src/ifcopenshell-python/ifcopenshell/api/document/assign_document.py index c056b988b0..5c12610ee4 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/assign_document.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/assign_document.py @@ -34,8 +34,11 @@ class Usecase: ): return self.settings["document"].DocumentInfoForObjects[0] - return self.file.create_entity("IfcRelAssociatesDocument", **{ - "GlobalId": ifcopenshell.guid.new(), - # TODO: owner history - "RelatingDocument": self.settings["document"] - }) + return self.file.create_entity( + "IfcRelAssociatesDocument", + **{ + "GlobalId": ifcopenshell.guid.new(), + # TODO: owner history + "RelatingDocument": self.settings["document"], + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/edit_information.py b/src/ifcopenshell-python/ifcopenshell/api/document/edit_information.py index 1a86df4186..4c19e1708f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/edit_information.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/edit_information.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "information": None, - "attributes": {} - } + self.settings = {"information": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/edit_reference.py b/src/ifcopenshell-python/ifcopenshell/api/document/edit_reference.py index a37391d11b..8c97468943 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/document/edit_reference.py +++ b/src/ifcopenshell-python/ifcopenshell/api/document/edit_reference.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "reference": None, - "attributes": {} - } + self.settings = {"reference": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/data.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/data.py index 5a58b91eaa..6a97e0d9cf 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/data.py @@ -28,6 +28,6 @@ class Data: "ContextType": c.ContextType, "ContextIdentifier": c.ContextIdentifier, "TargetView": c.TargetView if c.is_a("IfcGeometricRepresentationSubContext") else "", - } + }, } cls.products[product_id].append(rep_id) diff --git a/src/ifcopenshell-python/ifcopenshell/api/georeference/add_georeferencing.py b/src/ifcopenshell-python/ifcopenshell/api/georeference/add_georeferencing.py index 4d31164426..71467e7e11 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/georeference/add_georeferencing.py +++ b/src/ifcopenshell-python/ifcopenshell/api/georeference/add_georeferencing.py @@ -11,10 +11,13 @@ class Usecase: if not source_crs: return projected_crs = self.file.create_entity("IfcProjectedCRS", **{"Name": ""}) - self.file.create_entity("IfcMapConversion", **{ - "SourceCRS": source_crs, - "TargetCRS": projected_crs, - "Eastings": 0, - "Northings": 0, - "OrthogonalHeight": 0, - }) + self.file.create_entity( + "IfcMapConversion", + **{ + "SourceCRS": source_crs, + "TargetCRS": projected_crs, + "Eastings": 0, + "Northings": 0, + "OrthogonalHeight": 0, + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/georeference/edit_georeferencing.py b/src/ifcopenshell-python/ifcopenshell/api/georeference/edit_georeferencing.py index 92048230d1..afbcd82a53 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/georeference/edit_georeferencing.py +++ b/src/ifcopenshell-python/ifcopenshell/api/georeference/edit_georeferencing.py @@ -1,5 +1,3 @@ - - class Usecase: def __init__(self, file, **settings): self.file = file diff --git a/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py b/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py index c9817760b5..c7cd97671a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py +++ b/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py @@ -11,10 +11,9 @@ class Usecase: self.settings[key] = value def execute(self): - element = self.file.create_entity("IfcGridAxis", **{ - "axis_tag": self.settings["axis_tag"], - "SameSense": self.settings["same_sense"] - }) + element = self.file.create_entity( + "IfcGridAxis", **{"axis_tag": self.settings["axis_tag"], "SameSense": self.settings["same_sense"]} + ) axes = list(getattr(self.settings["grid"], self.settings["uvw_axes"]) or []) axes.append(element) setattr(self.settings["grid"], self.settings["uvw_axes"], axes) diff --git a/src/ifcopenshell-python/ifcopenshell/api/group/add_group.py b/src/ifcopenshell-python/ifcopenshell/api/group/add_group.py index 1a35093ff0..5dcaadc95c 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/group/add_group.py +++ b/src/ifcopenshell-python/ifcopenshell/api/group/add_group.py @@ -10,8 +10,11 @@ class Usecase: self.settings[key] = value def execute(self): - return self.file.create_entity("IfcGroup", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "Name": "Unnamed" - }) + return self.file.create_entity( + "IfcGroup", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "Name": "Unnamed", + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/group/assign_group.py b/src/ifcopenshell-python/ifcopenshell/api/group/assign_group.py index 34bf010531..b7d01344e3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/group/assign_group.py +++ b/src/ifcopenshell-python/ifcopenshell/api/group/assign_group.py @@ -14,12 +14,15 @@ class Usecase: def execute(self): if not self.settings["group"].IsGroupedBy: - return self.file.create_entity("IfcRelAssignsToGroup", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "RelatedObjects": [self.settings["product"]], - "RelatingGroup": self.settings["group"] - }) + return self.file.create_entity( + "IfcRelAssignsToGroup", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatedObjects": [self.settings["product"]], + "RelatingGroup": self.settings["group"], + } + ) rel = self.settings["group"].IsGroupedBy[0] related_objects = set(rel.RelatedObjects) or set() related_objects.add(self.settings["product"]) diff --git a/src/ifcopenshell-python/ifcopenshell/api/group/data.py b/src/ifcopenshell-python/ifcopenshell/api/group/data.py index bcfffbe5b2..9714b36bc0 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/group/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/group/data.py @@ -21,4 +21,4 @@ class Data: data = group.get_info() del data["OwnerHistory"] cls.groups[group.id()] = data - cls.is_loaded=True + cls.is_loaded = True diff --git a/src/ifcopenshell-python/ifcopenshell/api/group/edit_group.py b/src/ifcopenshell-python/ifcopenshell/api/group/edit_group.py index 1111ce7f35..928eb6a4ee 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/group/edit_group.py +++ b/src/ifcopenshell-python/ifcopenshell/api/group/edit_group.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "group": None, - "attributes": {} - } + self.settings = {"group": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/layer/add_layer.py b/src/ifcopenshell-python/ifcopenshell/api/layer/add_layer.py index edfe94275a..1a72e5a289 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/layer/add_layer.py +++ b/src/ifcopenshell-python/ifcopenshell/api/layer/add_layer.py @@ -6,6 +6,4 @@ class Usecase: self.settings[key] = value def execute(self): - return self.file.create_entity("IfcPresentationLayerAssignment", **{ - "Name": "Unnamed" - }) + return self.file.create_entity("IfcPresentationLayerAssignment", **{"Name": "Unnamed"}) diff --git a/src/ifcopenshell-python/ifcopenshell/api/layer/edit_layer.py b/src/ifcopenshell-python/ifcopenshell/api/layer/edit_layer.py index 0c2da2e637..6404c8dfc8 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/layer/edit_layer.py +++ b/src/ifcopenshell-python/ifcopenshell/api/layer/edit_layer.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "layer": None, - "attributes": {} - } + self.settings = {"layer": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/add_layer.py b/src/ifcopenshell-python/ifcopenshell/api/material/add_layer.py index 5ced4395ed..eaf377ccc3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/add_layer.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/add_layer.py @@ -7,10 +7,9 @@ class Usecase: def execute(self): layers = list(self.settings["layer_set"].MaterialLayers or []) - layer = self.file.create_entity("IfcMaterialLayer", **{ - "Material": self.settings["material"], - "LayerThickness": 1. - }) + layer = self.file.create_entity( + "IfcMaterialLayer", **{"Material": self.settings["material"], "LayerThickness": 1.0} + ) layers.append(layer) self.settings["layer_set"].MaterialLayers = layers return layer diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_assigned_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_assigned_material.py index f8dca15b0e..668d93fae2 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/edit_assigned_material.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_assigned_material.py @@ -1,10 +1,7 @@ -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "element": None, - "attributes": {} - } + self.settings = {"element": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_constituent.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_constituent.py index 3ba02305d1..8f9c19361c 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/edit_constituent.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_constituent.py @@ -1,11 +1,7 @@ -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "constituent": None, - "attributes": {}, - "material": None - } + self.settings = {"constituent": None, "attributes": {}, "material": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer.py index fa4fdffca2..36ecd57b8b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_layer.py @@ -1,11 +1,7 @@ -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "layer": None, - "attributes": {}, - "material": None - } + self.settings = {"layer": None, "attributes": {}, "material": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile.py index 00777c6dba..9ed60cd546 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile.py @@ -1,12 +1,7 @@ -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "profile": None, - "attributes": {}, - "profile_attributes": {}, - "material": None - } + self.settings = {"profile": None, "attributes": {}, "profile_attributes": {}, "material": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile_usage.py b/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile_usage.py index 2c2039e2ce..3e6e287254 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile_usage.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/edit_profile_usage.py @@ -46,11 +46,14 @@ class Usecase: name = dummy_profile.attribute_name(i) if "Radius" in name and name != "RoundingRadius": dummy_profile[i] = None - dummy_solid = self.dummy.create_entity("IfcExtrudedAreaSolid", **{ - "SweptArea": dummy_profile, - "ExtrudedDirection": self.dummy.createIfcDirection((0., 0., 1.)), - "Depth": 1 - }) + dummy_solid = self.dummy.create_entity( + "IfcExtrudedAreaSolid", + **{ + "SweptArea": dummy_profile, + "ExtrudedDirection": self.dummy.createIfcDirection((0.0, 0.0, 1.0)), + "Depth": 1, + } + ) self.settings_2d = ifcopenshell.geom.settings() self.settings_2d.set(self.settings_2d.INCLUDE_CURVES, True) shape = ifcopenshell.geom.create_shape(self.settings_2d, dummy_solid) @@ -77,61 +80,61 @@ class Usecase: def get_bottom_left(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] width = max(x) - min(x) height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, height / 2, 0.0))) def get_bottom_centre(self, shape): v = shape.verts - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, height / 2, 0.0))) def get_bottom_right(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] width = max(x) - min(x) height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, height / 2, 0.0))) def get_mid_depth_left(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] width = max(x) - min(x) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, 0., 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, 0.0, 0.0))) def get_mid_depth_centre(self, shape): - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., 0., 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, 0.0, 0.0))) def get_mid_depth_right(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] width = max(x) - min(x) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, 0., 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, 0.0, 0.0))) def get_top_left(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] width = max(x) - min(x) height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, -height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, -height / 2, 0.0))) def get_top_centre(self, shape): v = shape.verts - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., -height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, -height / 2, 0.0))) def get_top_right(self, shape): v = shape.verts x = [v[i] for i in range(0, len(v), 3)] - y = [v[i+1] for i in range(0, len(v), 3)] + y = [v[i + 1] for i in range(0, len(v), 3)] width = max(x) - min(x) height = max(y) - min(y) - return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, -height/2, 0.))) + return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, -height / 2, 0.0))) def update_representation(self, element): representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW") diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py index 4c00df396b..d5ae706e66 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py @@ -7,7 +7,9 @@ class Usecase: def execute(self): address = self.file.create_entity(self.settings["ifc_class"], "OFFICE") - addresses = list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else [] + addresses = ( + list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else [] + ) addresses.append(address) self.settings["assigned_object"].Addresses = addresses return address diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_address.py b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_address.py index 4abb9d5542..9363cfdecc 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_address.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_address.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "address": None, - "attributes": {} - } + self.settings = {"address": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_organisation.py b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_organisation.py index c9705ac7cb..fec153ca5c 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_organisation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_organisation.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "organisation": None, - "attributes": {} - } + self.settings = {"organisation": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_person.py b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_person.py index f8f96afe94..aa209ad31c 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_person.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_person.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "person": None, - "attributes": {} - } + self.settings = {"person": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_role.py b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_role.py index fda91bee32..3b4c99d2b0 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/edit_role.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/edit_role.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "role": None, - "attributes": {} - } + self.settings = {"role": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/settings.py b/src/ifcopenshell-python/ifcopenshell/api/owner/settings.py index 92ff983ad0..4e7b48dda1 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/settings.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/settings.py @@ -3,7 +3,7 @@ def get_person(ifc): people = ifc.by_type("IfcPerson") or [None] - return people [0] + return people[0] def get_organisation(ifc): diff --git a/src/ifcopenshell-python/ifcopenshell/api/profile/edit_profile.py b/src/ifcopenshell-python/ifcopenshell/api/profile/edit_profile.py index 1dd4eac2b8..58585515c8 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/profile/edit_profile.py +++ b/src/ifcopenshell-python/ifcopenshell/api/profile/edit_profile.py @@ -1,4 +1,4 @@ -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file self.settings = {"profile": None, "attributes": {}} diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_prop_template.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_prop_template.py index b57b36cf82..5238609250 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_prop_template.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_prop_template.py @@ -9,13 +9,16 @@ class Usecase: self.settings[key] = value def execute(self): - prop_template = self.file.create_entity("IfcSimplePropertyTemplate", **{ - "GlobalId": ifcopenshell.guid.new(), - "Name": "NewProperty", - "PrimaryMeasureType": "IfcLabel", - "TemplateType": "P_SINGLEVALUE", - "AccessState": "READWRITE" - }) + prop_template = self.file.create_entity( + "IfcSimplePropertyTemplate", + **{ + "GlobalId": ifcopenshell.guid.new(), + "Name": "NewProperty", + "PrimaryMeasureType": "IfcLabel", + "TemplateType": "P_SINGLEVALUE", + "AccessState": "READWRITE", + } + ) has_property_templates = list(self.settings["pset_template"].HasPropertyTemplates or []) has_property_templates.append(prop_template) self.settings["pset_template"].HasPropertyTemplates = has_property_templates diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py index 341790790b..17cc92ee33 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/add_pset_template.py @@ -9,9 +9,12 @@ class Usecase: self.settings[key] = value def execute(self): - self.file.create_entity("IfcPropertySetTemplate", **{ - "GlobalId": ifcopenshell.guid.new(), - "Name": "New_Pset", - "TemplateType": "PSET_TYPEDRIVENONLY", - "ApplicableEntity": "IfcTypeObject" - }) + self.file.create_entity( + "IfcPropertySetTemplate", + **{ + "GlobalId": ifcopenshell.guid.new(), + "Name": "New_Pset", + "TemplateType": "PSET_TYPEDRIVENONLY", + "ApplicableEntity": "IfcTypeObject", + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/data.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/data.py index d3c9ccb040..13d7a90047 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/data.py @@ -29,6 +29,6 @@ class Data: "GlobalId": data["GlobalId"], "Name": data["Name"], "Description": data["Description"], - "PrimaryMeasureType": data["PrimaryMeasureType"] + "PrimaryMeasureType": data["PrimaryMeasureType"], } cls.is_loaded = True diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_prop_template.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_prop_template.py index 0221852eea..f08855622e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_prop_template.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_prop_template.py @@ -4,9 +4,7 @@ import ifcopenshell.util.element class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "prop_template": None - } + self.settings = {"prop_template": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_pset_template.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_pset_template.py index 16f0246782..36be2c41da 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_pset_template.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/remove_pset_template.py @@ -4,9 +4,7 @@ import ifcopenshell.util.element class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "pset_template": None - } + self.settings = {"pset_template": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py index ccba773efc..2230f865b7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource.py @@ -25,11 +25,12 @@ class Usecase: # https://forums.buildingsmart.org/t/what-are-allowed-to-be-root-level-construction-resources/3550 if self.settings["parent_resource"]: ifcopenshell.api.run( - "nest.assign_object", self.file, related_object=resource, relating_object=self.settings["parent_resource"] + "nest.assign_object", + self.file, + related_object=resource, + relating_object=self.settings["parent_resource"], ) else: context = self.file.by_type("IfcContext")[0] - ifcopenshell.api.run( - "project.assign_declaration", self.file, definition=resource, relating_context=context - ) + ifcopenshell.api.run("project.assign_declaration", self.file, definition=resource, relating_context=context) return resource diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py index fa2553b723..fc231d2707 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/add_resource_time.py @@ -1,5 +1,6 @@ import ifcopenshell.util.date + class Usecase: def __init__(self, file, **settings): self.file = file diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/data.py b/src/ifcopenshell-python/ifcopenshell/api/resource/data.py index 462e310840..410bfdaee5 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/resource/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/data.py @@ -23,7 +23,7 @@ class Data(CostValueTrait): return cls.load_resources() cls.load_resource_times() - cls.is_loaded=True + cls.is_loaded = True @classmethod def load_resources(cls): @@ -63,6 +63,6 @@ class Data(CostValueTrait): continue if "Start" in key or "Finish" in key or key == "StatusTime": data[key] = ifcopenshell.util.date.ifc2datetime(value) - elif "Work" in key or key =="LevelingDelay": + elif "Work" in key or key == "LevelingDelay": data[key] = ifcopenshell.util.date.ifc2datetime(value) cls.resource_times[resource_time.id()] = data diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py b/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py index b56d8c2947..46701b67d1 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/edit_resource_time.py @@ -18,10 +18,7 @@ class Usecase: and "ScheduleFinish" in self.settings["attributes"].keys() ): del self.settings["attributes"]["ScheduleFinish"] - if ( - self.settings["attributes"].get("ActualWork", None) - and "ActualFinish" in self.settings["attributes"].keys() - ): + if self.settings["attributes"].get("ActualWork", None) and "ActualFinish" in self.settings["attributes"].keys(): del self.settings["attributes"]["ActualFinish"] for name, value in self.settings["attributes"].items(): diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py b/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py index b0ed4132a2..a6167d6002 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/create_entity.py @@ -14,10 +14,13 @@ class Usecase: self.settings[key] = value def execute(self): - element = self.file.create_entity(self.settings["ifc_class"], **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file) - }) + element = self.file.create_entity( + self.settings["ifc_class"], + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + } + ) element.Name = self.settings["name"] or None if self.settings["predefined_type"]: if hasattr(element, "PredefinedType"): diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/data.py b/src/ifcopenshell-python/ifcopenshell/api/root/data.py index 2fe987f5dc..f4dfafa911 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/data.py @@ -13,5 +13,5 @@ class Data: cls.products[product_id] = { "type": product.is_a(), "PredefinedType": product.PredefinedType if hasattr(product, "PredefinedType") else None, - "ObjectType": product.ObjectType if hasattr(product, "ObjectType") else None + "ObjectType": product.ObjectType if hasattr(product, "ObjectType") else None, } diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task_time.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task_time.py index b83545d38e..856fcbd592 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task_time.py @@ -1,5 +1,6 @@ import ifcopenshell.util.date + class Usecase: def __init__(self, file, **settings): self.file = file diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/add_work_plan.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_work_plan.py index 3d8e2cc3ca..c205f8f333 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/add_work_plan.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_work_plan.py @@ -25,7 +25,5 @@ class Usecase: work_plan.StartTime = ifcopenshell.util.date.datetime2ifc(self.settings["start_time"], "IfcDateTime") context = self.file.by_type("IfcContext")[0] - ifcopenshell.api.run( - "project.assign_declaration", self.file, definition=work_plan, relating_context=context - ) + ifcopenshell.api.run("project.assign_declaration", self.file, definition=work_plan, relating_context=context) return work_plan diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/calculate_task_duration.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/calculate_task_duration.py index 93520337ff..e46915332a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/calculate_task_duration.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/calculate_task_duration.py @@ -38,7 +38,11 @@ class Usecase: if not work_schedule: return default_seconds_per_day psets = ifcopenshell.util.element.get_psets(work_schedule) - if not psets or "Pset_WorkControlCommon" not in psets or "WorkDayDuration" not in psets["Pset_WorkControlCommon"]: + if ( + not psets + or "Pset_WorkControlCommon" not in psets + or "WorkDayDuration" not in psets["Pset_WorkControlCommon"] + ): return default_seconds_per_day work_day_duration = ifcopenshell.util.date.ifc2datetime(psets["Pset_WorkControlCommon"]["WorkDayDuration"]) return work_day_duration.seconds diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/data.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/data.py index 90b70af5b3..a58fd731b2 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/data.py @@ -142,8 +142,14 @@ class Data: for r in task.HasAssignments if r.is_a("IfcRelAssignsToProduct") ] - [data["Resources"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcResource")]) for r in task.OperatesOn] - [data["Controls"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcControl")]) for r in task.OperatesOn] + [ + data["Resources"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcResource")]) + for r in task.OperatesOn + ] + [ + data["Controls"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcControl")]) + for r in task.OperatesOn + ] [data["Inputs"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcProduct")]) for r in task.OperatesOn] [data["IsPredecessorTo"].append(rel.id()) for rel in task.IsPredecessorTo or []] [data["IsSuccessorFrom"].append(rel.id()) for rel in task.IsSuccessorFrom or []] diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py index 9204323477..dd9da22c15 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/edit_task_time.py @@ -55,13 +55,10 @@ class Usecase: elif "ScheduleFinish" in self.settings["attributes"].keys() and self.settings["task_time"].ScheduleStart: self.calculate_duration() - if ( - self.settings["task_time"].ScheduleDuration - and ( - "ScheduleStart" in self.settings["attributes"].keys() - or "ScheduleFinish" in self.settings["attributes"].keys() - or "ScheduleDuration" in self.settings["attributes"].keys() - ) + if self.settings["task_time"].ScheduleDuration and ( + "ScheduleStart" in self.settings["attributes"].keys() + or "ScheduleFinish" in self.settings["attributes"].keys() + or "ScheduleDuration" in self.settings["attributes"].keys() ): ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=self.task) diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/remove_work_schedule.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/remove_work_schedule.py index b9323223b5..acc122f79e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/remove_work_schedule.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/remove_work_schedule.py @@ -19,9 +19,5 @@ class Usecase: for rel in self.settings["work_schedule"].Controls: for related_object in rel.RelatedObjects: if related_object.is_a("IfcTask"): - ifcopenshell.api.run( - "sequence.remove_task", - self.file, - task=related_object - ) + ifcopenshell.api.run("sequence.remove_task", self.file, task=related_object) self.file.remove(self.settings["work_schedule"]) 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 9cf40abec1..99beeffda7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/unassign_lag_time.py @@ -15,6 +15,4 @@ class Usecase: self.file.remove(self.settings["rel_sequence"].TimeLag) else: self.settings["rel_sequence"].TimeLag = None - ifcopenshell.api.run( - "sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess - ) + ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess) diff --git a/src/ifcopenshell-python/ifcopenshell/api/spatial/data.py b/src/ifcopenshell-python/ifcopenshell/api/spatial/data.py index 03118e0ab0..ca8fcf716f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/spatial/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/spatial/data.py @@ -46,5 +46,5 @@ class Data: "Name": element.Name, "LongName": element.LongName, "Decomposes": decomposes, - "IsDecomposedBy": is_decomposed_by + "IsDecomposedBy": is_decomposed_by, } diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/assign_structural_analysis_model.py b/src/ifcopenshell-python/ifcopenshell/api/structural/assign_structural_analysis_model.py index a2925e7981..a55e222db4 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/assign_structural_analysis_model.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/assign_structural_analysis_model.py @@ -14,12 +14,15 @@ class Usecase: def execute(self): if not self.settings["structural_analysis_model"].IsGroupedBy: - return self.file.create_entity("IfcRelAssignsToGroup", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "RelatedObjects": [self.settings["product"]], - "RelatingGroup": self.settings["structural_analysis_model"] - }) + return self.file.create_entity( + "IfcRelAssignsToGroup", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatedObjects": [self.settings["product"]], + "RelatingGroup": self.settings["structural_analysis_model"], + } + ) rel = self.settings["structural_analysis_model"].IsGroupedBy[0] related_objects = set(rel.RelatedObjects) or set() related_objects.add(self.settings["product"]) diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/data.py b/src/ifcopenshell-python/ifcopenshell/api/structural/data.py index 290f2b956c..f124708583 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/data.py @@ -155,7 +155,9 @@ class Data: if connection.is_a("IfcStructuralCurveConnection"): data["Axis"] = data["Axis"].id() if data["Axis"] is not None else None if connection.is_a("IfcStructuralPointConnection"): - data["ConditionCoordinateSystem"] = data["ConditionCoordinateSystem"].id() if data["ConditionCoordinateSystem"] is not None else None + data["ConditionCoordinateSystem"] = ( + data["ConditionCoordinateSystem"].id() if data["ConditionCoordinateSystem"] is not None else None + ) data["ConnectsStructuralMembers"] = [] @@ -238,7 +240,7 @@ class Data: data["Representation"] = data["Representation"].id() if data["Representation"] is not None else None if member.is_a("IfcStructuralCurveMember"): data["Axis"] = data["Axis"].id() if data["Axis"] is not None else None - + data["ConnectsStructuralActivities"] = [] data["ConnectedBy"] = [] @@ -249,6 +251,5 @@ class Data: for rel in member.ConnectedBy or []: cls.load_connects_structural_member(rel) data["ConnectedBy"].append(rel.id()) - cls.members[member.id()] = data diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_analysis_model.py b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_analysis_model.py index 9fe0dfd108..5ff29bb296 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_analysis_model.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_analysis_model.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "structural_analysis_model": None, - "attributes": {} - } + self.settings = {"structural_analysis_model": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_boundary_condition.py b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_boundary_condition.py index 0862310e6f..02c0f3a612 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_boundary_condition.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_boundary_condition.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "condition": None, - "attributes": {} - } + self.settings = {"condition": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_connection_cs.py b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_connection_cs.py index f466bbbe92..79c916d407 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_connection_cs.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_connection_cs.py @@ -11,7 +11,7 @@ class Usecase: ccs = self.file.createIfcAxis2Placement3D(point, None, None) self.settings["structural_item"].ConditionCoordinateSystem = ccs print(ccs) - + ccs = self.settings["structural_item"].ConditionCoordinateSystem print("use case") print(ccs) @@ -20,4 +20,4 @@ class Usecase: ccs.Axis = self.file.createIfcDirection(self.settings["axis"]) if ccs.RefDirection and len(self.file.get_inverse(ccs.RefDirection)) == 1: self.file.remove(ccs.RefDirection) - ccs.RefDirection = self.file.createIfcDirection(self.settings["ref_direction"]) \ No newline at end of file + ccs.RefDirection = self.file.createIfcDirection(self.settings["ref_direction"]) diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_load.py b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_load.py index bf60bc339c..a98d94e8fa 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_load.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/edit_structural_load.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "structural_load": None, - "attributes": {} - } + self.settings = {"structural_load": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/remove_structural_connection_condition.py b/src/ifcopenshell-python/ifcopenshell/api/structural/remove_structural_connection_condition.py index 0b376f9895..b01dbf1443 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/structural/remove_structural_connection_condition.py +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/remove_structural_connection_condition.py @@ -16,4 +16,3 @@ class Usecase: **{"connection": self.settings["relation"].RelatedStructuralConnection} ) self.file.remove(self.settings["relation"]) - diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/assign_material_style.py b/src/ifcopenshell-python/ifcopenshell/api/style/assign_material_style.py index 8ce9c2d16c..c47ca6e0e3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/style/assign_material_style.py +++ b/src/ifcopenshell-python/ifcopenshell/api/style/assign_material_style.py @@ -63,8 +63,8 @@ class Usecase: def get_styled_representation(self, definition_representation): representations = [ r - for r in definition_representation.Representations if r.is_a("IfcStyledRepresentation") - and r.ContextOfItems == self.settings["context"] + for r in definition_representation.Representations + if r.is_a("IfcStyledRepresentation") and r.ContextOfItems == self.settings["context"] ] if representations: return representations[0] diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py index abb1e9a4ea..49959720a2 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py +++ b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style_colours.py @@ -3,20 +3,16 @@ class Usecase: self.file = file self.settings = { "style": None, - "surface_colour": [], # RGB - "diffuse_colour": [], # RGB + "surface_colour": [], # RGB + "diffuse_colour": [], # RGB "transparency": 0, - "external_definition": { - "location": None, - "identification": None, - "name": "Name" - }, + "external_definition": {"location": None, "identification": None, "name": "Name"}, } for key, value in settings.items(): self.settings[key] = value def execute(self): - #has_external_definition = None + # has_external_definition = None for element in self.file.traverse(self.settings["style"]): if element.is_a("IfcSurfaceStyleShading"): if element.SurfaceColour: @@ -30,28 +26,32 @@ class Usecase: else: element.DiffuseColour = self.create_colour_rgb(self.settings["diffuse_colour"]) # TODO: Move to separate usecase - #if element.is_a("IfcExternallyDefinedSurfaceStyle"): + # if element.is_a("IfcExternallyDefinedSurfaceStyle"): # element.Location = self.settings["location"] # element.Identification = self.settings["identification"] # element.Name = self.settings["name"] # has_external_definition = True - #if not has_external_definition: + # if not has_external_definition: # styles = list(self.settings["style"].Styles) # styles.append(self.create_externally_defined_surface_style()) # self.settings["style"].Styles = styles return self.settings["style"] def create_surface_style_rendering(self): - return self.file.create_entity("IfcSurfaceStyleRendering", **{ - "SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]), - "Transparency": self.settings["transparency"], - "ReflectanceMethod": "NOTDEFINED", - "DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]) - }) + return self.file.create_entity( + "IfcSurfaceStyleRendering", + **{ + "SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]), + "Transparency": self.settings["transparency"], + "ReflectanceMethod": "NOTDEFINED", + "DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]), + } + ) def create_externally_defined_surface_style(self): self.file.create_entity( - "IfcExternallyDefinedSurfaceStyle", **{ + "IfcExternallyDefinedSurfaceStyle", + **{ "Location": self.settings["location"], "Identification": self.settings["identification"], "Name": self.settings["name"], diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py index b3226724c5..b340d0b3e6 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py +++ b/src/ifcopenshell-python/ifcopenshell/api/system/add_system.py @@ -10,8 +10,11 @@ class Usecase: self.settings[key] = value def execute(self): - return self.file.create_entity("IfcSystem", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "Name": "Unnamed" - }) + return self.file.create_entity( + "IfcSystem", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "Name": "Unnamed", + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py index 265afac4bd..d3c15b08c3 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py +++ b/src/ifcopenshell-python/ifcopenshell/api/system/assign_system.py @@ -14,12 +14,15 @@ class Usecase: def execute(self): if not self.settings["system"].IsGroupedBy: - return self.file.create_entity("IfcRelAssignsToGroup", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "RelatedObjects": [self.settings["product"]], - "RelatingGroup": self.settings["system"] - }) + return self.file.create_entity( + "IfcRelAssignsToGroup", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatedObjects": [self.settings["product"]], + "RelatingGroup": self.settings["system"], + } + ) rel = self.settings["system"].IsGroupedBy[0] related_objects = set(rel.RelatedObjects) or set() related_objects.add(self.settings["product"]) diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/data.py b/src/ifcopenshell-python/ifcopenshell/api/system/data.py index 2a171f6a50..24c4fc67a9 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/system/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/system/data.py @@ -21,4 +21,4 @@ class Data: data = system.get_info() del data["OwnerHistory"] cls.systems[system.id()] = data - cls.is_loaded=True + cls.is_loaded = True diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py b/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py index 734e9937c3..a9021e312f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py +++ b/src/ifcopenshell-python/ifcopenshell/api/system/edit_system.py @@ -1,10 +1,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "system": None, - "attributes": {} - } + self.settings = {"system": None, "attributes": {}} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/type/unassign_type.py b/src/ifcopenshell-python/ifcopenshell/api/type/unassign_type.py index 3bb7d06d7f..27dd97e80b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/type/unassign_type.py +++ b/src/ifcopenshell-python/ifcopenshell/api/type/unassign_type.py @@ -5,9 +5,7 @@ import ifcopenshell.api class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = { - "related_object": None - } + self.settings = {"related_object": None} for key, value in settings.items(): self.settings[key] = value diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py index ceb8d7d401..292b2ab777 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py +++ b/src/ifcopenshell-python/ifcopenshell/api/unit/remove_unit.py @@ -2,7 +2,7 @@ import ifcopenshell.util.unit import ifcopenshell.util.element -class Usecase(): +class Usecase: def __init__(self, file, **settings): self.file = file self.settings = {"unit": None} diff --git a/src/ifcopenshell-python/ifcopenshell/api/void/add_filling.py b/src/ifcopenshell-python/ifcopenshell/api/void/add_filling.py index 48393d1874..33784b4cfa 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/void/add_filling.py +++ b/src/ifcopenshell-python/ifcopenshell/api/void/add_filling.py @@ -9,8 +9,11 @@ class Usecase: self.settings[key] = value def execute(self): - self.file.create_entity("IfcRelFillsElement", **{ - "GlobalId": ifcopenshell.guid.new(), - "RelatingOpeningElement": self.settings["opening"], - "RelatedBuildingElement": self.settings["element"] - }) + self.file.create_entity( + "IfcRelFillsElement", + **{ + "GlobalId": ifcopenshell.guid.new(), + "RelatingOpeningElement": self.settings["opening"], + "RelatedBuildingElement": self.settings["element"], + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/void/add_opening.py b/src/ifcopenshell-python/ifcopenshell/api/void/add_opening.py index 541a35d1f3..af97c931a7 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/void/add_opening.py +++ b/src/ifcopenshell-python/ifcopenshell/api/void/add_opening.py @@ -10,9 +10,12 @@ class Usecase: self.settings[key] = value def execute(self): - self.file.create_entity("IfcRelVoidsElement", **{ - "GlobalId": ifcopenshell.guid.new(), - "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), - "RelatingBuildingElement": self.settings["element"], - "RelatedOpeningElement": self.settings["opening"] - }) + self.file.create_entity( + "IfcRelVoidsElement", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatingBuildingElement": self.settings["element"], + "RelatedOpeningElement": self.settings["opening"], + } + ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/void/data.py b/src/ifcopenshell-python/ifcopenshell/api/void/data.py index 1f8da638ee..9f9caad55f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/void/data.py +++ b/src/ifcopenshell-python/ifcopenshell/api/void/data.py @@ -40,9 +40,9 @@ class Data: cls.fillings[filling_id] = {"Name": filling.Name, "FillsVoid": opening_id} cls.openings[opening_id]["HasFillings"].add(filling_id) return # See bug #1224 - #if not hasattr(product, "HasOpenings") or not product.HasOpenings: + # if not hasattr(product, "HasOpenings") or not product.HasOpenings: # return - #for rel_voids_element in product.HasOpenings: + # for rel_voids_element in product.HasOpenings: # opening = rel_voids_element.RelatedOpeningElement # opening_id = int(opening.id()) # fillings = [] diff --git a/src/ifcopenshell-python/ifcopenshell/express/express_parser.py b/src/ifcopenshell-python/ifcopenshell/express/express_parser.py index ddf9cf697c..2c9e30364f 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/express_parser.py +++ b/src/ifcopenshell-python/ifcopenshell/express/express_parser.py @@ -1,4 +1,3 @@ - # This file is generated by IfcOpenShell ifcexpressparser bootstrap.py import os @@ -11,16 +10,21 @@ import mapping from pyparsing import * from nodes import * + def parse(fn): cache_file = fn + ".cache.dat" if os.path.exists(cache_file) and os.path.getmtime(cache_file) >= os.path.getmtime(fn): with open(cache_file, "rb") as f: m = pickle.load(f) - else: + else: ABS = (CaselessKeyword("abs")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ABS"))("ABS") - ABSTRACT = (CaselessKeyword("abstract")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ABSTRACT"))("ABSTRACT") + ABSTRACT = (CaselessKeyword("abstract")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ABSTRACT"))( + "ABSTRACT" + ) ACOS = (CaselessKeyword("acos")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ACOS"))("ACOS") - AGGREGATE = (CaselessKeyword("aggregate")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="AGGREGATE"))("AGGREGATE") + AGGREGATE = (CaselessKeyword("aggregate")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="AGGREGATE"))( + "AGGREGATE" + ) ALIAS = (CaselessKeyword("alias")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ALIAS"))("ALIAS") AND = (CaselessKeyword("and")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="AND"))("AND") ANDOR = (CaselessKeyword("andor")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ANDOR"))("ANDOR") @@ -29,64 +33,122 @@ def parse(fn): ASIN = (CaselessKeyword("asin")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ASIN"))("ASIN") ATAN = (CaselessKeyword("atan")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ATAN"))("ATAN") BAG = (CaselessKeyword("bag")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BAG"))("BAG") - BASED_ON = (CaselessKeyword("based_on")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BASED_ON"))("BASED_ON") + BASED_ON = (CaselessKeyword("based_on")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BASED_ON"))( + "BASED_ON" + ) BEGIN = (CaselessKeyword("begin")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BEGIN"))("BEGIN") BINARY = (CaselessKeyword("binary")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BINARY"))("BINARY") - BLENGTH = (CaselessKeyword("blength")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BLENGTH"))("BLENGTH") - BOOLEAN = (CaselessKeyword("boolean")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BOOLEAN"))("BOOLEAN") + BLENGTH = (CaselessKeyword("blength")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BLENGTH"))( + "BLENGTH" + ) + BOOLEAN = (CaselessKeyword("boolean")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BOOLEAN"))( + "BOOLEAN" + ) BY = (CaselessKeyword("by")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="BY"))("BY") CASE = (CaselessKeyword("case")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="CASE"))("CASE") - CONSTANT = (CaselessKeyword("constant")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="CONSTANT"))("CONSTANT") - CONST_E = (CaselessKeyword("const_e")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="CONST_E"))("CONST_E") + CONSTANT = (CaselessKeyword("constant")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="CONSTANT"))( + "CONSTANT" + ) + CONST_E = (CaselessKeyword("const_e")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="CONST_E"))( + "CONST_E" + ) COS = (CaselessKeyword("cos")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="COS"))("COS") DERIVE = (CaselessKeyword("derive")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="DERIVE"))("DERIVE") DIV = (CaselessKeyword("div")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="DIV"))("DIV") ELSE = (CaselessKeyword("else")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ELSE"))("ELSE") END = (CaselessKeyword("end")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END"))("END") - END_ALIAS = (CaselessKeyword("end_alias")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_ALIAS"))("END_ALIAS") - END_CASE = (CaselessKeyword("end_case")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_CASE"))("END_CASE") - END_CONSTANT = (CaselessKeyword("end_constant")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_CONSTANT"))("END_CONSTANT") - END_ENTITY = (CaselessKeyword("end_entity")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_ENTITY"))("END_ENTITY") - END_FUNCTION = (CaselessKeyword("end_function")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_FUNCTION"))("END_FUNCTION") + END_ALIAS = (CaselessKeyword("end_alias")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_ALIAS"))( + "END_ALIAS" + ) + END_CASE = (CaselessKeyword("end_case")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_CASE"))( + "END_CASE" + ) + END_CONSTANT = (CaselessKeyword("end_constant")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_CONSTANT") + )("END_CONSTANT") + END_ENTITY = (CaselessKeyword("end_entity")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_ENTITY") + )("END_ENTITY") + END_FUNCTION = (CaselessKeyword("end_function")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_FUNCTION") + )("END_FUNCTION") END_IF = (CaselessKeyword("end_if")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_IF"))("END_IF") - END_LOCAL = (CaselessKeyword("end_local")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_LOCAL"))("END_LOCAL") - END_PROCEDURE = (CaselessKeyword("end_procedure")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_PROCEDURE"))("END_PROCEDURE") - END_REPEAT = (CaselessKeyword("end_repeat")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_REPEAT"))("END_REPEAT") - END_RULE = (CaselessKeyword("end_rule")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_RULE"))("END_RULE") - END_SCHEMA = (CaselessKeyword("end_schema")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_SCHEMA"))("END_SCHEMA") - END_SUBTYPE_CONSTRAINT = (CaselessKeyword("end_subtype_constraint")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_SUBTYPE_CONSTRAINT"))("END_SUBTYPE_CONSTRAINT") - END_TYPE = (CaselessKeyword("end_type")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_TYPE"))("END_TYPE") + END_LOCAL = (CaselessKeyword("end_local")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_LOCAL"))( + "END_LOCAL" + ) + END_PROCEDURE = (CaselessKeyword("end_procedure")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_PROCEDURE") + )("END_PROCEDURE") + END_REPEAT = (CaselessKeyword("end_repeat")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_REPEAT") + )("END_REPEAT") + END_RULE = (CaselessKeyword("end_rule")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_RULE"))( + "END_RULE" + ) + END_SCHEMA = (CaselessKeyword("end_schema")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_SCHEMA") + )("END_SCHEMA") + END_SUBTYPE_CONSTRAINT = (CaselessKeyword("end_subtype_constraint")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="END_SUBTYPE_CONSTRAINT") + )("END_SUBTYPE_CONSTRAINT") + END_TYPE = (CaselessKeyword("end_type")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="END_TYPE"))( + "END_TYPE" + ) ENTITY = (CaselessKeyword("entity")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ENTITY"))("ENTITY") - ENUMERATION = (CaselessKeyword("enumeration")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ENUMERATION"))("ENUMERATION") + ENUMERATION = (CaselessKeyword("enumeration")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="ENUMERATION") + )("ENUMERATION") ESCAPE = (CaselessKeyword("escape")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ESCAPE"))("ESCAPE") EXISTS = (CaselessKeyword("exists")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="EXISTS"))("EXISTS") - EXTENSIBLE = (CaselessKeyword("extensible")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="EXTENSIBLE"))("EXTENSIBLE") + EXTENSIBLE = (CaselessKeyword("extensible")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="EXTENSIBLE") + )("EXTENSIBLE") EXP = (CaselessKeyword("exp")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="EXP"))("EXP") FALSE = (CaselessKeyword("false")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FALSE"))("FALSE") FIXED = (CaselessKeyword("fixed")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FIXED"))("FIXED") FOR = (CaselessKeyword("for")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FOR"))("FOR") FORMAT = (CaselessKeyword("format")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FORMAT"))("FORMAT") FROM = (CaselessKeyword("from")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FROM"))("FROM") - FUNCTION = (CaselessKeyword("function")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FUNCTION"))("FUNCTION") - GENERIC = (CaselessKeyword("generic")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="GENERIC"))("GENERIC") - GENERIC_ENTITY = (CaselessKeyword("generic_entity")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="GENERIC_ENTITY"))("GENERIC_ENTITY") - HIBOUND = (CaselessKeyword("hibound")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="HIBOUND"))("HIBOUND") - HIINDEX = (CaselessKeyword("hiindex")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="HIINDEX"))("HIINDEX") + FUNCTION = (CaselessKeyword("function")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="FUNCTION"))( + "FUNCTION" + ) + GENERIC = (CaselessKeyword("generic")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="GENERIC"))( + "GENERIC" + ) + GENERIC_ENTITY = (CaselessKeyword("generic_entity")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="GENERIC_ENTITY") + )("GENERIC_ENTITY") + HIBOUND = (CaselessKeyword("hibound")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="HIBOUND"))( + "HIBOUND" + ) + HIINDEX = (CaselessKeyword("hiindex")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="HIINDEX"))( + "HIINDEX" + ) IF = (CaselessKeyword("if")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="IF"))("IF") IN = (CaselessKeyword("in")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="IN"))("IN") INSERT = (CaselessKeyword("insert")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="INSERT"))("INSERT") - INTEGER = (CaselessKeyword("integer")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="INTEGER"))("INTEGER") - INVERSE = (CaselessKeyword("inverse")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="INVERSE"))("INVERSE") + INTEGER = (CaselessKeyword("integer")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="INTEGER"))( + "INTEGER" + ) + INVERSE = (CaselessKeyword("inverse")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="INVERSE"))( + "INVERSE" + ) LENGTH = (CaselessKeyword("length")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LENGTH"))("LENGTH") LIKE = (CaselessKeyword("like")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LIKE"))("LIKE") LIST = (CaselessKeyword("list")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LIST"))("LIST") - LOBOUND = (CaselessKeyword("lobound")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOBOUND"))("LOBOUND") + LOBOUND = (CaselessKeyword("lobound")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOBOUND"))( + "LOBOUND" + ) LOCAL = (CaselessKeyword("local")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOCAL"))("LOCAL") LOG = (CaselessKeyword("log")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOG"))("LOG") LOG10 = (CaselessKeyword("log10")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOG10"))("LOG10") LOG2 = (CaselessKeyword("log2")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOG2"))("LOG2") - LOGICAL = (CaselessKeyword("logical")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOGICAL"))("LOGICAL") - LOINDEX = (CaselessKeyword("loindex")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOINDEX"))("LOINDEX") + LOGICAL = (CaselessKeyword("logical")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOGICAL"))( + "LOGICAL" + ) + LOINDEX = (CaselessKeyword("loindex")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="LOINDEX"))( + "LOINDEX" + ) MOD = (CaselessKeyword("mod")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="MOD"))("MOD") NOT = (CaselessKeyword("not")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="NOT"))("NOT") NUMBER = (CaselessKeyword("number")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="NUMBER"))("NUMBER") @@ -94,19 +156,31 @@ def parse(fn): ODD = (CaselessKeyword("odd")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ODD"))("ODD") OF = (CaselessKeyword("of")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OF"))("OF") ONEOF = (CaselessKeyword("oneof")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ONEOF"))("ONEOF") - OPTIONAL = (CaselessKeyword("optional")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OPTIONAL"))("OPTIONAL") + OPTIONAL = (CaselessKeyword("optional")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OPTIONAL"))( + "OPTIONAL" + ) OR = (CaselessKeyword("or")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OR"))("OR") - OTHERWISE = (CaselessKeyword("otherwise")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OTHERWISE"))("OTHERWISE") + OTHERWISE = (CaselessKeyword("otherwise")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="OTHERWISE"))( + "OTHERWISE" + ) PI = (CaselessKeyword("pi")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="PI"))("PI") - PROCEDURE = (CaselessKeyword("procedure")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="PROCEDURE"))("PROCEDURE") + PROCEDURE = (CaselessKeyword("procedure")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="PROCEDURE"))( + "PROCEDURE" + ) QUERY = (CaselessKeyword("query")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="QUERY"))("QUERY") REAL = (CaselessKeyword("real")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="REAL"))("REAL") - REFERENCE = (CaselessKeyword("reference")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="REFERENCE"))("REFERENCE") + REFERENCE = (CaselessKeyword("reference")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="REFERENCE"))( + "REFERENCE" + ) REMOVE = (CaselessKeyword("remove")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="REMOVE"))("REMOVE") - RENAMED = (CaselessKeyword("renamed")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="RENAMED"))("RENAMED") + RENAMED = (CaselessKeyword("renamed")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="RENAMED"))( + "RENAMED" + ) REPEAT = (CaselessKeyword("repeat")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="REPEAT"))("REPEAT") RETURN = (CaselessKeyword("return")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="RETURN"))("RETURN") - ROLESOF = (CaselessKeyword("rolesof")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ROLESOF"))("ROLESOF") + ROLESOF = (CaselessKeyword("rolesof")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="ROLESOF"))( + "ROLESOF" + ) RULE = (CaselessKeyword("rule")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="RULE"))("RULE") SCHEMA = (CaselessKeyword("schema")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SCHEMA"))("SCHEMA") SELECT = (CaselessKeyword("select")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SELECT"))("SELECT") @@ -117,84 +191,433 @@ def parse(fn): SKIP = (CaselessKeyword("skip")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SKIP"))("SKIP") SQRT = (CaselessKeyword("sqrt")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SQRT"))("SQRT") STRING = (CaselessKeyword("string")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="STRING"))("STRING") - SUBTYPE = (CaselessKeyword("subtype")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SUBTYPE"))("SUBTYPE") - SUBTYPE_CONSTRAINT = (CaselessKeyword("subtype_constraint")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SUBTYPE_CONSTRAINT"))("SUBTYPE_CONSTRAINT") - SUPERTYPE = (CaselessKeyword("supertype")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SUPERTYPE"))("SUPERTYPE") + SUBTYPE = (CaselessKeyword("subtype")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SUBTYPE"))( + "SUBTYPE" + ) + SUBTYPE_CONSTRAINT = (CaselessKeyword("subtype_constraint")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="SUBTYPE_CONSTRAINT") + )("SUBTYPE_CONSTRAINT") + SUPERTYPE = (CaselessKeyword("supertype")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="SUPERTYPE"))( + "SUPERTYPE" + ) TAN = (CaselessKeyword("tan")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TAN"))("TAN") THEN = (CaselessKeyword("then")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="THEN"))("THEN") TO = (CaselessKeyword("to")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TO"))("TO") - TOTAL_OVER = (CaselessKeyword("total_over")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TOTAL_OVER"))("TOTAL_OVER") + TOTAL_OVER = (CaselessKeyword("total_over")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="TOTAL_OVER") + )("TOTAL_OVER") TRUE = (CaselessKeyword("true")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TRUE"))("TRUE") TYPE = (CaselessKeyword("type")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TYPE"))("TYPE") TYPEOF = (CaselessKeyword("typeof")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="TYPEOF"))("TYPEOF") UNIQUE = (CaselessKeyword("unique")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="UNIQUE"))("UNIQUE") - UNKNOWN = (CaselessKeyword("unknown")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="UNKNOWN"))("UNKNOWN") + UNKNOWN = (CaselessKeyword("unknown")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="UNKNOWN"))( + "UNKNOWN" + ) UNTIL = (CaselessKeyword("until")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="UNTIL"))("UNTIL") USE = (CaselessKeyword("use")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="USE"))("USE") USEDIN = (CaselessKeyword("usedin")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="USEDIN"))("USEDIN") VALUE = (CaselessKeyword("value")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="VALUE"))("VALUE") - VALUE_IN = (CaselessKeyword("value_in")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="VALUE_IN"))("VALUE_IN") - VALUE_UNIQUE = (CaselessKeyword("value_unique")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="VALUE_UNIQUE"))("VALUE_UNIQUE") + VALUE_IN = (CaselessKeyword("value_in")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="VALUE_IN"))( + "VALUE_IN" + ) + VALUE_UNIQUE = (CaselessKeyword("value_unique")).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="VALUE_UNIQUE") + )("VALUE_UNIQUE") VAR = (CaselessKeyword("var")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="VAR"))("VAR") WHERE = (CaselessKeyword("where")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="WHERE"))("WHERE") WHILE = (CaselessKeyword("while")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="WHILE"))("WHILE") WITH = (CaselessKeyword("with")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="WITH"))("WITH") XOR = (CaselessKeyword("xor")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="XOR"))("XOR") - bit = ((CaselessLiteral("0") | CaselessLiteral("1"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="bit"))("bit") - digit = ((CaselessLiteral("0") | CaselessLiteral("1") | CaselessLiteral("2") | CaselessLiteral("3") | CaselessLiteral("4") | CaselessLiteral("5") | CaselessLiteral("6") | CaselessLiteral("7") | CaselessLiteral("8") | CaselessLiteral("9")))("digit") + bit = ((CaselessLiteral("0") | CaselessLiteral("1"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="bit") + )("bit") + digit = ( + ( + CaselessLiteral("0") + | CaselessLiteral("1") + | CaselessLiteral("2") + | CaselessLiteral("3") + | CaselessLiteral("4") + | CaselessLiteral("5") + | CaselessLiteral("6") + | CaselessLiteral("7") + | CaselessLiteral("8") + | CaselessLiteral("9") + ) + )("digit") digits = ((digit + ZeroOrMore(digit)))("digits") - hex_digit = ((digit | CaselessLiteral("a") | CaselessLiteral("b") | CaselessLiteral("c") | CaselessLiteral("d") | CaselessLiteral("e") | CaselessLiteral("f"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="hex_digit"))("hex_digit") - letter = ((CaselessLiteral("a") | CaselessLiteral("b") | CaselessLiteral("c") | CaselessLiteral("d") | CaselessLiteral("e") | CaselessLiteral("f") | CaselessLiteral("g") | CaselessLiteral("h") | CaselessLiteral("i") | CaselessLiteral("j") | CaselessLiteral("k") | CaselessLiteral("l") | CaselessLiteral("m") | CaselessLiteral("n") | CaselessLiteral("o") | CaselessLiteral("p") | CaselessLiteral("q") | CaselessLiteral("r") | CaselessLiteral("s") | CaselessLiteral("t") | CaselessLiteral("u") | CaselessLiteral("v") | CaselessLiteral("w") | CaselessLiteral("x") | CaselessLiteral("y") | CaselessLiteral("z")))("letter") - not_paren_star_quote_special = ((CaselessLiteral("!") | CaselessLiteral("#") | CaselessLiteral("$") | CaselessLiteral("%") | CaselessLiteral("&") | CaselessLiteral("+") | CaselessLiteral(",") | CaselessLiteral("-") | CaselessLiteral(".") | CaselessLiteral("/") | CaselessLiteral(":") | CaselessLiteral(";") | CaselessLiteral("<") | CaselessLiteral("=") | CaselessLiteral(">") | CaselessLiteral("?") | CaselessLiteral("@") | CaselessLiteral("[") | CaselessLiteral("\\") | CaselessLiteral("]") | CaselessLiteral("^") | CaselessLiteral("_") | CaselessLiteral("{") | CaselessLiteral("|") | CaselessLiteral("}") | CaselessLiteral("~"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_paren_star_quote_special"))("not_paren_star_quote_special") - not_paren_star_special = ((not_paren_star_quote_special | CaselessLiteral("\"\""))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_paren_star_special"))("not_paren_star_special") - not_quote = ((not_paren_star_quote_special | letter | digit | CaselessLiteral("(") | CaselessLiteral(")") | CaselessLiteral("*"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_quote"))("not_quote") + hex_digit = ( + ( + digit + | CaselessLiteral("a") + | CaselessLiteral("b") + | CaselessLiteral("c") + | CaselessLiteral("d") + | CaselessLiteral("e") + | CaselessLiteral("f") + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="hex_digit"))("hex_digit") + letter = ( + ( + CaselessLiteral("a") + | CaselessLiteral("b") + | CaselessLiteral("c") + | CaselessLiteral("d") + | CaselessLiteral("e") + | CaselessLiteral("f") + | CaselessLiteral("g") + | CaselessLiteral("h") + | CaselessLiteral("i") + | CaselessLiteral("j") + | CaselessLiteral("k") + | CaselessLiteral("l") + | CaselessLiteral("m") + | CaselessLiteral("n") + | CaselessLiteral("o") + | CaselessLiteral("p") + | CaselessLiteral("q") + | CaselessLiteral("r") + | CaselessLiteral("s") + | CaselessLiteral("t") + | CaselessLiteral("u") + | CaselessLiteral("v") + | CaselessLiteral("w") + | CaselessLiteral("x") + | CaselessLiteral("y") + | CaselessLiteral("z") + ) + )("letter") + not_paren_star_quote_special = ( + ( + CaselessLiteral("!") + | CaselessLiteral("#") + | CaselessLiteral("$") + | CaselessLiteral("%") + | CaselessLiteral("&") + | CaselessLiteral("+") + | CaselessLiteral(",") + | CaselessLiteral("-") + | CaselessLiteral(".") + | CaselessLiteral("/") + | CaselessLiteral(":") + | CaselessLiteral(";") + | CaselessLiteral("<") + | CaselessLiteral("=") + | CaselessLiteral(">") + | CaselessLiteral("?") + | CaselessLiteral("@") + | CaselessLiteral("[") + | CaselessLiteral("\\") + | CaselessLiteral("]") + | CaselessLiteral("^") + | CaselessLiteral("_") + | CaselessLiteral("{") + | CaselessLiteral("|") + | CaselessLiteral("}") + | CaselessLiteral("~") + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_paren_star_quote_special"))( + "not_paren_star_quote_special" + ) + not_paren_star_special = ((not_paren_star_quote_special | CaselessLiteral('""'))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="not_paren_star_special") + )("not_paren_star_special") + not_quote = ( + ( + not_paren_star_quote_special + | letter + | digit + | CaselessLiteral("(") + | CaselessLiteral(")") + | CaselessLiteral("*") + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_quote"))("not_quote") octet = ((hex_digit + hex_digit)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="octet"))("octet") - special = ((not_paren_star_quote_special | CaselessLiteral("(") | CaselessLiteral(")") | CaselessLiteral("*") | CaselessLiteral("\"\""))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="special"))("special") - binary_literal = ((CaselessLiteral("%") + bit + ZeroOrMore(bit))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="binary_literal"))("binary_literal") + special = ( + ( + not_paren_star_quote_special + | CaselessLiteral("(") + | CaselessLiteral(")") + | CaselessLiteral("*") + | CaselessLiteral('""') + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="special"))("special") + binary_literal = ((CaselessLiteral("%") + bit + ZeroOrMore(bit))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="binary_literal") + )("binary_literal") integer_literal = (digits)("integer_literal") - simple_id = ~CaselessKeyword("supertype") + ~CaselessKeyword("generic") + ~CaselessKeyword("true") + ~CaselessKeyword("rolesof") + ~CaselessKeyword("local") + ~CaselessKeyword("enumeration") + ~CaselessKeyword("in") + ~CaselessKeyword("subtype_constraint") + ~CaselessKeyword("while") + ~CaselessKeyword("var") + ~CaselessKeyword("unique") + ~CaselessKeyword("type") + ~CaselessKeyword("format") + ~CaselessKeyword("log2") + ~CaselessKeyword("set") + ~CaselessKeyword("string") + ~CaselessKeyword("exp") + ~CaselessKeyword("inverse") + ~CaselessKeyword("sizeof") + ~CaselessKeyword("function") + ~CaselessKeyword("of") + ~CaselessKeyword("value_in") + ~CaselessKeyword("procedure") + ~CaselessKeyword("subtype") + ~CaselessKeyword("for") + ~CaselessKeyword("const_e") + ~CaselessKeyword("acos") + ~CaselessKeyword("asin") + ~CaselessKeyword("return") + ~CaselessKeyword("optional") + ~CaselessKeyword("usedin") + ~CaselessKeyword("log") + ~CaselessKeyword("not") + ~CaselessKeyword("from") + ~CaselessKeyword("and") + ~CaselessKeyword("pi") + ~CaselessKeyword("begin") + ~CaselessKeyword("end") + ~CaselessKeyword("end_procedure") + ~CaselessKeyword("loindex") + ~CaselessKeyword("bag") + ~CaselessKeyword("log10") + ~CaselessKeyword("aggregate") + ~CaselessKeyword("number") + ~CaselessKeyword("by") + ~CaselessKeyword("until") + ~CaselessKeyword("array") + ~CaselessKeyword("renamed") + ~CaselessKeyword("entity") + ~CaselessKeyword("andor") + ~CaselessKeyword("mod") + ~CaselessKeyword("end_function") + ~CaselessKeyword("cos") + ~CaselessKeyword("sin") + ~CaselessKeyword("list") + ~CaselessKeyword("as") + ~CaselessKeyword("binary") + ~CaselessKeyword("escape") + ~CaselessKeyword("value_unique") + ~CaselessKeyword("sqrt") + ~CaselessKeyword("real") + ~CaselessKeyword("atan") + ~CaselessKeyword("with") + ~CaselessKeyword("unknown") + ~CaselessKeyword("boolean") + ~CaselessKeyword("abs") + ~CaselessKeyword("fixed") + ~CaselessKeyword("use") + ~CaselessKeyword("repeat") + ~CaselessKeyword("self") + ~CaselessKeyword("value") + ~CaselessKeyword("insert") + ~CaselessKeyword("integer") + ~CaselessKeyword("rule") + ~CaselessKeyword("total_over") + ~CaselessKeyword("tan") + ~CaselessKeyword("case") + ~CaselessKeyword("else") + ~CaselessKeyword("schema") + ~CaselessKeyword("derive") + ~CaselessKeyword("remove") + ~CaselessKeyword("like") + ~CaselessKeyword("select") + ~CaselessKeyword("alias") + ~CaselessKeyword("abstract") + ~CaselessKeyword("blength") + ~CaselessKeyword("end_if") + ~CaselessKeyword("xor") + ~CaselessKeyword("skip") + ~CaselessKeyword("generic_entity") + ~CaselessKeyword("based_on") + ~CaselessKeyword("exists") + ~CaselessKeyword("or") + ~CaselessKeyword("odd") + ~CaselessKeyword("length") + ~CaselessKeyword("constant") + ~CaselessKeyword("end_type") + ~CaselessKeyword("false") + ~CaselessKeyword("end_subtype_constraint") + ~CaselessKeyword("then") + ~CaselessKeyword("end_repeat") + ~CaselessKeyword("nvl") + ~CaselessKeyword("where") + ~CaselessKeyword("hibound") + ~CaselessKeyword("lobound") + ~CaselessKeyword("end_rule") + ~CaselessKeyword("div") + ~CaselessKeyword("query") + ~CaselessKeyword("reference") + ~CaselessKeyword("end_alias") + ~CaselessKeyword("end_local") + ~CaselessKeyword("logical") + ~CaselessKeyword("if") + ~CaselessKeyword("hiindex") + ~CaselessKeyword("end_entity") + ~CaselessKeyword("extensible") + ~CaselessKeyword("end_case") + ~CaselessKeyword("oneof") + ~CaselessKeyword("otherwise") + ~CaselessKeyword("end_constant") + ~CaselessKeyword("end_schema") + ~CaselessKeyword("to") + ~CaselessKeyword("typeof") + originalTextFor(Combine((letter + ZeroOrMore((letter | digit | CaselessLiteral("_"))))))("simple_id") - simple_string_literal = ((CaselessLiteral("'") + ZeroOrMore(((CaselessLiteral("'") + CaselessLiteral("'")) | not_quote)) + CaselessLiteral("'"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="simple_string_literal"))("simple_string_literal") + simple_id = ( + ~CaselessKeyword("supertype") + + ~CaselessKeyword("generic") + + ~CaselessKeyword("true") + + ~CaselessKeyword("rolesof") + + ~CaselessKeyword("local") + + ~CaselessKeyword("enumeration") + + ~CaselessKeyword("in") + + ~CaselessKeyword("subtype_constraint") + + ~CaselessKeyword("while") + + ~CaselessKeyword("var") + + ~CaselessKeyword("unique") + + ~CaselessKeyword("type") + + ~CaselessKeyword("format") + + ~CaselessKeyword("log2") + + ~CaselessKeyword("set") + + ~CaselessKeyword("string") + + ~CaselessKeyword("exp") + + ~CaselessKeyword("inverse") + + ~CaselessKeyword("sizeof") + + ~CaselessKeyword("function") + + ~CaselessKeyword("of") + + ~CaselessKeyword("value_in") + + ~CaselessKeyword("procedure") + + ~CaselessKeyword("subtype") + + ~CaselessKeyword("for") + + ~CaselessKeyword("const_e") + + ~CaselessKeyword("acos") + + ~CaselessKeyword("asin") + + ~CaselessKeyword("return") + + ~CaselessKeyword("optional") + + ~CaselessKeyword("usedin") + + ~CaselessKeyword("log") + + ~CaselessKeyword("not") + + ~CaselessKeyword("from") + + ~CaselessKeyword("and") + + ~CaselessKeyword("pi") + + ~CaselessKeyword("begin") + + ~CaselessKeyword("end") + + ~CaselessKeyword("end_procedure") + + ~CaselessKeyword("loindex") + + ~CaselessKeyword("bag") + + ~CaselessKeyword("log10") + + ~CaselessKeyword("aggregate") + + ~CaselessKeyword("number") + + ~CaselessKeyword("by") + + ~CaselessKeyword("until") + + ~CaselessKeyword("array") + + ~CaselessKeyword("renamed") + + ~CaselessKeyword("entity") + + ~CaselessKeyword("andor") + + ~CaselessKeyword("mod") + + ~CaselessKeyword("end_function") + + ~CaselessKeyword("cos") + + ~CaselessKeyword("sin") + + ~CaselessKeyword("list") + + ~CaselessKeyword("as") + + ~CaselessKeyword("binary") + + ~CaselessKeyword("escape") + + ~CaselessKeyword("value_unique") + + ~CaselessKeyword("sqrt") + + ~CaselessKeyword("real") + + ~CaselessKeyword("atan") + + ~CaselessKeyword("with") + + ~CaselessKeyword("unknown") + + ~CaselessKeyword("boolean") + + ~CaselessKeyword("abs") + + ~CaselessKeyword("fixed") + + ~CaselessKeyword("use") + + ~CaselessKeyword("repeat") + + ~CaselessKeyword("self") + + ~CaselessKeyword("value") + + ~CaselessKeyword("insert") + + ~CaselessKeyword("integer") + + ~CaselessKeyword("rule") + + ~CaselessKeyword("total_over") + + ~CaselessKeyword("tan") + + ~CaselessKeyword("case") + + ~CaselessKeyword("else") + + ~CaselessKeyword("schema") + + ~CaselessKeyword("derive") + + ~CaselessKeyword("remove") + + ~CaselessKeyword("like") + + ~CaselessKeyword("select") + + ~CaselessKeyword("alias") + + ~CaselessKeyword("abstract") + + ~CaselessKeyword("blength") + + ~CaselessKeyword("end_if") + + ~CaselessKeyword("xor") + + ~CaselessKeyword("skip") + + ~CaselessKeyword("generic_entity") + + ~CaselessKeyword("based_on") + + ~CaselessKeyword("exists") + + ~CaselessKeyword("or") + + ~CaselessKeyword("odd") + + ~CaselessKeyword("length") + + ~CaselessKeyword("constant") + + ~CaselessKeyword("end_type") + + ~CaselessKeyword("false") + + ~CaselessKeyword("end_subtype_constraint") + + ~CaselessKeyword("then") + + ~CaselessKeyword("end_repeat") + + ~CaselessKeyword("nvl") + + ~CaselessKeyword("where") + + ~CaselessKeyword("hibound") + + ~CaselessKeyword("lobound") + + ~CaselessKeyword("end_rule") + + ~CaselessKeyword("div") + + ~CaselessKeyword("query") + + ~CaselessKeyword("reference") + + ~CaselessKeyword("end_alias") + + ~CaselessKeyword("end_local") + + ~CaselessKeyword("logical") + + ~CaselessKeyword("if") + + ~CaselessKeyword("hiindex") + + ~CaselessKeyword("end_entity") + + ~CaselessKeyword("extensible") + + ~CaselessKeyword("end_case") + + ~CaselessKeyword("oneof") + + ~CaselessKeyword("otherwise") + + ~CaselessKeyword("end_constant") + + ~CaselessKeyword("end_schema") + + ~CaselessKeyword("to") + + ~CaselessKeyword("typeof") + + originalTextFor(Combine((letter + ZeroOrMore((letter | digit | CaselessLiteral("_"))))))("simple_id") + ) + simple_string_literal = ( + ( + CaselessLiteral("'") + + ZeroOrMore(((CaselessLiteral("'") + CaselessLiteral("'")) | not_quote)) + + CaselessLiteral("'") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="simple_string_literal"))("simple_string_literal") abstract_entity_declaration = (ABSTRACT)("abstract_entity_declaration") - abstract_supertype = ((ABSTRACT + SUPERTYPE + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="abstract_supertype"))("abstract_supertype") - add_like_op = ((CaselessLiteral("+") | CaselessLiteral("-") | OR | XOR)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="add_like_op"))("add_like_op") + abstract_supertype = ((ABSTRACT + SUPERTYPE + CaselessLiteral(";"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="abstract_supertype") + )("abstract_supertype") + add_like_op = ((CaselessLiteral("+") | CaselessLiteral("-") | OR | XOR)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="add_like_op") + )("add_like_op") attribute_id = (simple_id)("attribute_id") boolean_type = (BOOLEAN)("boolean_type") - built_in_constant = ((CONST_E | PI | SELF | CaselessLiteral("?"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="built_in_constant"))("built_in_constant") - built_in_function = ((ABS | ACOS | ASIN | ATAN | BLENGTH | COS | EXISTS | EXP | FORMAT | HIBOUND | HIINDEX | LENGTH | LOBOUND | LOINDEX | LOG | LOG2 | LOG10 | NVL | ODD | ROLESOF | SIN | SIZEOF | SQRT | TAN | TYPEOF | USEDIN | VALUE | VALUE_IN | VALUE_UNIQUE)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="built_in_function"))("built_in_function") - built_in_procedure = ((INSERT | REMOVE)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="built_in_procedure"))("built_in_procedure") + built_in_constant = ((CONST_E | PI | SELF | CaselessLiteral("?"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="built_in_constant") + )("built_in_constant") + built_in_function = ( + ( + ABS + | ACOS + | ASIN + | ATAN + | BLENGTH + | COS + | EXISTS + | EXP + | FORMAT + | HIBOUND + | HIINDEX + | LENGTH + | LOBOUND + | LOINDEX + | LOG + | LOG2 + | LOG10 + | NVL + | ODD + | ROLESOF + | SIN + | SIZEOF + | SQRT + | TAN + | TYPEOF + | USEDIN + | VALUE + | VALUE_IN + | VALUE_UNIQUE + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="built_in_function"))("built_in_function") + built_in_procedure = ((INSERT | REMOVE)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="built_in_procedure") + )("built_in_procedure") constant_id = (simple_id)("constant_id") entity_id = (simple_id)("entity_id") enumeration_id = (simple_id)("enumeration_id") - enumeration_items = ((CaselessLiteral("(") + enumeration_id + ZeroOrMore((CaselessLiteral(",") + enumeration_id)) + CaselessLiteral(")"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="enumeration_items"))("enumeration_items") - escape_stmt = ((ESCAPE + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="escape_stmt"))("escape_stmt") + enumeration_items = ( + ( + CaselessLiteral("(") + + enumeration_id + + ZeroOrMore((CaselessLiteral(",") + enumeration_id)) + + CaselessLiteral(")") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="enumeration_items"))("enumeration_items") + escape_stmt = ((ESCAPE + CaselessLiteral(";"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="escape_stmt") + )("escape_stmt") function_id = (simple_id)("function_id") integer_type = (INTEGER)("integer_type") - interval_op = ((CaselessLiteral("<=") | CaselessLiteral("<"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="interval_op"))("interval_op") - logical_literal = ((FALSE | TRUE | UNKNOWN)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="logical_literal"))("logical_literal") + interval_op = ((CaselessLiteral("<=") | CaselessLiteral("<"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="interval_op") + )("interval_op") + logical_literal = ((FALSE | TRUE | UNKNOWN)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="logical_literal") + )("logical_literal") logical_type = (LOGICAL)("logical_type") - multiplication_like_op = ((CaselessLiteral("*") | CaselessLiteral("/") | DIV | MOD | AND | CaselessLiteral("||"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="multiplication_like_op"))("multiplication_like_op") - null_stmt = (CaselessLiteral(";")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="null_stmt"))("null_stmt") + multiplication_like_op = ( + (CaselessLiteral("*") | CaselessLiteral("/") | DIV | MOD | AND | CaselessLiteral("||")) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="multiplication_like_op"))("multiplication_like_op") + null_stmt = (CaselessLiteral(";")).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="null_stmt"))( + "null_stmt" + ) number_type = (NUMBER)("number_type") parameter_id = (simple_id)("parameter_id") procedure_id = (simple_id)("procedure_id") - rel_op = ((CaselessLiteral("<=") | CaselessLiteral(">=") | CaselessLiteral("<>") | CaselessLiteral("=") | CaselessLiteral(":<>:") | CaselessLiteral(":=:") | CaselessLiteral("<") | CaselessLiteral(">"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="rel_op"))("rel_op") - rel_op_extended = ((rel_op | IN | LIKE)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="rel_op_extended"))("rel_op_extended") + rel_op = ( + ( + CaselessLiteral("<=") + | CaselessLiteral(">=") + | CaselessLiteral("<>") + | CaselessLiteral("=") + | CaselessLiteral(":<>:") + | CaselessLiteral(":=:") + | CaselessLiteral("<") + | CaselessLiteral(">") + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="rel_op"))("rel_op") + rel_op_extended = ((rel_op | IN | LIKE)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="rel_op_extended") + )("rel_op_extended") rule_id = (simple_id)("rule_id") rule_label_id = (simple_id)("rule_label_id") schema_id = (simple_id)("schema_id") - sign = ((CaselessLiteral("+") | CaselessLiteral("-"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="sign"))("sign") - skip_stmt = ((SKIP + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="skip_stmt"))("skip_stmt") + sign = ((CaselessLiteral("+") | CaselessLiteral("-"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="sign") + )("sign") + skip_stmt = ((SKIP + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="skip_stmt"))( + "skip_stmt" + ) subtype_constraint_id = (simple_id)("subtype_constraint_id") type_id = (simple_id)("type_id") type_label_id = (simple_id)("type_label_id") - unary_op = ((CaselessLiteral("+") | CaselessLiteral("-") | NOT)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="unary_op"))("unary_op") + unary_op = ((CaselessLiteral("+") | CaselessLiteral("-") | NOT)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="unary_op") + )("unary_op") variable_id = (simple_id)("variable_id") - encoded_character = ((octet + octet + octet + octet)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="encoded_character"))("encoded_character") - not_paren_star = ((letter | digit | not_paren_star_special)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_paren_star"))("not_paren_star") - not_rparen_star = ((not_paren_star | CaselessLiteral("("))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_rparen_star"))("not_rparen_star") - not_rparen_star_then_rparen = ((not_rparen_star + ZeroOrMore(not_rparen_star) + CaselessLiteral(")") + ZeroOrMore(CaselessLiteral(")")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="not_rparen_star_then_rparen"))("not_rparen_star_then_rparen") - encoded_string_literal = ((CaselessLiteral("\"") + encoded_character + ZeroOrMore(encoded_character) + CaselessLiteral("\""))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="encoded_string_literal"))("encoded_string_literal") - real_literal = (((digits + CaselessLiteral(".") + Optional(digits) + Optional((CaselessLiteral("e") + Optional(sign) + digits))) | integer_literal))("real_literal") + encoded_character = ((octet + octet + octet + octet)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="encoded_character") + )("encoded_character") + not_paren_star = ((letter | digit | not_paren_star_special)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="not_paren_star") + )("not_paren_star") + not_rparen_star = ((not_paren_star | CaselessLiteral("("))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="not_rparen_star") + )("not_rparen_star") + not_rparen_star_then_rparen = ( + (not_rparen_star + ZeroOrMore(not_rparen_star) + CaselessLiteral(")") + ZeroOrMore(CaselessLiteral(")"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="not_rparen_star_then_rparen"))( + "not_rparen_star_then_rparen" + ) + encoded_string_literal = ( + (CaselessLiteral('"') + encoded_character + ZeroOrMore(encoded_character) + CaselessLiteral('"')) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="encoded_string_literal"))("encoded_string_literal") + real_literal = ( + ( + ( + digits + + CaselessLiteral(".") + + Optional(digits) + + Optional((CaselessLiteral("e") + Optional(sign) + digits)) + ) + | integer_literal + ) + )("real_literal") attribute_ref = (attribute_id)("attribute_ref") constant_ref = (constant_id)("constant_ref") entity_ref = (entity_id)("entity_ref") @@ -209,47 +632,198 @@ def parse(fn): type_label_ref = (type_label_id)("type_label_ref") type_ref = (type_id)("type_ref") variable_ref = (variable_id)("variable_ref") - attribute_qualifier = ((CaselessLiteral(".") + attribute_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="attribute_qualifier"))("attribute_qualifier") - constant_factor = ((built_in_constant | constant_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="constant_factor"))("constant_factor") - enumeration_extension = ((BASED_ON + type_ref + Optional((WITH + enumeration_items)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="enumeration_extension"))("enumeration_extension") - enumeration_reference = ((Optional((type_ref + CaselessLiteral("."))) + enumeration_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="enumeration_reference"))("enumeration_reference") - enumeration_type = ((Optional(EXTENSIBLE) + ENUMERATION + Optional(((OF + enumeration_items) | enumeration_extension)))).setParseAction(EnumerationType)("enumeration_type") - general_ref = ((parameter_ref | variable_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_ref"))("general_ref") - group_qualifier = ((CaselessLiteral("\\") + entity_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="group_qualifier"))("group_qualifier") + attribute_qualifier = ((CaselessLiteral(".") + attribute_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="attribute_qualifier") + )("attribute_qualifier") + constant_factor = ((built_in_constant | constant_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="constant_factor") + )("constant_factor") + enumeration_extension = ((BASED_ON + type_ref + Optional((WITH + enumeration_items)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="enumeration_extension") + )("enumeration_extension") + enumeration_reference = ((Optional((type_ref + CaselessLiteral("."))) + enumeration_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="enumeration_reference") + )("enumeration_reference") + enumeration_type = ( + (Optional(EXTENSIBLE) + ENUMERATION + Optional(((OF + enumeration_items) | enumeration_extension))) + ).setParseAction(EnumerationType)("enumeration_type") + general_ref = ((parameter_ref | variable_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="general_ref") + )("general_ref") + group_qualifier = ((CaselessLiteral("\\") + entity_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="group_qualifier") + )("group_qualifier") named_types = ((entity_ref | type_ref)).setParseAction(NamedType)("named_types") - named_type_or_rename = ((named_types + Optional((AS + (entity_id | type_id))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="named_type_or_rename"))("named_type_or_rename") + named_type_or_rename = ((named_types + Optional((AS + (entity_id | type_id))))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="named_type_or_rename") + )("named_type_or_rename") population = (entity_ref)("population") - qualified_attribute = ((SELF + group_qualifier + attribute_qualifier)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="qualified_attribute"))("qualified_attribute") - redeclared_attribute = ((qualified_attribute + Optional((RENAMED + attribute_id)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="redeclared_attribute"))("redeclared_attribute") - referenced_attribute = ((attribute_ref | qualified_attribute)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="referenced_attribute"))("referenced_attribute") - rename_id = ((constant_id | entity_id | function_id | procedure_id | type_id)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="rename_id"))("rename_id") - resource_ref = ((constant_ref | entity_ref | function_ref | procedure_ref | type_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="resource_ref"))("resource_ref") - rule_head = ((RULE + rule_id + FOR + CaselessLiteral("(") + entity_ref + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + CaselessLiteral(")") + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="rule_head"))("rule_head") - select_list = ((CaselessLiteral("(") + named_types + ZeroOrMore((CaselessLiteral(",") + named_types)) + CaselessLiteral(")"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="select_list"))("select_list") - string_literal = ((simple_string_literal | encoded_string_literal)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="string_literal"))("string_literal") - subtype_constraint_head = ((SUBTYPE_CONSTRAINT + subtype_constraint_id + FOR + entity_ref + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_head"))("subtype_constraint_head") - subtype_declaration = ((SUBTYPE + OF + CaselessLiteral("(") + entity_ref + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + CaselessLiteral(")"))).setParseAction(SubTypeExpression)("subtype_declaration") - total_over = ((TOTAL_OVER + CaselessLiteral("(") + entity_ref + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + CaselessLiteral(")") + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="total_over"))("total_over") - type_label = ((type_label_id | type_label_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="type_label"))("type_label") - unique_rule = ((Optional((rule_label_id + CaselessLiteral(":"))) + referenced_attribute + ZeroOrMore((CaselessLiteral(",") + referenced_attribute)))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="unique_rule"))("unique_rule") - use_clause = ((USE + FROM + schema_ref + Optional((CaselessLiteral("(") + named_type_or_rename + ZeroOrMore((CaselessLiteral(",") + named_type_or_rename)) + CaselessLiteral(")"))) + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="use_clause"))("use_clause") - not_lparen_star = ((not_paren_star | CaselessLiteral(")"))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="not_lparen_star"))("not_lparen_star") - remark_ref = ((attribute_ref | constant_ref | entity_ref | enumeration_ref | function_ref | parameter_ref | procedure_ref | rule_label_ref | rule_ref | schema_ref | subtype_constraint_ref | type_label_ref | type_ref | variable_ref)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="remark_ref"))("remark_ref") - attribute_decl = ((redeclared_attribute | attribute_id)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="attribute_decl"))("attribute_decl") - generic_entity_type = ((GENERIC_ENTITY + Optional((CaselessLiteral(":") + type_label)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="generic_entity_type"))("generic_entity_type") - generic_type = ((GENERIC + Optional((CaselessLiteral(":") + type_label)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="generic_type"))("generic_type") - literal = ((binary_literal | logical_literal | real_literal | string_literal)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="literal"))("literal") - resource_or_rename = ((resource_ref + Optional((AS + rename_id)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="resource_or_rename"))("resource_or_rename") + qualified_attribute = ((SELF + group_qualifier + attribute_qualifier)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="qualified_attribute") + )("qualified_attribute") + redeclared_attribute = ((qualified_attribute + Optional((RENAMED + attribute_id)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="redeclared_attribute") + )("redeclared_attribute") + referenced_attribute = ((attribute_ref | qualified_attribute)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="referenced_attribute") + )("referenced_attribute") + rename_id = ((constant_id | entity_id | function_id | procedure_id | type_id)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="rename_id") + )("rename_id") + resource_ref = ((constant_ref | entity_ref | function_ref | procedure_ref | type_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="resource_ref") + )("resource_ref") + rule_head = ( + ( + RULE + + rule_id + + FOR + + CaselessLiteral("(") + + entity_ref + + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + + CaselessLiteral(")") + + CaselessLiteral(";") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="rule_head"))("rule_head") + select_list = ( + ( + CaselessLiteral("(") + + named_types + + ZeroOrMore((CaselessLiteral(",") + named_types)) + + CaselessLiteral(")") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="select_list"))("select_list") + string_literal = ((simple_string_literal | encoded_string_literal)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="string_literal") + )("string_literal") + subtype_constraint_head = ( + (SUBTYPE_CONSTRAINT + subtype_constraint_id + FOR + entity_ref + CaselessLiteral(";")) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_head"))("subtype_constraint_head") + subtype_declaration = ( + ( + SUBTYPE + + OF + + CaselessLiteral("(") + + entity_ref + + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + + CaselessLiteral(")") + ) + ).setParseAction(SubTypeExpression)("subtype_declaration") + total_over = ( + ( + TOTAL_OVER + + CaselessLiteral("(") + + entity_ref + + ZeroOrMore((CaselessLiteral(",") + entity_ref)) + + CaselessLiteral(")") + + CaselessLiteral(";") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="total_over"))("total_over") + type_label = ((type_label_id | type_label_ref)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="type_label") + )("type_label") + unique_rule = ( + ( + Optional((rule_label_id + CaselessLiteral(":"))) + + referenced_attribute + + ZeroOrMore((CaselessLiteral(",") + referenced_attribute)) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="unique_rule"))("unique_rule") + use_clause = ( + ( + USE + + FROM + + schema_ref + + Optional( + ( + CaselessLiteral("(") + + named_type_or_rename + + ZeroOrMore((CaselessLiteral(",") + named_type_or_rename)) + + CaselessLiteral(")") + ) + ) + + CaselessLiteral(";") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="use_clause"))("use_clause") + not_lparen_star = ((not_paren_star | CaselessLiteral(")"))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="not_lparen_star") + )("not_lparen_star") + remark_ref = ( + ( + attribute_ref + | constant_ref + | entity_ref + | enumeration_ref + | function_ref + | parameter_ref + | procedure_ref + | rule_label_ref + | rule_ref + | schema_ref + | subtype_constraint_ref + | type_label_ref + | type_ref + | variable_ref + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="remark_ref"))("remark_ref") + attribute_decl = ((redeclared_attribute | attribute_id)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="attribute_decl") + )("attribute_decl") + generic_entity_type = ((GENERIC_ENTITY + Optional((CaselessLiteral(":") + type_label)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="generic_entity_type") + )("generic_entity_type") + generic_type = ((GENERIC + Optional((CaselessLiteral(":") + type_label)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="generic_type") + )("generic_type") + literal = ((binary_literal | logical_literal | real_literal | string_literal)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="literal") + )("literal") + resource_or_rename = ((resource_ref + Optional((AS + rename_id)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="resource_or_rename") + )("resource_or_rename") schema_version_id = (string_literal)("schema_version_id") - select_extension = ((BASED_ON + type_ref + Optional((WITH + select_list)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="select_extension"))("select_extension") - select_type = ((Optional((EXTENSIBLE + Optional(GENERIC_ENTITY))) + SELECT + Optional((select_list | select_extension)))).setParseAction(SelectType)("select_type") - unique_clause = ((UNIQUE + unique_rule + CaselessLiteral(";") + ZeroOrMore((unique_rule + CaselessLiteral(";"))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="unique_clause"))("unique_clause") - lparen_then_not_lparen_star = ((CaselessLiteral("(") + ZeroOrMore(CaselessLiteral("(")) + not_lparen_star + ZeroOrMore(not_lparen_star))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="lparen_then_not_lparen_star"))("lparen_then_not_lparen_star") - remark_tag = ((CaselessLiteral("\"") + remark_ref + ZeroOrMore((CaselessLiteral(".") + remark_ref)) + CaselessLiteral("\""))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="remark_tag"))("remark_tag") - tail_remark = ((CaselessLiteral("--") + Optional(remark_tag))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="tail_remark"))("tail_remark") - constructed_types = ((enumeration_type | select_type)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="constructed_types"))("constructed_types") - reference_clause = ((REFERENCE + FROM + schema_ref + Optional((CaselessLiteral("(") + resource_or_rename + ZeroOrMore((CaselessLiteral(",") + resource_or_rename)) + CaselessLiteral(")"))) + CaselessLiteral(";"))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="reference_clause"))("reference_clause") - interface_specification = ((reference_clause | use_clause)).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="interface_specification"))("interface_specification") + select_extension = ((BASED_ON + type_ref + Optional((WITH + select_list)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="select_extension") + )("select_extension") + select_type = ( + (Optional((EXTENSIBLE + Optional(GENERIC_ENTITY))) + SELECT + Optional((select_list | select_extension))) + ).setParseAction(SelectType)("select_type") + unique_clause = ( + (UNIQUE + unique_rule + CaselessLiteral(";") + ZeroOrMore((unique_rule + CaselessLiteral(";")))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="unique_clause"))("unique_clause") + lparen_then_not_lparen_star = ( + (CaselessLiteral("(") + ZeroOrMore(CaselessLiteral("(")) + not_lparen_star + ZeroOrMore(not_lparen_star)) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="lparen_then_not_lparen_star"))( + "lparen_then_not_lparen_star" + ) + remark_tag = ( + (CaselessLiteral('"') + remark_ref + ZeroOrMore((CaselessLiteral(".") + remark_ref)) + CaselessLiteral('"')) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="remark_tag"))("remark_tag") + tail_remark = ((CaselessLiteral("--") + Optional(remark_tag))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="tail_remark") + )("tail_remark") + constructed_types = ((enumeration_type | select_type)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="constructed_types") + )("constructed_types") + reference_clause = ( + ( + REFERENCE + + FROM + + schema_ref + + Optional( + ( + CaselessLiteral("(") + + resource_or_rename + + ZeroOrMore((CaselessLiteral(",") + resource_or_rename)) + + CaselessLiteral(")") + ) + ) + + CaselessLiteral(";") + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="reference_clause"))("reference_clause") + interface_specification = ((reference_clause | use_clause)).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="interface_specification") + )("interface_specification") binary_type = Forward()("binary_type") function_decl = Forward()("function_decl") general_set_type = Forward()("general_set_type") @@ -360,114 +934,528 @@ def parse(fn): expression = Forward()("expression") simple_types = Forward()("simple_types") binary_type << (((BINARY + Optional(width_spec)))).setParseAction(BinaryType) - function_decl << (((function_head + algorithm_head + stmt + ZeroOrMore(stmt) + END_FUNCTION + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="function_decl")) - general_set_type << (((SET + Optional(bound_spec) + OF + parameter_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_set_type")) - actual_parameter_list << (((CaselessLiteral("(") + Optional(parameter) + ZeroOrMore((CaselessLiteral(",") + parameter)) + CaselessLiteral(")")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="actual_parameter_list")) - if_stmt << (((IF + logical_expression + THEN + stmt + ZeroOrMore(stmt) + Optional((ELSE + stmt + ZeroOrMore(stmt))) + END_IF + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="if_stmt")) - simple_factor << (((aggregate_initializer | interval | query_expression | (Optional(unary_op) + ((CaselessLiteral("(") + expression + CaselessLiteral(")")) | primary)) | entity_constructor | enumeration_reference))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="simple_factor")) - case_stmt << (((CASE + selector + OF + ZeroOrMore(case_action) + Optional((OTHERWISE + CaselessLiteral(":") + stmt)) + END_CASE + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="case_stmt")) - qualifier << (((attribute_qualifier | group_qualifier | index_qualifier))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="qualifier")) - general_list_type << (((LIST + Optional(bound_spec) + OF + Optional(UNIQUE) + parameter_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_list_type")) - interval << (((CaselessLiteral("{") + interval_low + interval_op + interval_item + interval_op + interval_high + CaselessLiteral("}")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="interval")) - set_type << (((SET + Optional(bound_spec) + OF + instantiable_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="set_type")) - return_stmt << (((RETURN + Optional((CaselessLiteral("(") + expression + CaselessLiteral(")"))) + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="return_stmt")) - schema_decl << (((SCHEMA + schema_id + Optional(schema_version_id) + CaselessLiteral(";") + schema_body + END_SCHEMA + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="schema_decl")) - bound_spec << (((CaselessLiteral("[") + bound_1 + CaselessLiteral(":") + bound_2 + CaselessLiteral("]")))).setParseAction(BoundSpecification) - supertype_factor << (((supertype_term + ZeroOrMore((AND + supertype_term))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="supertype_factor")) + function_decl << ( + ((function_head + algorithm_head + stmt + ZeroOrMore(stmt) + END_FUNCTION + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="function_decl")) + general_set_type << (((SET + Optional(bound_spec) + OF + parameter_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="general_set_type") + ) + actual_parameter_list << ( + ( + ( + CaselessLiteral("(") + + Optional(parameter) + + ZeroOrMore((CaselessLiteral(",") + parameter)) + + CaselessLiteral(")") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="actual_parameter_list")) + if_stmt << ( + ( + ( + IF + + logical_expression + + THEN + + stmt + + ZeroOrMore(stmt) + + Optional((ELSE + stmt + ZeroOrMore(stmt))) + + END_IF + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="if_stmt")) + simple_factor << ( + ( + ( + aggregate_initializer + | interval + | query_expression + | (Optional(unary_op) + ((CaselessLiteral("(") + expression + CaselessLiteral(")")) | primary)) + | entity_constructor + | enumeration_reference + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="simple_factor")) + case_stmt << ( + ( + ( + CASE + + selector + + OF + + ZeroOrMore(case_action) + + Optional((OTHERWISE + CaselessLiteral(":") + stmt)) + + END_CASE + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="case_stmt")) + qualifier << (((attribute_qualifier | group_qualifier | index_qualifier))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="qualifier") + ) + general_list_type << (((LIST + Optional(bound_spec) + OF + Optional(UNIQUE) + parameter_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="general_list_type") + ) + interval << ( + ( + ( + CaselessLiteral("{") + + interval_low + + interval_op + + interval_item + + interval_op + + interval_high + + CaselessLiteral("}") + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="interval")) + set_type << (((SET + Optional(bound_spec) + OF + instantiable_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="set_type") + ) + return_stmt << ( + ((RETURN + Optional((CaselessLiteral("(") + expression + CaselessLiteral(")"))) + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="return_stmt")) + schema_decl << ( + ( + ( + SCHEMA + + schema_id + + Optional(schema_version_id) + + CaselessLiteral(";") + + schema_body + + END_SCHEMA + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="schema_decl")) + bound_spec << ( + ((CaselessLiteral("[") + bound_1 + CaselessLiteral(":") + bound_2 + CaselessLiteral("]"))) + ).setParseAction(BoundSpecification) + supertype_factor << (((supertype_term + ZeroOrMore((AND + supertype_term))))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="supertype_factor") + ) logical_expression << (expression) numeric_expression << (simple_expression) - repeat_control << (((Optional(increment_control) + Optional(while_control) + Optional(until_control)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="repeat_control")) - qualifiable_factor << (((function_call | attribute_ref | constant_factor | general_ref | population))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="qualifiable_factor")) - inverse_attr << (((attribute_decl + CaselessLiteral(":") + Optional(((SET | BAG) + Optional(bound_spec) + OF)) + entity_ref + FOR + Optional((entity_ref + CaselessLiteral("."))) + attribute_ref + CaselessLiteral(";")))).setParseAction(InverseAttribute) - increment_control << (((variable_id + CaselessLiteral(":=") + bound_1 + TO + bound_2 + Optional((BY + increment))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="increment_control")) - compound_stmt << (((BEGIN + stmt + ZeroOrMore(stmt) + END + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="compound_stmt")) - until_control << (((UNTIL + logical_expression))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="until_control")) + repeat_control << ( + ((Optional(increment_control) + Optional(while_control) + Optional(until_control))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="repeat_control")) + qualifiable_factor << ( + ((function_call | attribute_ref | constant_factor | general_ref | population)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="qualifiable_factor")) + inverse_attr << ( + ( + ( + attribute_decl + + CaselessLiteral(":") + + Optional(((SET | BAG) + Optional(bound_spec) + OF)) + + entity_ref + + FOR + + Optional((entity_ref + CaselessLiteral("."))) + + attribute_ref + + CaselessLiteral(";") + ) + ) + ).setParseAction(InverseAttribute) + increment_control << ( + ((variable_id + CaselessLiteral(":=") + bound_1 + TO + bound_2 + Optional((BY + increment)))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="increment_control")) + compound_stmt << (((BEGIN + stmt + ZeroOrMore(stmt) + END + CaselessLiteral(";")))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="compound_stmt") + ) + until_control << (((UNTIL + logical_expression))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="until_control") + ) remark << (((embedded_remark | tail_remark))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="remark")) - simple_expression << (((term + ZeroOrMore((add_like_op + term))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="simple_expression")) - instantiable_type << (((concrete_types | entity_ref))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="instantiable_type")) - constant_body << (((constant_id + CaselessLiteral(":") + instantiable_type + CaselessLiteral(":=") + expression + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="constant_body")) + simple_expression << (((term + ZeroOrMore((add_like_op + term))))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="simple_expression") + ) + instantiable_type << (((concrete_types | entity_ref))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="instantiable_type") + ) + constant_body << ( + ( + ( + constant_id + + CaselessLiteral(":") + + instantiable_type + + CaselessLiteral(":=") + + expression + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="constant_body")) inverse_clause << (((INVERSE + inverse_attr + ZeroOrMore(inverse_attr)))).setParseAction(AttributeList) - query_expression << (((QUERY + CaselessLiteral("(") + variable_id + CaselessLiteral("<*") + aggregate_source + CaselessLiteral("|") + logical_expression + CaselessLiteral(")")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="query_expression")) - repeat_stmt << (((REPEAT + repeat_control + CaselessLiteral(";") + stmt + ZeroOrMore(stmt) + END_REPEAT + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="repeat_stmt")) + query_expression << ( + ( + ( + QUERY + + CaselessLiteral("(") + + variable_id + + CaselessLiteral("<*") + + aggregate_source + + CaselessLiteral("|") + + logical_expression + + CaselessLiteral(")") + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="query_expression")) + repeat_stmt << ( + ( + ( + REPEAT + + repeat_control + + CaselessLiteral(";") + + stmt + + ZeroOrMore(stmt) + + END_REPEAT + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="repeat_stmt")) increment << (numeric_expression) - aggregate_type << (((AGGREGATE + Optional((CaselessLiteral(":") + type_label)) + OF + parameter_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="aggregate_type")) + aggregate_type << ( + ((AGGREGATE + Optional((CaselessLiteral(":") + type_label)) + OF + parameter_type)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="aggregate_type")) index_1 << (index) bound_2 << (numeric_expression) - factor << (((simple_factor + Optional((CaselessLiteral("**") + simple_factor))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="factor")) + factor << (((simple_factor + Optional((CaselessLiteral("**") + simple_factor))))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="factor") + ) interval_item << (simple_expression) - type_decl << (((TYPE + type_id + CaselessLiteral("=") + underlying_type + CaselessLiteral(";") + Optional(where_clause) + END_TYPE + CaselessLiteral(";")))).setParseAction(TypeDeclaration) - supertype_rule << (((SUPERTYPE + subtype_constraint))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="supertype_rule")) - assignment_stmt << (((general_ref + ZeroOrMore(qualifier) + CaselessLiteral(":=") + expression + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="assignment_stmt")) + type_decl << ( + ( + ( + TYPE + + type_id + + CaselessLiteral("=") + + underlying_type + + CaselessLiteral(";") + + Optional(where_clause) + + END_TYPE + + CaselessLiteral(";") + ) + ) + ).setParseAction(TypeDeclaration) + supertype_rule << (((SUPERTYPE + subtype_constraint))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="supertype_rule") + ) + assignment_stmt << ( + ((general_ref + ZeroOrMore(qualifier) + CaselessLiteral(":=") + expression + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="assignment_stmt")) interval_low << (simple_expression) - concrete_types << (((aggregation_types | simple_types | type_ref))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="concrete_types")) - element << (((expression + Optional((CaselessLiteral(":") + repetition))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="element")) + concrete_types << (((aggregation_types | simple_types | type_ref))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="concrete_types") + ) + element << (((expression + Optional((CaselessLiteral(":") + repetition))))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="element") + ) string_type << (((STRING + Optional(width_spec)))).setParseAction(StringType) - procedure_decl << (((procedure_head + algorithm_head + ZeroOrMore(stmt) + END_PROCEDURE + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="procedure_decl")) - width_spec << (((CaselessLiteral("(") + width + CaselessLiteral(")") + Optional(FIXED)))).setParseAction(WidthSpec) - alias_stmt << (((ALIAS + variable_id + FOR + general_ref + ZeroOrMore(qualifier) + CaselessLiteral(";") + stmt + ZeroOrMore(stmt) + END_ALIAS + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="alias_stmt")) - subtype_constraint << (((OF + CaselessLiteral("(") + supertype_expression + CaselessLiteral(")")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint")) + procedure_decl << ( + ((procedure_head + algorithm_head + ZeroOrMore(stmt) + END_PROCEDURE + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="procedure_decl")) + width_spec << (((CaselessLiteral("(") + width + CaselessLiteral(")") + Optional(FIXED)))).setParseAction( + WidthSpec + ) + alias_stmt << ( + ( + ( + ALIAS + + variable_id + + FOR + + general_ref + + ZeroOrMore(qualifier) + + CaselessLiteral(";") + + stmt + + ZeroOrMore(stmt) + + END_ALIAS + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="alias_stmt")) + subtype_constraint << ( + ((OF + CaselessLiteral("(") + supertype_expression + CaselessLiteral(")"))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint")) index << (numeric_expression) - declaration << (((entity_decl | function_decl | procedure_decl | subtype_constraint_decl | type_decl))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="declaration")) - real_type << (((REAL + Optional((CaselessLiteral("(") + precision_spec + CaselessLiteral(")")))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="real_type")) - index_qualifier << (((CaselessLiteral("[") + index_1 + Optional((CaselessLiteral(":") + index_2)) + CaselessLiteral("]")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="index_qualifier")) - generalized_types << (((aggregate_type | general_aggregation_types | generic_entity_type | generic_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="generalized_types")) - constant_decl << (((CONSTANT + constant_body + ZeroOrMore(constant_body) + END_CONSTANT + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="constant_decl")) + declaration << ( + ((entity_decl | function_decl | procedure_decl | subtype_constraint_decl | type_decl)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="declaration")) + real_type << ( + ((REAL + Optional((CaselessLiteral("(") + precision_spec + CaselessLiteral(")"))))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="real_type")) + index_qualifier << ( + ((CaselessLiteral("[") + index_1 + Optional((CaselessLiteral(":") + index_2)) + CaselessLiteral("]"))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="index_qualifier")) + generalized_types << ( + ((aggregate_type | general_aggregation_types | generic_entity_type | generic_type)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="generalized_types")) + constant_decl << ( + ((CONSTANT + constant_body + ZeroOrMore(constant_body) + END_CONSTANT + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="constant_decl")) precision_spec << (numeric_expression) - function_head << (((FUNCTION + function_id + Optional((CaselessLiteral("(") + formal_parameter + ZeroOrMore((CaselessLiteral(";") + formal_parameter)) + CaselessLiteral(")"))) + CaselessLiteral(":") + parameter_type + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="function_head")) + function_head << ( + ( + ( + FUNCTION + + function_id + + Optional( + ( + CaselessLiteral("(") + + formal_parameter + + ZeroOrMore((CaselessLiteral(";") + formal_parameter)) + + CaselessLiteral(")") + ) + ) + + CaselessLiteral(":") + + parameter_type + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="function_head")) derive_clause << (((DERIVE + derived_attr + ZeroOrMore(derived_attr)))).setParseAction(AttributeList) - function_call << ((((built_in_function | function_ref) + actual_parameter_list))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="function_call")) + function_call << ((((built_in_function | function_ref) + actual_parameter_list))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="function_call") + ) case_label << (expression) - supertype_expression << (((supertype_factor + ZeroOrMore((ANDOR + supertype_factor))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="supertype_expression")) - procedure_head << (((PROCEDURE + procedure_id + Optional((CaselessLiteral("(") + Optional(VAR) + formal_parameter + ZeroOrMore((CaselessLiteral(";") + Optional(VAR) + formal_parameter)) + CaselessLiteral(")"))) + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="procedure_head")) - derived_attr << (((attribute_decl + CaselessLiteral(":") + parameter_type + CaselessLiteral(":=") + expression + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="derived_attr")) - bag_type << (((BAG + Optional(bound_spec) + OF + instantiable_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="bag_type")) - term << (((factor + ZeroOrMore((multiplication_like_op + factor))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="term")) - supertype_constraint << (((abstract_supertype_declaration | abstract_entity_declaration | supertype_rule))).setParseAction(SuperTypeExpression) + supertype_expression << (((supertype_factor + ZeroOrMore((ANDOR + supertype_factor))))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="supertype_expression") + ) + procedure_head << ( + ( + ( + PROCEDURE + + procedure_id + + Optional( + ( + CaselessLiteral("(") + + Optional(VAR) + + formal_parameter + + ZeroOrMore((CaselessLiteral(";") + Optional(VAR) + formal_parameter)) + + CaselessLiteral(")") + ) + ) + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="procedure_head")) + derived_attr << ( + ( + ( + attribute_decl + + CaselessLiteral(":") + + parameter_type + + CaselessLiteral(":=") + + expression + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="derived_attr")) + bag_type << (((BAG + Optional(bound_spec) + OF + instantiable_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="bag_type") + ) + term << (((factor + ZeroOrMore((multiplication_like_op + factor))))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="term") + ) + supertype_constraint << ( + ((abstract_supertype_declaration | abstract_entity_declaration | supertype_rule)) + ).setParseAction(SuperTypeExpression) aggregate_source << (simple_expression) - where_clause << (((WHERE + domain_rule + CaselessLiteral(";") + ZeroOrMore((domain_rule + CaselessLiteral(";")))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="where_clause")) + where_clause << ( + ((WHERE + domain_rule + CaselessLiteral(";") + ZeroOrMore((domain_rule + CaselessLiteral(";"))))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="where_clause")) repetition << (numeric_expression) - abstract_supertype_declaration << (((ABSTRACT + SUPERTYPE + Optional(subtype_constraint)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="abstract_supertype_declaration")) - domain_rule << (((Optional((rule_label_id + CaselessLiteral(":"))) + expression))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="domain_rule")) + abstract_supertype_declaration << (((ABSTRACT + SUPERTYPE + Optional(subtype_constraint)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="abstract_supertype_declaration") + ) + domain_rule << (((Optional((rule_label_id + CaselessLiteral(":"))) + expression))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="domain_rule") + ) index_2 << (index) - subsuper << (((Optional(supertype_constraint) + Optional(subtype_declaration)))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subsuper")) - supertype_term << (((one_of | (CaselessLiteral("(") + supertype_expression + CaselessLiteral(")")) | entity_ref))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="supertype_term")) - underlying_type << (((constructed_types | concrete_types))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="underlying_type")) - subtype_constraint_decl << (((subtype_constraint_head + subtype_constraint_body + END_SUBTYPE_CONSTRAINT + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_decl")) + subsuper << (((Optional(supertype_constraint) + Optional(subtype_declaration)))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="subsuper") + ) + supertype_term << ( + ((one_of | (CaselessLiteral("(") + supertype_expression + CaselessLiteral(")")) | entity_ref)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="supertype_term")) + underlying_type << (((constructed_types | concrete_types))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="underlying_type") + ) + subtype_constraint_decl << ( + ((subtype_constraint_head + subtype_constraint_body + END_SUBTYPE_CONSTRAINT + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_decl")) parameter << (expression) - rule_decl << (((rule_head + algorithm_head + ZeroOrMore(stmt) + where_clause + END_RULE + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="rule_decl")) - case_action << (((case_label + ZeroOrMore((CaselessLiteral(",") + case_label)) + CaselessLiteral(":") + stmt))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="case_action")) - local_decl << (((LOCAL + local_variable + ZeroOrMore(local_variable) + END_LOCAL + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="local_decl")) - primary << (((literal | (qualifiable_factor + ZeroOrMore(qualifier))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="primary")) - one_of << (((ONEOF + CaselessLiteral("(") + supertype_expression + ZeroOrMore((CaselessLiteral(",") + supertype_expression)) + CaselessLiteral(")")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="one_of")) - local_variable << (((variable_id + ZeroOrMore((CaselessLiteral(",") + variable_id)) + CaselessLiteral(":") + parameter_type + Optional((CaselessLiteral(":=") + expression)) + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="local_variable")) - entity_head << (((ENTITY + entity_id + subsuper + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="entity_head")) - formal_parameter << (((parameter_id + ZeroOrMore((CaselessLiteral(",") + parameter_id)) + CaselessLiteral(":") + parameter_type))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="formal_parameter")) - array_type << (((ARRAY + bound_spec + OF + Optional(OPTIONAL) + Optional(UNIQUE) + instantiable_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="array_type")) - subtype_constraint_body << (((Optional(abstract_supertype) + Optional(total_over) + Optional((supertype_expression + CaselessLiteral(";")))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_body")) - explicit_attr << (((attribute_decl + ZeroOrMore((CaselessLiteral(",") + attribute_decl)) + CaselessLiteral(":") + Optional(OPTIONAL) + parameter_type + CaselessLiteral(";")))).setParseAction(ExplicitAttribute) - general_bag_type << (((BAG + Optional(bound_spec) + OF + parameter_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_bag_type")) - while_control << (((WHILE + logical_expression))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="while_control")) - schema_body << (((ZeroOrMore(interface_specification) + Optional(constant_decl) + ZeroOrMore((declaration | rule_decl))))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="schema_body")) - list_type << (((LIST + Optional(bound_spec) + OF + Optional(UNIQUE) + instantiable_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="list_type")) - entity_constructor << (((entity_ref + CaselessLiteral("(") + Optional((expression + ZeroOrMore((CaselessLiteral(",") + expression)))) + CaselessLiteral(")")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="entity_constructor")) - syntax << (((schema_decl + ZeroOrMore(schema_decl)))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="syntax")) - entity_decl << (((entity_head + entity_body + END_ENTITY + CaselessLiteral(";")))).setParseAction(EntityDeclaration) - algorithm_head << (((ZeroOrMore(declaration) + Optional(constant_decl) + Optional(local_decl)))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="algorithm_head")) - general_array_type << (((ARRAY + Optional(bound_spec) + OF + Optional(OPTIONAL) + Optional(UNIQUE) + parameter_type))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_array_type")) - entity_body << (((ZeroOrMore(explicit_attr) + Optional(derive_clause) + Optional(inverse_clause) + Optional(unique_clause) + Optional(where_clause)))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="entity_body")) + rule_decl << ( + ((rule_head + algorithm_head + ZeroOrMore(stmt) + where_clause + END_RULE + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="rule_decl")) + case_action << ( + ((case_label + ZeroOrMore((CaselessLiteral(",") + case_label)) + CaselessLiteral(":") + stmt)) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="case_action")) + local_decl << ( + ((LOCAL + local_variable + ZeroOrMore(local_variable) + END_LOCAL + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="local_decl")) + primary << (((literal | (qualifiable_factor + ZeroOrMore(qualifier))))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="primary") + ) + one_of << ( + ( + ( + ONEOF + + CaselessLiteral("(") + + supertype_expression + + ZeroOrMore((CaselessLiteral(",") + supertype_expression)) + + CaselessLiteral(")") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="one_of")) + local_variable << ( + ( + ( + variable_id + + ZeroOrMore((CaselessLiteral(",") + variable_id)) + + CaselessLiteral(":") + + parameter_type + + Optional((CaselessLiteral(":=") + expression)) + + CaselessLiteral(";") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="local_variable")) + entity_head << (((ENTITY + entity_id + subsuper + CaselessLiteral(";")))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="entity_head") + ) + formal_parameter << ( + ((parameter_id + ZeroOrMore((CaselessLiteral(",") + parameter_id)) + CaselessLiteral(":") + parameter_type)) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="formal_parameter")) + array_type << ( + ((ARRAY + bound_spec + OF + Optional(OPTIONAL) + Optional(UNIQUE) + instantiable_type)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="array_type")) + subtype_constraint_body << ( + ( + ( + Optional(abstract_supertype) + + Optional(total_over) + + Optional((supertype_expression + CaselessLiteral(";"))) + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="subtype_constraint_body")) + explicit_attr << ( + ( + ( + attribute_decl + + ZeroOrMore((CaselessLiteral(",") + attribute_decl)) + + CaselessLiteral(":") + + Optional(OPTIONAL) + + parameter_type + + CaselessLiteral(";") + ) + ) + ).setParseAction(ExplicitAttribute) + general_bag_type << (((BAG + Optional(bound_spec) + OF + parameter_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="general_bag_type") + ) + while_control << (((WHILE + logical_expression))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="while_control") + ) + schema_body << ( + ((ZeroOrMore(interface_specification) + Optional(constant_decl) + ZeroOrMore((declaration | rule_decl)))) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="schema_body")) + list_type << (((LIST + Optional(bound_spec) + OF + Optional(UNIQUE) + instantiable_type))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="list_type") + ) + entity_constructor << ( + ( + ( + entity_ref + + CaselessLiteral("(") + + Optional((expression + ZeroOrMore((CaselessLiteral(",") + expression)))) + + CaselessLiteral(")") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="entity_constructor")) + syntax << (((schema_decl + ZeroOrMore(schema_decl)))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="syntax") + ) + entity_decl << (((entity_head + entity_body + END_ENTITY + CaselessLiteral(";")))).setParseAction( + EntityDeclaration + ) + algorithm_head << (((ZeroOrMore(declaration) + Optional(constant_decl) + Optional(local_decl)))).setParseAction( + lambda s, loc, t: ListNode(s, loc, t, rule="algorithm_head") + ) + general_array_type << ( + ((ARRAY + Optional(bound_spec) + OF + Optional(OPTIONAL) + Optional(UNIQUE) + parameter_type)) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="general_array_type")) + entity_body << ( + ( + ( + ZeroOrMore(explicit_attr) + + Optional(derive_clause) + + Optional(inverse_clause) + + Optional(unique_clause) + + Optional(where_clause) + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="entity_body")) aggregation_types << (((array_type | bag_type | list_type | set_type))).setParseAction(AggregationType) selector << (expression) - embedded_remark << (((CaselessLiteral("(*") + Optional(remark_tag) + ZeroOrMore(((not_paren_star + ZeroOrMore(not_paren_star)) | lparen_then_not_lparen_star | (CaselessLiteral("*") + ZeroOrMore(CaselessLiteral("*"))) | not_rparen_star_then_rparen | embedded_remark)) + CaselessLiteral("*)")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="embedded_remark")) - aggregate_initializer << (((CaselessLiteral("[") + Optional((element + ZeroOrMore((CaselessLiteral(",") + element)))) + CaselessLiteral("]")))).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="aggregate_initializer")) - parameter_type << (((generalized_types | simple_types | named_types))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="parameter_type")) - general_aggregation_types << (((general_array_type | general_bag_type | general_list_type | general_set_type))).setParseAction(AggregationType) + embedded_remark << ( + ( + ( + CaselessLiteral("(*") + + Optional(remark_tag) + + ZeroOrMore( + ( + (not_paren_star + ZeroOrMore(not_paren_star)) + | lparen_then_not_lparen_star + | (CaselessLiteral("*") + ZeroOrMore(CaselessLiteral("*"))) + | not_rparen_star_then_rparen + | embedded_remark + ) + ) + + CaselessLiteral("*)") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="embedded_remark")) + aggregate_initializer << ( + ( + ( + CaselessLiteral("[") + + Optional((element + ZeroOrMore((CaselessLiteral(",") + element)))) + + CaselessLiteral("]") + ) + ) + ).setParseAction(lambda s, loc, t: ListNode(s, loc, t, rule="aggregate_initializer")) + parameter_type << (((generalized_types | simple_types | named_types))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="parameter_type") + ) + general_aggregation_types << ( + ((general_array_type | general_bag_type | general_list_type | general_set_type)) + ).setParseAction(AggregationType) bound_1 << (numeric_expression) - stmt << (((alias_stmt | assignment_stmt | case_stmt | compound_stmt | escape_stmt | if_stmt | null_stmt | procedure_call_stmt | repeat_stmt | return_stmt | skip_stmt))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="stmt")) + stmt << ( + ( + ( + alias_stmt + | assignment_stmt + | case_stmt + | compound_stmt + | escape_stmt + | if_stmt + | null_stmt + | procedure_call_stmt + | repeat_stmt + | return_stmt + | skip_stmt + ) + ) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="stmt")) width << (numeric_expression) - procedure_call_stmt << ((((built_in_procedure | procedure_ref) + actual_parameter_list + CaselessLiteral(";")))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="procedure_call_stmt")) + procedure_call_stmt << ( + (((built_in_procedure | procedure_ref) + actual_parameter_list + CaselessLiteral(";"))) + ).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="procedure_call_stmt")) interval_high << (simple_expression) - expression << (((simple_expression + Optional((rel_op_extended + simple_expression))))).setParseAction(lambda s, loc, t: Node(s, loc, t, rule="expression")) - simple_types << (((binary_type | boolean_type | integer_type | logical_type | number_type | real_type | string_type))).setParseAction(SimpleType) + expression << (((simple_expression + Optional((rel_op_extended + simple_expression))))).setParseAction( + lambda s, loc, t: Node(s, loc, t, rule="expression") + ) + simple_types << ( + ((binary_type | boolean_type | integer_type | logical_type | number_type | real_type | string_type)) + ).setParseAction(SimpleType) syntax.ignore("--" + restOfLine) syntax.ignore(Regex(r"\((?:\*(?:[^*]*\*+)+?\))")) @@ -478,12 +1466,13 @@ def parse(fn): with open(cache_file, "wb") as f: pickle.dump(m, f, protocol=0) return m - + + if __name__ == "__main__": m = parse(sys.argv[1]) import importlib + for output in sys.argv[2:]: mdl = importlib.import_module(output) mdl.Generator(m).emit() sys.stdout.write(m.schema.name) - diff --git a/src/ifcopenshell-python/ifcopenshell/express/implementation.py b/src/ifcopenshell-python/ifcopenshell/express/implementation.py index e4f2522883..e4559d9482 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/implementation.py +++ b/src/ifcopenshell-python/ifcopenshell/express/implementation.py @@ -328,13 +328,17 @@ class Implementation(codegen.Base): ) simple_type_impl.append("") - external_definitions = [ - ("extern entity* %s_%%s_type;" % schema_name_upper) % n for n in mapping.schema.entities.keys() - ] + [ - ("extern type_declaration* %s_%%s_type;" % schema_name_upper) % n for n in mapping.schema.simpletypes.keys() - ] + [ - ("extern enumeration_type* %s_%%s_type;" % schema_name_upper) % n for n in mapping.schema.enumerations.keys() - ] + external_definitions = ( + [("extern entity* %s_%%s_type;" % schema_name_upper) % n for n in mapping.schema.entities.keys()] + + [ + ("extern type_declaration* %s_%%s_type;" % schema_name_upper) % n + for n in mapping.schema.simpletypes.keys() + ] + + [ + ("extern enumeration_type* %s_%%s_type;" % schema_name_upper) % n + for n in mapping.schema.enumerations.keys() + ] + ) self.str = templates.implementation % { "schema_name_upper": schema_name_upper, diff --git a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py index 84b2da5fe6..6160fe88c3 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py +++ b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py @@ -488,10 +488,12 @@ class SchemaClass(codegen.Base): for name, tys in subtypes.items(): x.entity_subtypes(name, tys) - can_be_instantiated_set = set(list(mapping.schema.entities.keys()) + \ - list(mapping.schema.simpletypes.keys()) + \ - list(mapping.schema.enumerations.keys())) - + can_be_instantiated_set = set( + list(mapping.schema.entities.keys()) + + list(mapping.schema.simpletypes.keys()) + + list(mapping.schema.enumerations.keys()) + ) + x.finalize(can_be_instantiated_set) self.str = str(x) diff --git a/src/ifcopenshell-python/ifcopenshell/file.py b/src/ifcopenshell-python/ifcopenshell/file.py index 0edd4cce33..dd8fe394c9 100644 --- a/src/ifcopenshell-python/ifcopenshell/file.py +++ b/src/ifcopenshell-python/ifcopenshell/file.py @@ -376,7 +376,7 @@ class file(object): fn = self.wrapped_data.traverse_breadth_first else: fn = self.wrapped_data.traverse - + return [entity_instance(e, self) for e in fn(inst.wrapped_data, max_levels)] def get_inverse(self, inst): diff --git a/src/ifcopenshell-python/ifcopenshell/geom/app.py b/src/ifcopenshell-python/ifcopenshell/geom/app.py index 43d5762584..7af786b763 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/app.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/app.py @@ -10,7 +10,7 @@ import functools import multiprocessing try: - from OCC.Core import AIS + from OCC.Core import AIS USE_OCCT_HANDLE = False except ImportError: @@ -433,30 +433,30 @@ class application(QtWidgets.QApplication): instanceSelected = QtCore.pyqtSignal([object]) -# @staticmethod -# def ais_to_key(ais_handle): -# def yield_shapes(): -# ais = ais_handle.GetObject() -# if hasattr(ais, "Shape"): -# yield ais.Shape() -# return -# shp = OCC.AIS.Handle_AIS_Shape.DownCast(ais_handle) -# if not shp.IsNull(): -# yield shp.Shape() -# return -# mult = ais_handle -# if mult.IsNull(): -# shp = OCC.AIS.Handle_AIS_Shape.DownCast(ais_handle) -# if not shp.IsNull(): -# yield shp -# else: -# li = mult.GetObject().ConnectedTo() -# for i in range(li.Length()): -# shp = OCC.AIS.Handle_AIS_Shape.DownCast(li.Value(i + 1)) -# if not shp.IsNull(): -# yield shp + # @staticmethod + # def ais_to_key(ais_handle): + # def yield_shapes(): + # ais = ais_handle.GetObject() + # if hasattr(ais, "Shape"): + # yield ais.Shape() + # return + # shp = OCC.AIS.Handle_AIS_Shape.DownCast(ais_handle) + # if not shp.IsNull(): + # yield shp.Shape() + # return + # mult = ais_handle + # if mult.IsNull(): + # shp = OCC.AIS.Handle_AIS_Shape.DownCast(ais_handle) + # if not shp.IsNull(): + # yield shp + # else: + # li = mult.GetObject().ConnectedTo() + # for i in range(li.Length()): + # shp = OCC.AIS.Handle_AIS_Shape.DownCast(li.Value(i + 1)) + # if not shp.IsNull(): + # yield shp -# return tuple(shp.HashCode(1 << 24) for shp in yield_shapes()) + # return tuple(shp.HashCode(1 << 24) for shp in yield_shapes()) def __init__(self, widget): qtViewer3d.__init__(self, widget) @@ -486,8 +486,8 @@ class application(QtWidgets.QApplication): for shape in shapes: ais = display_shape(shape, viewer_handle=v) product = f[shape.data.id] - - if USE_OCCT_HANDLE: + + if USE_OCCT_HANDLE: ais.GetObject().SetSelectionPriority(self.counter) self.ais_to_product[self.counter] = product self.product_to_ais[product] = ais diff --git a/src/ifcopenshell-python/ifcopenshell/geom/main.py b/src/ifcopenshell-python/ifcopenshell/geom/main.py index 5e56f9e663..5a9de739f4 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/main.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/main.py @@ -134,7 +134,7 @@ class tree(ifcopenshell_wrapper.tree): def add_file(self, file, settings): ifcopenshell_wrapper.tree.add_file(self, file.wrapped_data, settings) - + def add_iterator(self, iterator): ifcopenshell_wrapper.tree.add_file(self, iterator) diff --git a/src/ifcopenshell-python/ifcopenshell/ids.py b/src/ifcopenshell-python/ifcopenshell/ids.py index a45f43c642..757fb6b199 100644 --- a/src/ifcopenshell-python/ifcopenshell/ids.py +++ b/src/ifcopenshell-python/ifcopenshell/ids.py @@ -1176,7 +1176,6 @@ class BcfHandler(logging.StreamHandler): self.bcf.save_project(self.filepath) - location = {"instance": "an instance ", "type": "a type ", "any": "a "} bounds = { @@ -1208,5 +1207,4 @@ if __name__ == "__main__": report = SimpleHandler() logger.addHandler(report) - ids_file.validate(ifc_file, logger) diff --git a/src/ifcopenshell-python/ifcopenshell/transition_curve.py b/src/ifcopenshell-python/ifcopenshell/transition_curve.py index b06f135f69..ed1b8271ef 100644 --- a/src/ifcopenshell-python/ifcopenshell/transition_curve.py +++ b/src/ifcopenshell-python/ifcopenshell/transition_curve.py @@ -32,6 +32,7 @@ class IfcTransitionCurveType(Enum): The IfcTransitionCurveType indicates the curvature of a transition curve. """ + BIQUADRATICPARABOLA = 1 # NOTE also referred to as Schramm curve. BLOSSCURVE = 2 CLOTHOIDCURVE = 3 @@ -46,6 +47,7 @@ class TransitionCurve: A curve that transitions between a straight line and a circular arc (or the reverse). """ + StartPoint: tuple # IfcSchema::IfcCartesianPoint StartDirection: float # IfcSchema::IfcPlaneAngleMeasure SegmentLength: float # IfcSchema::IfcPositiveLengthMeasure @@ -57,15 +59,15 @@ class TransitionCurve: def _calc_biquadratic_parabola_point(self, lpt, L, R, ccw): x = lpt - if (x <= (L / 2)): - y = x**4 / (6 * R * L**2) + if x <= (L / 2): + y = x ** 4 / (6 * R * L ** 2) else: - yterm_1 = (-1 * x**4) / (6 * R * L**2) - yterm_2 = (2 * x**3) / (3 * R * L) - yterm_3 = x**2 / (2 * R) + yterm_1 = (-1 * x ** 4) / (6 * R * L ** 2) + yterm_2 = (2 * x ** 3) / (3 * R * L) + yterm_3 = x ** 2 / (2 * R) yterm_4 = (L * x) / (6 * R) - yterm_5 = L**2 / (48 * R) + yterm_5 = L ** 2 / (48 * R) y = yterm_1 + yterm_2 - yterm_3 + yterm_4 - yterm_5 @@ -80,16 +82,16 @@ class TransitionCurve: def _calc_clothoid_curve_point(self, lpt, L, R, ccw): RL = R * L xterm_1 = 1 - xterm_2 = lpt**4 / (40 * RL**2) - xterm_3 = lpt**8 / (3456 * RL**4) - xterm_4 = lpt**12 / (599040 * RL**6) + xterm_2 = lpt ** 4 / (40 * RL ** 2) + xterm_3 = lpt ** 8 / (3456 * RL ** 4) + xterm_4 = lpt ** 12 / (599040 * RL ** 6) x = lpt * (xterm_1 - xterm_2 + xterm_3 - xterm_4) - factor = lpt**3 / (6 * RL) + factor = lpt ** 3 / (6 * RL) yterm_1 = 1 - yterm_2 = lpt**4 / (56 * RL**2) - yterm_3 = lpt**8 / (7040 * RL**4) - yterm_4 = lpt**12 / (1612800 * RL**6) + yterm_2 = lpt ** 4 / (56 * RL ** 2) + yterm_3 = lpt ** 8 / (7040 * RL ** 4) + yterm_4 = lpt ** 12 / (1612800 * RL ** 6) y = factor * (yterm_1 - yterm_2 + yterm_3 - yterm_4) @@ -102,14 +104,14 @@ class TransitionCurve: pi = math.pi psi_x = (pi * lpt) / L - xterm_1 = (L**2) / (8.0 * pi**2 * R**2) + xterm_1 = (L ** 2) / (8.0 * pi ** 2 * R ** 2) xterm_2 = L / pi - xterm_3 = psi_x**3 / (3.0) + xterm_3 = psi_x ** 3 / (3.0) xterm_4 = psi_x / (2.0) xterm_5 = (math.sin(psi_x) * math.cos(psi_x)) / (2.0) xterm_6 = psi_x * math.cos(psi_x) - x = lpt - xterm_1 * xterm_2 * ( xterm_3 + xterm_4 - xterm_5 - (2.0 * xterm_6)) + x = lpt - xterm_1 * xterm_2 * (xterm_3 + xterm_4 - xterm_5 - (2.0 * xterm_6)) # TODO: code for y - coordinate y = 0 @@ -170,16 +172,12 @@ class TransitionCurve: lpt = 0.0 # length along the curve at the point to be calculated for _ in range(num_intervals): - points.append(self._calc_transition_curve_point( - lpt, L, R, ccw, trans_type - )) + points.append(self._calc_transition_curve_point(lpt, L, R, ccw, trans_type)) lpt += interval_dist edges = list() for i in range(len(points) - 1): - edges.append(BRepBuilderAPI_MakeEdge2d( - points[i], points[i + 1] - )) + edges.append(BRepBuilderAPI_MakeEdge2d(points[i], points[i + 1])) wire = BRepBuilderAPI_MakeWire() for e in edges: diff --git a/src/ifcopenshell-python/ifcopenshell/util/attribute.py b/src/ifcopenshell-python/ifcopenshell/util/attribute.py index 28b4d4a530..5e8687d4e2 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/attribute.py +++ b/src/ifcopenshell-python/ifcopenshell/util/attribute.py @@ -4,13 +4,13 @@ def get_primitive_type(attribute_or_data_type): else: data_type = str(attribute_or_data_type) if data_type.find(" b2) - or not all(assert_valid(ty, v, schema) for v in val) - ) + invalid = len(val) < b1 or (b2 != -1 and len(val) > b2) or not all(assert_valid(ty, v, schema) for v in val) else: raise NotImplementedError("Not impl %s %s" % (type(attr_type), attr_type)) diff --git a/src/ifcopenshell-python/test/api/void/test_remove_opening.py b/src/ifcopenshell-python/test/api/void/test_remove_opening.py index c226d07244..eaf6c37dbb 100644 --- a/src/ifcopenshell-python/test/api/void/test_remove_opening.py +++ b/src/ifcopenshell-python/test/api/void/test_remove_opening.py @@ -1,6 +1,7 @@ import test.bootstrap import ifcopenshell.api + class TestRemoveOpening(test.bootstrap.IFC4): def test_removing_a_simple_opening(self): opening = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcOpeningElement") diff --git a/src/ifcopenshell-python/test/test_file.py b/src/ifcopenshell-python/test/test_file.py index f40bb4eda7..7cf713b733 100644 --- a/src/ifcopenshell-python/test/test_file.py +++ b/src/ifcopenshell-python/test/test_file.py @@ -83,7 +83,7 @@ class TestTransaction(test.bootstrap.IFC4): assert len(rel.RelatedObjects) == 0 def test_the_editing_of_invalid_default_values(self): - element = self.file.createIfcWall() # This element is invalid, as GlobalId is None + element = self.file.createIfcWall() # This element is invalid, as GlobalId is None self.file.begin_transaction() element.GlobalId = "id" self.file.end_transaction()