From 4b741eb7645ca81a176bf878f039dc9199e87268 Mon Sep 17 00:00:00 2001 From: imcovangent <I.vanGent@tudelft.nl> Date: Tue, 3 Apr 2018 10:40:29 +0200 Subject: [PATCH] Fixed inconsistency in use of single and double quotes in load() function using a mix of CMDOWS and XML (CPACS) I/O files. Fixed addition of T instead of space in timestamp. Added check on workflow element in CMDOWS while loading to make sure the parameters exists (to avoid unexpected errors downstream). Former-commit-id: dc7b4f6a06003bd0f603fba427f423e3d262737f --- kadmos/cmdows/cmdows.py | 2 +- kadmos/graph/graph_kadmos.py | 13 ++++++++----- kadmos/graph/mixin_equation.py | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/kadmos/cmdows/cmdows.py b/kadmos/cmdows/cmdows.py index e103ebbf9..d1ef5e03c 100644 --- a/kadmos/cmdows/cmdows.py +++ b/kadmos/cmdows/cmdows.py @@ -301,7 +301,7 @@ class CMDOWS(object): # Add elements el.add("creator", creator) el.add("description", description) - el.add("timestamp", str(datetime.now()) if timestamp is None else timestamp) + el.add("timestamp", str(datetime.now()).replace(' ', 'T') if timestamp is None else timestamp) el.add("fileVersion", fileVersion) el.add("cmdowsVersion", cmdowsVersion) return diff --git a/kadmos/graph/graph_kadmos.py b/kadmos/graph/graph_kadmos.py index 62eef74d9..8c76ddced 100644 --- a/kadmos/graph/graph_kadmos.py +++ b/kadmos/graph/graph_kadmos.py @@ -1166,7 +1166,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): projectSpecific=function.finddict('projectSpecific')) for inp in function.findall('inputs/input'): - self.add_edge(inp.findtext('parameterUID'), function.get('uID'), + self.add_edge(inp.findtext('parameterUID').replace("'", '"'), function.get('uID'), valid_ranges=inp.finddict('validRanges', ordered=False, camel_case_conversion=True)) if not function.findall('inputs/input'): @@ -1181,7 +1181,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): # # # for output in function.findall('outputs/output'): - self.add_edge(function.get('uID'), output.findtext('parameterUID')) + self.add_edge(function.get('uID'), output.findtext('parameterUID').replace("'", '"')) if not function.findall('outputs/output'): # Determine assumed output file location (same folder as CMDOWS file) @@ -1193,6 +1193,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): else: logger.warning('Could not find outputs for function: ' + function.get('uID')) + # Add inputs and outputs based on XML io_list = inputs_list+outputs_list _perform_check_list(io_list, check_list, keep_running=keep_running) @@ -1223,7 +1224,7 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): def _load_cmdows_parameters(self, cmdows): for variable in cmdows.findall('parameters/parameter'): - self.add_node(variable.get('uID'), + self.add_node(variable.get('uID').replace("'", '"'), category='variable', shape='o', label=variable.findtext('label'), @@ -1242,8 +1243,10 @@ class KadmosGraph(nx.DiGraph, EquationMixin, VistomsMixin): cmdows_edges = cmdows_data_graph.find('edges') if cmdows_edges is not None: for edge in list(cmdows_edges): - from_id = edge.findtext('fromExecutableBlockUID', default=edge.findtext('fromParameterUID')) - to_id = edge.findtext('toExecutableBlockUID', default=edge.findtext('toParameterUID')) + from_id = edge.findtext('fromExecutableBlockUID', default=edge.findtext('fromParameterUID')).replace("'", '"') + to_id = edge.findtext('toExecutableBlockUID', default=edge.findtext('toParameterUID')).replace("'", '"') + self.assert_node_exists(from_id) + self.assert_node_exists(to_id) self.add_edge(from_id, to_id) else: logger.warning('No dataGraph element found in the CMDOWS file. Ignoring missing information.') diff --git a/kadmos/graph/mixin_equation.py b/kadmos/graph/mixin_equation.py index b3c20ffc8..ff9f4d61f 100644 --- a/kadmos/graph/mixin_equation.py +++ b/kadmos/graph/mixin_equation.py @@ -269,7 +269,7 @@ class EquationMixin(object): label=function.findtext('label'), function_type=function.findtext('functionType')) for inp in function.findall('inputs/input'): - self.add_edge(inp.findtext('parameterUID'), function.get('uID'), + self.add_edge(inp.findtext('parameterUID').replace("'", '"'), function.get('uID'), equation_label=inp.findtext('equationLabel'), valid_ranges=inp.finddict('validRanges', ordered=False, camel_case_conversion=True)) for outp in function.findall('outputs/output'): @@ -277,5 +277,5 @@ class EquationMixin(object): equations = cmdows.xpath('.//*[@uID="' + outp.find('equationsUID').text + '"]')[0] else: equations = outp.findall('equations/equation') - self.add_edge(function.get('uID'), outp.findtext('parameterUID'), + self.add_edge(function.get('uID'), outp.findtext('parameterUID').replace("'", '"'), equations={eq.get('language'): eq.text for eq in equations}) -- GitLab