From 653dc393e3df546237e6ae915139933b0c8b9ca0 Mon Sep 17 00:00:00 2001 From: James Johnson <jjohnson@enthought.com> Date: Wed, 20 Jun 2018 14:29:31 +0100 Subject: [PATCH] updated key-value pairs, added tests which call traits_to_dict --- force_bdss/io/tests/test_workflow_writer.py | 14 +++++++++++++- force_bdss/io/workflow_writer.py | 10 +++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/force_bdss/io/tests/test_workflow_writer.py b/force_bdss/io/tests/test_workflow_writer.py index e973770..379af5a 100644 --- a/force_bdss/io/tests/test_workflow_writer.py +++ b/force_bdss/io/tests/test_workflow_writer.py @@ -16,6 +16,7 @@ from force_bdss.tests.dummy_classes.factory_registry_plugin import \ from force_bdss.io.workflow_writer import WorkflowWriter, traits_to_dict,\ pop_recursive from force_bdss.core.workflow import Workflow +from force_bdss.core.input_slot_info import InputSlotInfo class TestWorkflowWriter(unittest.TestCase): @@ -89,7 +90,18 @@ class TestWorkflowWriter(unittest.TestCase): self.assertEqual(traits_to_dict(mock_traits), {"foo": "bar"}) - def test_pop_recursive(self): + def test_traits_to_dict(self): + + wfwriter = WorkflowWriter() + wf = self._create_workflow() + exec_layer = wf.execution_layers[0] + exec_layer.data_sources[0].input_slot_info = [InputSlotInfo()] + slotdata = exec_layer.data_sources[0].input_slot_info[0].__getstate__() + self.assertTrue("__traits_version__" in slotdata) + # Calls traits_to_dict for each data source + datastore_list = wfwriter._execution_layer_data(exec_layer) + new_slotdata = datastore_list[0]['model_data']['input_slot_info'] + self.assertTrue("__traits_version__" not in new_slotdata) test_dictionary = {'K1': {'K1': 'V1', 'K2': 'V2', 'K3': 'V3'}, 'K2': ['V1', 'V2', {'K1': 'V1', 'K2': 'V2', diff --git a/force_bdss/io/workflow_writer.py b/force_bdss/io/workflow_writer.py index a5e120e..615793e 100644 --- a/force_bdss/io/workflow_writer.py +++ b/force_bdss/io/workflow_writer.py @@ -108,14 +108,14 @@ def pop_recursive(dictionary, remove_key): except KeyError: pass - for key in dictionary: + for key,value in dictionary.items(): # If remove_key is in the dict, remove it - if isinstance(dictionary[key], dict): - pop_recursive(dictionary[key], remove_key) + if isinstance(value, dict): + pop_recursive(value, remove_key) # If we have a non-dict iterable which contains a dict, # call pop.(remove_key) from that as well - elif isinstance(dictionary[key], Iterable): - for element in dictionary[key]: + elif isinstance(value, (tuple, list)): + for element in value: if isinstance(element, dict): pop_recursive(element, remove_key) -- GitLab