5
5
import traceback
6
6
from typing import (Any , Callable , Dict , Text , # pylint: disable=unused-import
7
7
Tuple , Union )
8
+ from copy import deepcopy
8
9
9
10
import six
10
11
from six .moves import urllib
@@ -349,9 +350,6 @@ def _draft3toDraft4dev1(doc, loader, baseuri):
349
350
# type: (Any, Loader, Text) -> Any
350
351
if isinstance (doc , dict ):
351
352
if "class" in doc and doc ["class" ] == "Workflow" :
352
- if 'parsed' in doc :
353
- del doc ['parsed' ]
354
- return doc
355
353
356
354
def fixup (f ): # type: (Text) -> Text
357
355
doc , frg = urllib .parse .urldefrag (f )
@@ -374,8 +372,9 @@ def fixup(f): # type: (Text) -> Text
374
372
step ["scatter" ] = [fixup (s ) for s in aslist (step ["scatter" ])]
375
373
for out in doc ["outputs" ]:
376
374
out ["source" ] = fixup (out ["source" ])
377
- doc ['parsed' ]= True
378
375
for key , value in doc .items ():
376
+ if key == 'run' :
377
+ value = deepcopy (value )
379
378
doc [key ] = _draft3toDraft4dev1 (value , loader , baseuri )
380
379
elif isinstance (doc , list ):
381
380
for i , a in enumerate (doc ):
@@ -394,15 +393,13 @@ def _draft4Dev1toDev2(doc, loader, baseuri):
394
393
# type: (Any, Loader, Text) -> Any
395
394
if isinstance (doc , dict ):
396
395
if "class" in doc and doc ["class" ] == "Workflow" :
397
- if 'parsed' in doc :
398
- del doc ['parsed' ]
399
- return doc
400
396
for out in doc ["outputs" ]:
401
397
out ["outputSource" ] = out ["source" ]
402
398
del out ["source" ]
403
399
for key , value in doc .items ():
400
+ if key == 'run' :
401
+ value = deepcopy (value )
404
402
doc [key ] = _draft4Dev1toDev2 (value , loader , baseuri )
405
- doc ['parsed' ]= True
406
403
elif isinstance (doc , list ):
407
404
for i , a in enumerate (doc ):
408
405
doc [i ] = _draft4Dev1toDev2 (a , loader , baseuri )
0 commit comments