maintain snake in api calls

there were only two methods using camel case for arguments
This commit is contained in:
Andrej730
2024-05-13 17:51:19 +05:00
parent 4e39fb3edd
commit fdbe74a432
19 changed files with 127 additions and 27 deletions
@@ -1050,7 +1050,7 @@ class DuplicateMoveLinkedAggregate(bpy.types.Operator):
if self.group_name in product_groups_name: if self.group_name in product_groups_name:
return return
linked_aggregate_group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), Name=self.group_name) linked_aggregate_group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), name=self.group_name)
ifcopenshell.api.run("group.assign_group", tool.Ifc.get(), products=[element], group=linked_aggregate_group) ifcopenshell.api.run("group.assign_group", tool.Ifc.get(), products=[element], group=linked_aggregate_group)
def custom_incremental_naming_for_element_assembly(old_to_new): def custom_incremental_naming_for_element_assembly(old_to_new):
@@ -215,7 +215,7 @@ class SaveSearch(Operator, tool.Ifc.Operator):
group = group[0] group = group[0]
group.Description = description group.Description = description
else: else:
group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), Name=self.name, Description=description) group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), name=self.name, description=description)
if results: if results:
ifcopenshell.api.run("group.assign_group", tool.Ifc.get(), products=list(results), group=group) ifcopenshell.api.run("group.assign_group", tool.Ifc.get(), products=list(results), group=group)
@@ -368,7 +368,7 @@ class SaveColourscheme(Operator, tool.Ifc.Operator):
description = json.dumps( description = json.dumps(
{"type": "BBIM_Search", "colourscheme": colourscheme, "colourscheme_query": query} {"type": "BBIM_Search", "colourscheme": colourscheme, "colourscheme_query": query}
) )
group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), Name=self.name, Description=description) group = ifcopenshell.api.run("group.add_group", tool.Ifc.get(), name=self.name, description=description)
def invoke(self, context, event): def invoke(self, context, event):
return context.window_manager.invoke_props_dialog(self) return context.window_manager.invoke_props_dialog(self)
+1 -1
View File
@@ -1630,7 +1630,7 @@ class Sequence(blenderbim.core.tool.Sequence):
group.Description = json.dumps(description) group.Description = json.dumps(description)
else: else:
description = json.dumps({"type": "BBIM_AnimationColorScheme", "colourscheme": colour_scheme}) description = json.dumps({"type": "BBIM_AnimationColorScheme", "colourscheme": colour_scheme})
group = tool.Ifc.run("group.add_group", Name=name, Description=description) group = tool.Ifc.run("group.add_group", name=name, description=description)
return group[0] return group[0]
@classmethod @classmethod
@@ -67,6 +67,20 @@ def batching_argument_deprecation(
return (replace_usecase or usecase_path, settings) return (replace_usecase or usecase_path, settings)
def renamed_arguments_deprecation(
usecase_path: str, settings: dict, arguments_remapped: dict[str, str]
) -> tuple[str, dict]:
for prev_argument, new_argument in arguments_remapped.items():
if prev_argument in settings:
print(
f"WARNING. `{prev_argument}` argument is deprecated for API method "
f'"{usecase_path}" and should be replaced with `{new_argument}`.'
)
settings = settings | {new_argument: settings[prev_argument]}
settings.pop(prev_argument)
return (usecase_path, settings)
ARGUMENTS_DEPRECATION = { ARGUMENTS_DEPRECATION = {
"spatial.assign_container": partial( "spatial.assign_container": partial(
batching_argument_deprecation, prev_argument="product", new_argument="products" batching_argument_deprecation, prev_argument="product", new_argument="products"
@@ -143,6 +157,10 @@ ARGUMENTS_DEPRECATION = {
"project.unassign_declaration": partial( "project.unassign_declaration": partial(
batching_argument_deprecation, prev_argument="definition", new_argument="definitions" batching_argument_deprecation, prev_argument="definition", new_argument="definitions"
), ),
"group.add_group": partial(
renamed_arguments_deprecation, arguments_remapped={"Name": "name", "Description": "description"}
),
"layer.add_layer": partial(renamed_arguments_deprecation, arguments_remapped={"Name": "name"}),
} }
@@ -23,7 +23,7 @@ from typing import Optional
def add_group( def add_group(
file: ifcopenshell.file, Name: str = "Unnamed", Description: Optional[str] = None file: ifcopenshell.file, name: str = "Unnamed", description: Optional[str] = None
) -> ifcopenshell.entity_instance: ) -> ifcopenshell.entity_instance:
"""Adds a new group """Adds a new group
@@ -37,8 +37,8 @@ def add_group(
:param Name: The name of the group. Defaults to "Unnamed" :param Name: The name of the group. Defaults to "Unnamed"
:type Name: str, optional :type Name: str, optional
:param Description: The description of the purpose of the group. :param description: The description of the purpose of the group.
:type Description: str, optional :type description: str, optional
:return: The newly created IfcGroup :return: The newly created IfcGroup
:rtype: ifcopenshell.entity_instance :rtype: ifcopenshell.entity_instance
@@ -46,11 +46,11 @@ def add_group(
.. code:: python .. code:: python
ifcopenshell.api.run("group.add_group", model, Name="Unit 1A") ifcopenshell.api.run("group.add_group", model, name="Unit 1A")
""" """
settings = { settings = {
"Name": Name or "Unnamed", "name": name or "Unnamed",
"Description": Description, "description": description,
} }
return file.create_entity( return file.create_entity(
@@ -58,7 +58,7 @@ def add_group(
**{ **{
"GlobalId": ifcopenshell.guid.new(), "GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", file), "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", file),
"Name": settings["Name"], "Name": settings["name"],
"Description": settings["Description"], "Description": settings["description"],
} }
) )
@@ -42,7 +42,7 @@ def assign_group(
.. code:: python .. code:: python
group = ifcopenshell.api.run("group.add_group", model, Name="Furniture") group = ifcopenshell.api.run("group.add_group", model, name="Furniture")
ifcopenshell.api.run("group.assign_group", model, ifcopenshell.api.run("group.assign_group", model,
products=model.by_type("IfcFurniture"), group=group) products=model.by_type("IfcFurniture"), group=group)
""" """
@@ -36,7 +36,7 @@ def edit_group(file: ifcopenshell.file, group: ifcopenshell.entity_instance, att
.. code:: python .. code:: python
group = ifcopenshell.api.run("group.add_group", model, Name="Unit 1A") group = ifcopenshell.api.run("group.add_group", model, name="Unit 1A")
ifcopenshell.api.run("group.edit_group", model, ifcopenshell.api.run("group.edit_group", model,
group=group, attributes={"Description": "All furniture and joinery included in the unit"}) group=group, attributes={"Description": "All furniture and joinery included in the unit"})
""" """
@@ -36,7 +36,7 @@ def remove_group(file: ifcopenshell.file, group: ifcopenshell.entity_instance) -
.. code:: python .. code:: python
group = ifcopenshell.api.run("group.add_group", model, Name="Unit 1A") group = ifcopenshell.api.run("group.add_group", model, name="Unit 1A")
ifcopenshell.api.run("group.remove_group", model, group=group) ifcopenshell.api.run("group.remove_group", model, group=group)
""" """
settings = {"group": group} settings = {"group": group}
@@ -39,7 +39,7 @@ def unassign_group(
.. code:: python .. code:: python
group = ifcopenshell.api.run("group.add_group", model, Name="Furniture") group = ifcopenshell.api.run("group.add_group", model, name="Furniture")
furniture = model.by_type("IfcFurniture") furniture = model.by_type("IfcFurniture")
ifcopenshell.api.run("group.assign_group", model, products=furniture, group=group) ifcopenshell.api.run("group.assign_group", model, products=furniture, group=group)
@@ -40,7 +40,7 @@ def update_group_products(
.. code:: python .. code:: python
group = ifcopenshell.api.run("group.add_group", model, Name="Furniture") group = ifcopenshell.api.run("group.add_group", model, name="Furniture")
ifcopenshell.api.run("group.update_group_products", model, ifcopenshell.api.run("group.update_group_products", model,
products=model.by_type("IfcFurniture"), group=group) products=model.by_type("IfcFurniture"), group=group)
""" """
@@ -19,7 +19,7 @@ import ifcopenshell
from typing import Optional from typing import Optional
def add_layer(file: ifcopenshell.file, Name: Optional[str] = None) -> ifcopenshell.entity_instance: def add_layer(file: ifcopenshell.file, name: str = "Unnamed") -> ifcopenshell.entity_instance:
"""Adds a new layer """Adds a new layer
An IFC layer is like a CAD layer. Portions of an object's geometry An IFC layer is like a CAD layer. Portions of an object's geometry
@@ -34,13 +34,13 @@ def add_layer(file: ifcopenshell.file, Name: Optional[str] = None) -> ifcopenshe
Some software that are still based on layers, such as Tekla or ArchiCAD Some software that are still based on layers, such as Tekla or ArchiCAD
may also use this layer information for filtering. may also use this layer information for filtering.
:param Name: The name of the layer. Defaults to "Unnamed". :param name: The name of the layer. Defaults to "Unnamed".
:type Name: str, optional :type name: str, optional
:return: The newly created IfcPresentationLayerAssignment element :return: The newly created IfcPresentationLayerAssignment element
:rtype: ifcopenshell.entity_instance :rtype: ifcopenshell.entity_instance
Example: Example:
ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL-FULL-DIMS-N") ifcopenshell.api.run("layer.add_layer", model, name="AI-WALL-FULL-DIMS-N")
""" """
return file.create_entity("IfcPresentationLayerAssignment", Name=Name or "Unnamed") return file.create_entity("IfcPresentationLayerAssignment", Name=name)
@@ -59,7 +59,7 @@ def assign_layer(
ifcopenshell.api.run("geometry.edit_object_placement", model, product=wall) ifcopenshell.api.run("geometry.edit_object_placement", model, product=wall)
# Now let's create a layer that contains walls # Now let's create a layer that contains walls
layer = ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL") layer = ifcopenshell.api.run("layer.add_layer", model, name="AI-WALL")
# And assign our wall representation item (in this example, there is # And assign our wall representation item (in this example, there is
# only one item) to the layer. # only one item) to the layer.
@@ -36,7 +36,7 @@ def edit_layer(file: ifcopenshell.file, layer: ifcopenshell.entity_instance, att
.. code:: python .. code:: python
layer = ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL") layer = ifcopenshell.api.run("layer.add_layer", model, name="AI-WALL")
ifcopenshell.api.run("layer.edit_layer", model, ifcopenshell.api.run("layer.edit_layer", model,
layer=layer, attributes={"Description": "All walls, based on the AIA standard."}) layer=layer, attributes={"Description": "All walls, based on the AIA standard."})
""" """
@@ -33,7 +33,7 @@ def remove_layer(file: ifcopenshell.file, layer: ifcopenshell.entity_instance) -
.. code:: python .. code:: python
layer = ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL") layer = ifcopenshell.api.run("layer.add_layer", model, name="AI-WALL")
ifcopenshell.api.run("layer.remove_layer", model, layer=layer) ifcopenshell.api.run("layer.remove_layer", model, layer=layer)
""" """
file.remove(layer) file.remove(layer)
@@ -56,7 +56,7 @@ def unassign_layer(
ifcopenshell.api.run("geometry.edit_object_placement", model, product=wall) ifcopenshell.api.run("geometry.edit_object_placement", model, product=wall)
# Now let's create a layer that contains walls # Now let's create a layer that contains walls
layer = ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL") layer = ifcopenshell.api.run("layer.add_layer", model, name="AI-WALL")
# And assign our wall representation item (in this example, there is # And assign our wall representation item (in this example, there is
# only one item) to the layer. # only one item) to the layer.
@@ -0,0 +1,37 @@
# IfcOpenShell - IFC toolkit and geometry engine
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of IfcOpenShell.
#
# IfcOpenShell is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# IfcOpenShell is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import test.bootstrap
import ifcopenshell.api
import ifcopenshell.util.element
class TestAddGroup(test.bootstrap.IFC4):
def test_add_group_no_arguments(self):
group = ifcopenshell.api.run("group.add_group", self.file)
assert group.Name == "Unnamed"
assert group.Description == None
def test_add_group(self):
group = ifcopenshell.api.run("group.add_group", self.file, name="Name", description="Description")
assert group.Name == "Name"
assert group.Description == "Description"
class TestAddGroupIFC2X3(test.bootstrap.IFC2X3, TestAddGroup):
pass
@@ -0,0 +1,34 @@
# IfcOpenShell - IFC toolkit and geometry engine
# Copyright (C) 2022 Dion Moult <dion@thinkmoult.com>
#
# This file is part of IfcOpenShell.
#
# IfcOpenShell is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# IfcOpenShell is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import test.bootstrap
import ifcopenshell.api
class TestAddLayer(test.bootstrap.IFC4):
def test_add_layer_no_arguments(self):
layer = ifcopenshell.api.run("layer.add_layer", self.file)
assert layer.Name == "Unnamed"
def test_assign_additional_items(self):
layer = ifcopenshell.api.run("layer.add_layer", self.file, name="Name")
assert layer.Name == "Name"
class TestAddLayerIFC2X3(test.bootstrap.IFC2X3, TestAddLayer):
pass
@@ -409,7 +409,7 @@ class TestRemoveProduct(test.bootstrap.IFC4):
def test_removing_orphaned_group_relationships(self): def test_removing_orphaned_group_relationships(self):
element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
group = ifcopenshell.api.run("group.add_group", self.file, Name="Unit 1A") group = ifcopenshell.api.run("group.add_group", self.file, name="Unit 1A")
ifcopenshell.api.run("group.assign_group", self.file, products=[element], group=group) ifcopenshell.api.run("group.assign_group", self.file, products=[element], group=group)
ifcopenshell.api.run("root.remove_product", self.file, product=element) ifcopenshell.api.run("root.remove_product", self.file, product=element)
assert not self.file.by_type("IfcRelAssignsToGroup") assert not self.file.by_type("IfcRelAssignsToGroup")
@@ -348,3 +348,14 @@ class TestTemporarySupportForDeprecatedAPIArguments(test.bootstrap.IFC4):
) )
assert get_context(element_type) == None assert get_context(element_type) == None
assert len(self.file.by_type("IfcRelDeclares")) == 0 assert len(self.file.by_type("IfcRelDeclares")) == 0
@deprecation_check
def test_add_group(self):
group = ifcopenshell.api.run("group.add_group", self.file, Name="Name", Description="Description")
assert group.Name == "Name"
assert group.Description == "Description"
@deprecation_check
def test_add_layer(self):
layer = ifcopenshell.api.run("layer.add_layer", self.file, Name="Name")
assert layer.Name == "Name"