8000 Ensure Workflow doesn't try to parse requirements (as simple dict) · illusional/python-cwlgen@df84cda · GitHub
[go: up one dir, main page]

Skip to content 8000

Commit df84cda

Browse files
committed
Ensure Workflow doesn't try to parse requirements (as simple dict)
1 parent 80b1f5d commit df84cda

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

cwlgen/workflow.py

Lines changed: 7 additions & 6 deletions
F3B2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class Workflow(Serializable):
3535
Documentation: https://www.commonwl.org/v1.0/Workflow.html#Workflow
3636
"""
3737
__CLASS__ = 'Workflow'
38-
ignore_fields_on_parse = ["class"]
39-
ignore_fields_on_convert = ["inputs", "outputs"]
38+
ignore_fields_on_parse = ["class", "requirements"]
39+
ignore_fields_on_convert = ["inputs", "outputs", "requirements"]
4040
parse_types = {
4141
"inputs": [[InputParameter]],
4242
"outputs": [[WorkflowOutputParameter]],
@@ -71,9 +71,6 @@ def get_dict(self):
7171

7272
cwl_workflow['class'] = self.__CLASS__
7373

74-
cwl_workflow['inputs'] = {}
75-
cwl_workflow['outputs'] = {}
76-
7774
# steps, inputs, outputs are required properties, so it should fail if we can't place it
7875
cwl_workflow['steps'] = {step.id: step.get_dict() for step in self.steps}
7976
cwl_workflow['inputs'] = {i.id: i.get_dict() for i in self.inputs}
@@ -93,7 +90,11 @@ def parse_dict(cls, d):
9390
if isinstance(reqs, list):
9491
wf.requirements = [Requirement.parse_dict(r) for r in reqs]
9592
elif isinstance(reqs, dict):
96-
wf.requirements = [Requirement.parse_dict({**r, "class": c}) for c, r in reqs.items()]
93+
# splat operator here would be so nice {**r, "class": c}
94+
for c, r in reqs.items():
95+
rdict = {'class': c}
96+
rdict.update(r)
97+
wf.requirements.append(Requirement.parse_dict(rdict))
9798

9899
return wf
99100

0 commit comments

Comments
 (0)
0