Skip to content

Commit 3902ed8

Browse files
committed
Merge remote-tracking branch 'origin/master' into stagefiles
2 parents 0397939 + c8f5848 commit 3902ed8

File tree

7 files changed

+24
-24
lines changed

7 files changed

+24
-24
lines changed

cwltool/cwltest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import sys
88
import shutil
99
import tempfile
10-
import yaml
11-
import yaml.scanner
10+
import ruamel.yaml as yaml
11+
import ruamel.yaml.scanner as yamlscanner
1212
import pipes
1313
import logging
1414
import schema_salad.ref_resolver
@@ -112,7 +112,7 @@ def run_test(args, i, t): # type: (argparse.Namespace, Any, Dict[str,str]) -> i
112112
_logger.error(t.get("doc"))
113113
_logger.error("Returned non-zero")
114114
return 1
115-
except (yaml.scanner.ScannerError, TypeError) as e:
115+
except (yamlscanner.ScannerError, TypeError) as e:
116116
_logger.error(u"""Test failed: %s""", " ".join([pipes.quote(tc) for tc in test_command]))
117117
_logger.error(outstr)
118118
_logger.error(u"Parse error %s", str(e))

cwltool/expression.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import logging
66
import os
77
from .errors import WorkflowException
8-
import yaml
98
import schema_salad.validate as validate
109
import schema_salad.ref_resolver
1110
from . import sandboxjs

cwltool/job.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import tempfile
55
import glob
66
import json
7-
import yaml
87
import logging
98
import sys
109
import requests

cwltool/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
import logging
99
import copy
1010
import tempfile
11+
import ruamel.yaml as yaml
1112
import urlparse
1213
import hashlib
1314
import pkg_resources # part of setuptools
1415
import random
1516
import functools
1617

17-
import yaml
1818
import rdflib
1919
from typing import Union, Any, cast, Callable, Dict, Tuple, IO
2020

cwltool/process.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
import os
33
import json
44
import copy
5-
import yaml
6-
import copy
75
import logging
86
import pprint
97
import stat

cwltool/workflow.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,23 +242,23 @@ def try_make_job(self, step, **kwargs):
242242
raise WorkflowException("Workflow step contains valueFrom but StepInputExpressionRequirement not in requirements")
243243

244244
vfinputs = {shortname(k): v for k,v in inputobj.iteritems()}
245-
def valueFromFunc(k, v): # type: (Any, Any) -> Any
246-
if k in valueFrom:
247-
return expression.do_eval(
248-
valueFrom[k], vfinputs, self.workflow.requirements,
249-
None, None, {}, context=v)
250-
else:
251-
return v
245+
def postScatterEval(io):
246+
shortio = {shortname(k): v for k,v in io.iteritems()}
247+
def valueFromFunc(k, v): # type: (Any, Any) -> Any
248+
if k in valueFrom:
249+
return expression.do_eval(
250+
valueFrom[k], shortio, self.workflow.requirements,
251+
None, None, {}, context=v)
252+
else:
253+
return v
254+
return {k: valueFromFunc(k, v) for k,v in io.items()}
252255

253256
if "scatter" in step.tool:
254257
scatter = aslist(step.tool["scatter"])
255258
method = step.tool.get("scatterMethod")
256259
if method is None and len(scatter) != 1:
257260
raise WorkflowException("Must specify scatterMethod when scattering over multiple inputs")
258-
kwargs["valueFrom"] = valueFromFunc
259-
260-
inputobj = {k: valueFromFunc(k, v) if k not in scatter else v
261-
for k,v in inputobj.items()}
261+
kwargs["postScatterEval"] = postScatterEval
262262

263263
if method == "dotproduct" or method is None:
264264
jobs = dotproduct_scatter(step, inputobj, scatter,
@@ -280,7 +280,7 @@ def valueFromFunc(k, v): # type: (Any, Any) -> Any
280280
callback), 0, **kwargs)
281281
else:
282282
_logger.debug(u"[job %s] job input %s", step.name, json.dumps(inputobj, indent=4))
283-
inputobj = {k: valueFromFunc(k, v) for k,v in inputobj.items()}
283+
inputobj = postScatterEval(inputobj)
284284
_logger.debug(u"[job %s] evaluated job input to %s", step.name, json.dumps(inputobj, indent=4))
285285
jobs = step.job(inputobj, callback, **kwargs)
286286

@@ -551,7 +551,9 @@ def dotproduct_scatter(process, joborder, scatter_keys, output_callback, **kwarg
551551
for n in range(0, l):
552552
jo = copy.copy(joborder)
553553
for s in scatter_keys:
554-
jo[s] = kwargs["valueFrom"](s, joborder[s][n])
554+
jo[s] = joborder[s][n]
555+
556+
jo = kwargs["postScatterEval"](jo)
555557

556558
for j in process.job(jo, functools.partial(rc.receive_scatter_output, n), **kwargs):
557559
yield j
@@ -571,9 +573,10 @@ def nested_crossproduct_scatter(process, joborder, scatter_keys, output_callback
571573

572574
for n in range(0, l):
573575
jo = copy.copy(joborder)
574-
jo[scatter_key] = kwargs["valueFrom"](scatter_key, joborder[scatter_key][n])
576+
jo[scatter_key] = joborder[scatter_key][n]
575577

576578
if len(scatter_keys) == 1:
579+
jo = kwargs["postScatterEval"](jo)
577580
for j in process.job(jo, functools.partial(rc.receive_scatter_output, n), **kwargs):
578581
yield j
579582
else:
@@ -620,9 +623,10 @@ def flat_crossproduct_scatter(process, joborder, scatter_keys, output_callback,
620623
put = startindex
621624
for n in range(0, l):
622625
jo = copy.copy(joborder)
623-
jo[scatter_key] = kwargs["valueFrom"](scatter_key, joborder[scatter_key][n])
626+
jo[scatter_key] = joborder[scatter_key][n]
624627

625628
if len(scatter_keys) == 1:
629+
jo = kwargs["postScatterEval"](jo)
626630
for j in process.job(jo, functools.partial(rc.receive_scatter_output, put), **kwargs):
627631
yield j
628632
put += 1

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
'schemas/draft-4/salad/schema_salad/metaschema/*.md']},
3838
install_requires=[
3939
'requests',
40-
'PyYAML',
40+
'ruamel.yaml',
4141
'rdflib >= 4.1.0',
4242
'rdflib-jsonld >= 0.3.0',
4343
'shellescape',

0 commit comments

Comments
 (0)