From bfbad5aff3844e05af8da57e929482afee801955 Mon Sep 17 00:00:00 2001 From: "ANSYS\\spearson" Date: Fri, 26 Aug 2022 12:28:07 +0100 Subject: [PATCH 1/6] fix for meshiongworkflow class --- src/ansys/fluent/core/meshing/workflow.py | 26 +++++++++++++++++++++++ tests/test_meshing_workflow.py | 12 +++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/ansys/fluent/core/meshing/workflow.py b/src/ansys/fluent/core/meshing/workflow.py index 7094ed11996e..085327064650 100644 --- a/src/ansys/fluent/core/meshing/workflow.py +++ b/src/ansys/fluent/core/meshing/workflow.py @@ -16,6 +16,28 @@ def __init__(self, task_name): class MeshingWorkflow: + class TaskContainer(PyCallableStateObject): + def __init__(self, meshing): + self._meshing_container = meshing + self._workflow = meshing._workflow + self._meshing = meshing._meshing + self._task_container = self._workflow.TaskObject + + def __getitem__(self, name): + return MeshingWorkflow.Task(self._meshing_container, name) + + def __getattr__(self, attr): + return getattr(self._task_container, attr) + + def __dir__(self): + return sorted( + set( + list(self.__dict__.keys()) + + dir(type(self)) + + dir(self._task_container) + ) + ) + class Task(PyCallableStateObject): def __init__(self, meshing, name): self._workflow = meshing._workflow @@ -53,6 +75,10 @@ def __init__(self, workflow, meshing): def task(self, name): return MeshingWorkflow.Task(self, name) + @property + def TaskObject(self): + return MeshingWorkflow.TaskContainer(self) + def __getattr__(self, attr): return getattr(self._workflow, attr) diff --git a/tests/test_meshing_workflow.py b/tests/test_meshing_workflow.py index 7dc9f9057266..1296e3041c42 100644 --- a/tests/test_meshing_workflow.py +++ b/tests/test_meshing_workflow.py @@ -199,6 +199,18 @@ def test_command_args_datamodel_se(new_mesh_session): assert igt.CommandArguments.CadImportOptions.OneZonePer.getAttribValue("default") +@pytest.mark.skipif(os.getenv("FLUENT_IMAGE_TAG") == "v22.2.0", reason="Skip on 22.2") +def test_command_args_including_task_object_datamodel_se(new_mesh_session): + session_new = new_mesh_session + w = session_new.workflow + w.InitializeWorkflow(WorkflowType="Watertight Geometry") + igt = w.TaskObject["Import Geometry"] + assert igt.Arguments == {} + assert igt.CommandArguments.CadImportOptions() + assert igt.CommandArguments.CadImportOptions.OneZonePer() + assert igt.CommandArguments.CadImportOptions.OneZonePer.getAttribValue("default") + + @pytest.mark.skipif(os.getenv("FLUENT_IMAGE_TAG") == "v22.2.0", reason="Skip on 22.2") def test_meshing_object_commands(new_mesh_session, tmp_path=pyfluent.EXAMPLES_PATH): session_new = new_mesh_session From 19e8b2120a3bbab47189dcbfd7017bc476b3a22c Mon Sep 17 00:00:00 2001 From: "ANSYS\\spearson" Date: Fri, 26 Aug 2022 12:31:27 +0100 Subject: [PATCH 2/6] fix for meshingworkflow class --- src/ansys/fluent/core/meshing/workflow.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/ansys/fluent/core/meshing/workflow.py b/src/ansys/fluent/core/meshing/workflow.py index 085327064650..a59ba7b023f0 100644 --- a/src/ansys/fluent/core/meshing/workflow.py +++ b/src/ansys/fluent/core/meshing/workflow.py @@ -19,9 +19,7 @@ class MeshingWorkflow: class TaskContainer(PyCallableStateObject): def __init__(self, meshing): self._meshing_container = meshing - self._workflow = meshing._workflow - self._meshing = meshing._meshing - self._task_container = self._workflow.TaskObject + self._task_container = meshing._workflow.TaskObject def __getitem__(self, name): return MeshingWorkflow.Task(self._meshing_container, name) From ab0967a4aa8c0ce357e06581373f905a6c9199e7 Mon Sep 17 00:00:00 2001 From: "ANSYS\\spearson" Date: Fri, 26 Aug 2022 15:55:52 +0100 Subject: [PATCH 3/6] don't call set set state when refresh command args --- src/ansys/fluent/core/meshing/workflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ansys/fluent/core/meshing/workflow.py b/src/ansys/fluent/core/meshing/workflow.py index a59ba7b023f0..946caa2a36e5 100644 --- a/src/ansys/fluent/core/meshing/workflow.py +++ b/src/ansys/fluent/core/meshing/workflow.py @@ -50,7 +50,8 @@ def CommandArguments(self): def _refreshed_command(self): task_arg_state = self.Arguments.get_state() cmd = self._command() - cmd.set_state(task_arg_state) + if task_arg_state: + cmd.update_dict(task_arg_state) return cmd def _command(self): From 7231ab702c89d38bc0e9a26e63cab9df7fcad234 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 29 Aug 2022 15:36:34 +0530 Subject: [PATCH 4/6] bug fix in tests --- tests/test_pure_mesh_vs_mesh_workflow.py | 4 +++- tests/util/meshing_workflow.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_pure_mesh_vs_mesh_workflow.py b/tests/test_pure_mesh_vs_mesh_workflow.py index 1f2ecb34994b..675ae355423c 100644 --- a/tests/test_pure_mesh_vs_mesh_workflow.py +++ b/tests/test_pure_mesh_vs_mesh_workflow.py @@ -30,7 +30,9 @@ def test_meshing_mode(load_mixing_elbow_meshing): session_dir = dir(meshing_session) for attr in ("field_data", "field_info", "meshing", "workflow"): assert attr in session_dir - assert meshing_session.workflow.TaskObject["Import Geometry"].Execute() + assert meshing_session.workflow.InitializeWorkflow( + WorkflowType="Watertight Geometry" + ) assert meshing_session.switch_to_solver() diff --git a/tests/util/meshing_workflow.py b/tests/util/meshing_workflow.py index 96f64e065dc6..9da7e293233a 100644 --- a/tests/util/meshing_workflow.py +++ b/tests/util/meshing_workflow.py @@ -11,7 +11,7 @@ def assign_task_arguments( task.Arguments = kwargs if check_state: # the state that we have set must be a subset of the total state - assert kwargs.items() <= task.Arguments().items() + assert kwargs.items() <= task.Arguments.items() def check_task_execute_preconditions(task) -> None: From 9b21d97011e5f7dbe25d04037a79d0fa0fa4f9d5 Mon Sep 17 00:00:00 2001 From: Prithwish Mukherjee Date: Mon, 29 Aug 2022 16:12:32 +0530 Subject: [PATCH 5/6] bug fix in test --- tests/test_pure_mesh_vs_mesh_workflow.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_pure_mesh_vs_mesh_workflow.py b/tests/test_pure_mesh_vs_mesh_workflow.py index 675ae355423c..c71ce25c6e42 100644 --- a/tests/test_pure_mesh_vs_mesh_workflow.py +++ b/tests/test_pure_mesh_vs_mesh_workflow.py @@ -17,7 +17,6 @@ def test_pure_meshing_mode(load_mixing_elbow_pure_meshing): import_geometry_dir = dir(import_geometry) for attr in ("AddChildToTask", "Arguments", "Execute", "setState"): assert attr in import_geometry_dir - assert import_geometry.Execute() with pytest.raises(AttributeError): pure_meshing_session.switch_to_solver() From 995bc3ebc756b3c100076b471f7fcfb8a889f891 Mon Sep 17 00:00:00 2001 From: Sean Pearson <93727996+seanpearsonuk@users.noreply.github.com> Date: Tue, 30 Aug 2022 10:54:45 +0100 Subject: [PATCH 6/6] sort out variant item issue (#792) * sort out variant item issue * sort out variant item issue Co-authored-by: Prithwish Mukherjee --- src/ansys/fluent/core/services/datamodel_se.py | 14 +++++--------- tests/test_meshing_workflow.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/ansys/fluent/core/services/datamodel_se.py b/src/ansys/fluent/core/services/datamodel_se.py index 404a220bddde..8e1adccefcf2 100644 --- a/src/ansys/fluent/core/services/datamodel_se.py +++ b/src/ansys/fluent/core/services/datamodel_se.py @@ -72,11 +72,7 @@ def initialize_datamodel( def get_attribute_value( self, request: DataModelProtoModule.GetAttributeValueRequest ) -> DataModelProtoModule.GetAttributeValueResponse: - ret = self.__stub.getAttributeValue(request, metadata=self.__metadata) - try: - return ret.item - except AttributeError: - return ret + return self.__stub.getAttributeValue(request, metadata=self.__metadata) @catch_grpc_error def get_state( @@ -168,13 +164,13 @@ def _convert_variant_to_value(var: Variant): elif var.HasField("string_state"): return var.string_state elif var.HasField("bool_vector_state"): - return var.bool_vector_state + return var.bool_vector_state.item elif var.HasField("int64_vector_state"): - return var.int64_vector_state + return var.int64_vector_state.item elif var.HasField("double_vector_state"): - return var.double_vector_state + return var.double_vector_state.item elif var.HasField("string_vector_state"): - return var.string_vector_state + return var.string_vector_state.item elif var.HasField("variant_vector_state"): val = [] for item in var.variant_vector_state.item: diff --git a/tests/test_meshing_workflow.py b/tests/test_meshing_workflow.py index 1296e3041c42..28fafd17d005 100644 --- a/tests/test_meshing_workflow.py +++ b/tests/test_meshing_workflow.py @@ -228,3 +228,14 @@ def test_meshing_object_commands(new_mesh_session, tmp_path=pyfluent.EXAMPLES_PA os.remove(file_path) assert returned + + +@pytest.mark.skipif(os.getenv("FLUENT_IMAGE_TAG") == "v22.2.0", reason="Skip on 22.2") +def test_attribute_query_list_types(new_mesh_session): + session_new = new_mesh_session + w = session_new.workflow + w.InitializeWorkflow(WorkflowType="Watertight Geometry") + igt = w.TaskObject["Import Geometry"] + assert ["CAD", "Mesh"] == igt.CommandArguments.FileFormat.getAttribValue( + "allowedValues" + )