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