3
3
import json
4
4
import re
5
5
import traceback
6
+ from copy import deepcopy
6
7
7
8
from schema_salad .ref_resolver import Loader
8
9
import schema_salad .validate
@@ -326,9 +327,6 @@ def _draft3toDraft4dev1(doc, loader, baseuri):
326
327
# type: (Any, Loader, str) -> Any
327
328
if isinstance (doc , dict ):
328
329
if "class" in doc and doc ["class" ] == "Workflow" :
329
- if 'parsed' in doc :
330
- del doc ['parsed' ]
331
- return doc
332
330
333
331
def fixup (f ): # type: (str) -> str
334
332
doc , frg = urlparse .urldefrag (f )
@@ -351,8 +349,9 @@ def fixup(f): # type: (str) -> str
351
349
step ["scatter" ] = [fixup (s ) for s in aslist (step ["scatter" ])]
352
350
for out in doc ["outputs" ]:
353
351
out ["source" ] = fixup (out ["source" ])
354
- doc ['parsed' ]= True
355
352
for key , value in doc .items ():
353
+ if key == 'run' :
354
+ value = deepcopy (value )
356
355
doc [key ] = _draft3toDraft4dev1 (value , loader , baseuri )
357
356
elif isinstance (doc , list ):
358
357
doc = [_draft3toDraft4dev1 (item , loader , baseuri ) for item in doc ]
@@ -368,15 +367,13 @@ def _draft4Dev1toDev2(doc, loader, baseuri):
368
367
# type: (Any, Loader, str) -> Any
369
368
if isinstance (doc , dict ):
370
369
if "class" in doc and doc ["class" ] == "Workflow" :
371
- if 'parsed' in doc :
372
- del doc ['parsed' ]
373
- return doc
374
370
for out in doc ["outputs" ]:
375
371
out ["outputSource" ] = out ["source" ]
376
372
del out ["source" ]
377
373
for key , value in doc .items ():
374
+ if key == 'run' :
375
+ value = deepcopy (value )
378
376
doc [key ] = _draft4Dev1toDev2 (value , loader , baseuri )
379
- doc ['parsed' ]= True
380
377
elif isinstance (doc , list ):
381
378
doc = [_draft4Dev1toDev2 (item , loader , baseuri ) for item in doc ]
382
379
0 commit comments