From 98213edefa1d2056ed3c0ca826cf4a11a4bdddda Mon Sep 17 00:00:00 2001 From: liamhuber Date: Fri, 17 Jan 2025 12:52:46 -0800 Subject: [PATCH 1/3] Refactor Workflow map setter Signed-off-by: liamhuber --- pyiron_workflow/workflow.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pyiron_workflow/workflow.py b/pyiron_workflow/workflow.py index 8b0a707b..c9950025 100644 --- a/pyiron_workflow/workflow.py +++ b/pyiron_workflow/workflow.py @@ -225,10 +225,8 @@ def __init__( automate_execution: bool = True, **kwargs, ): - self._inputs_map = None - self._outputs_map = None - self.inputs_map = inputs_map - self.outputs_map = outputs_map + self._inputs_map = self._sanitize_map(inputs_map) + self._outputs_map = self._sanitize_map(outputs_map) self._inputs = None self._outputs = None self.automate_execution: bool = automate_execution @@ -269,10 +267,7 @@ def inputs_map(self) -> bidict | None: @inputs_map.setter def inputs_map(self, new_map: dict | bidict | None): - self._deduplicate_nones(new_map) - if new_map is not None: - new_map = bidict(new_map) - self._inputs_map = new_map + self._inputs_map = self._sanitize_map(new_map) @property def outputs_map(self) -> bidict | None: @@ -281,10 +276,13 @@ def outputs_map(self) -> bidict | None: @outputs_map.setter def outputs_map(self, new_map: dict | bidict | None): + self._outputs_map = self._sanitize_map(new_map) + + def _sanitize_map(self, new_map: dict | bidict | None) -> bidict | None: self._deduplicate_nones(new_map) if new_map is not None: new_map = bidict(new_map) - self._outputs_map = new_map + return new_map @staticmethod def _deduplicate_nones(some_map: dict | bidict | None) -> dict | bidict | None: From ca36572dcc645d9e49969ab47c4a9e536e7687a8 Mon Sep 17 00:00:00 2001 From: liamhuber Date: Fri, 17 Jan 2025 12:56:36 -0800 Subject: [PATCH 2/3] Remove return hint The method is in-place Signed-off-by: liamhuber --- pyiron_workflow/workflow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_workflow/workflow.py b/pyiron_workflow/workflow.py index c9950025..5f628cbb 100644 --- a/pyiron_workflow/workflow.py +++ b/pyiron_workflow/workflow.py @@ -285,7 +285,7 @@ def _sanitize_map(self, new_map: dict | bidict | None) -> bidict | None: return new_map @staticmethod - def _deduplicate_nones(some_map: dict | bidict | None) -> dict | bidict | None: + def _deduplicate_nones(some_map: dict | bidict | None): if some_map is not None: for k, v in some_map.items(): if v is None: From 9488d695a354d70cba801d86bc32db9fc8f4a7d1 Mon Sep 17 00:00:00 2001 From: liamhuber Date: Fri, 17 Jan 2025 13:00:26 -0800 Subject: [PATCH 3/3] Move the None check around Signed-off-by: liamhuber --- pyiron_workflow/workflow.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pyiron_workflow/workflow.py b/pyiron_workflow/workflow.py index 5f628cbb..24c2032b 100644 --- a/pyiron_workflow/workflow.py +++ b/pyiron_workflow/workflow.py @@ -262,7 +262,8 @@ def _after_node_setup( @property def inputs_map(self) -> bidict | None: - self._deduplicate_nones(self._inputs_map) + if self._inputs_map is not None: + self._deduplicate_nones(self._inputs_map) return self._inputs_map @inputs_map.setter @@ -271,7 +272,8 @@ def inputs_map(self, new_map: dict | bidict | None): @property def outputs_map(self) -> bidict | None: - self._deduplicate_nones(self._outputs_map) + if self._outputs_map is not None: + self._deduplicate_nones(self._outputs_map) return self._outputs_map @outputs_map.setter @@ -279,17 +281,17 @@ def outputs_map(self, new_map: dict | bidict | None): self._outputs_map = self._sanitize_map(new_map) def _sanitize_map(self, new_map: dict | bidict | None) -> bidict | None: - self._deduplicate_nones(new_map) if new_map is not None: + if isinstance(new_map, dict): + self._deduplicate_nones(new_map) new_map = bidict(new_map) return new_map @staticmethod - def _deduplicate_nones(some_map: dict | bidict | None): - if some_map is not None: - for k, v in some_map.items(): - if v is None: - some_map[k] = (None, f"{k} disabled") + def _deduplicate_nones(some_map: dict | bidict): + for k, v in some_map.items(): + if v is None: + some_map[k] = (None, f"{k} disabled") @property def inputs(self) -> Inputs: