@@ -46,9 +46,7 @@ def bind_input(self, schema, datum, lead_pos=[], tail_pos=[]):
46
46
else :
47
47
binding ["position" ] = aslist (lead_pos ) + [0 ] + aslist (tail_pos )
48
48
49
- if "valueFrom" in binding and "do_eval" not in binding :
50
- binding ["do_eval" ] = binding ["valueFrom" ]
51
- binding ["valueFrom" ] = datum
49
+ binding ["datum" ] = datum
52
50
53
51
# Handle union types
54
52
if isinstance (schema ["type" ], list ):
@@ -66,7 +64,7 @@ def bind_input(self, schema, datum, lead_pos=[], tail_pos=[]):
66
64
raise validate .ValidationException (u"'%s' is not a valid union %s" % (datum , schema ["type" ]))
67
65
elif isinstance (schema ["type" ], dict ):
68
66
st = copy .deepcopy (schema ["type" ])
69
- if binding and "inputBinding" not in st and "itemSeparator" not in binding and st ["type" ] in ( "array" , "map" ) :
67
+ if binding and "inputBinding" not in st and st ["type" ] == "array" and "itemSeparator" not in binding :
70
68
st ["inputBinding" ] = {}
71
69
bindings .extend (self .bind_input (st , datum , lead_pos = lead_pos , tail_pos = tail_pos ))
72
70
else :
@@ -80,22 +78,12 @@ def bind_input(self, schema, datum, lead_pos=[], tail_pos=[]):
80
78
else :
81
79
datum [f ["name" ]] = f .get ("default" )
82
80
83
- if schema ["type" ] == "map" :
84
- for n , item in datum .items ():
85
- b2 = None
86
- if binding :
87
- b2 = copy .deepcopy (binding )
88
- b2 ["valueFrom" ] = [n , item ]
89
- bindings .extend (self .bind_input ({"type" : schema ["values" ], "inputBinding" : b2 },
90
- item , lead_pos = n , tail_pos = tail_pos ))
91
- binding = None
92
-
93
81
if schema ["type" ] == "array" :
94
82
for n , item in enumerate (datum ):
95
83
b2 = None
96
84
if binding :
97
85
b2 = copy .deepcopy (binding )
98
- b2 ["valueFrom " ] = item
86
+ b2 ["datum " ] = item
99
87
bindings .extend (self .bind_input ({"type" : schema ["items" ], "inputBinding" : b2 },
100
88
item , lead_pos = n , tail_pos = tail_pos ))
101
89
binding = None
@@ -152,9 +140,9 @@ def tostr(self, value): # type: (Any) -> str
152
140
return str (value )
153
141
154
142
def generate_arg (self , binding ): # type: (Dict[str,Any]) -> List[str]
155
- value = binding [ "valueFrom" ]
156
- if "do_eval " in binding :
157
- value = self .do_eval (binding ["do_eval " ], context = value )
143
+ value = binding . get ( "datum" )
144
+ if "valueFrom " in binding :
145
+ value = self .do_eval (binding ["valueFrom " ], context = value )
158
146
159
147
prefix = binding .get ("prefix" )
160
148
sep = binding .get ("separate" , True )
@@ -163,7 +151,7 @@ def generate_arg(self, binding): # type: (Dict[str,Any]) -> List[str]
163
151
if isinstance (value , list ):
164
152
if binding .get ("itemSeparator" ):
165
153
l = [binding ["itemSeparator" ].join ([self .tostr (v ) for v in value ])]
166
- elif binding .get ("do_eval " ):
154
+ elif binding .get ("valueFrom " ):
167
155
value = [v ["path" ] if isinstance (v , dict ) and v .get ("class" ) == "File" else v for v in value ]
168
156
return ([prefix ] if prefix else []) + value
169
157
elif prefix :
0 commit comments