@@ -134,24 +134,38 @@ class Merge(IOBase):
134
134
def __init__ (self , numinputs = 0 , ** inputs ):
135
135
super (Merge , self ).__init__ (** inputs )
136
136
self ._numinputs = numinputs
137
- add_traits (self .inputs , ['in%d' % (i + 1 ) for i in range (numinputs )])
137
+ if numinputs > 0 :
138
+ input_names = ['in%d' % (i + 1 ) for i in range (numinputs )]
139
+ elif numinputs == 0 :
140
+ input_names = ['in_lists' ]
141
+ else :
142
+ input_names = []
143
+ add_traits (self .inputs , input_names )
138
144
139
145
def _list_outputs (self ):
140
146
outputs = self ._outputs ().get ()
141
147
out = []
148
+
149
+ if self ._numinputs == 0 :
150
+ values = getattr (self .inputs , 'in_lists' )
151
+ if not isdefined (values ):
152
+ return outputs
153
+ else :
154
+ getval = lambda idx : getattr (self .inputs , 'in%d' % (idx + 1 ))
155
+ values = [getval (idx ) for idx in range (self ._numinputs )
156
+ if isdefined (getval (idx ))]
157
+
142
158
if self .inputs .axis == 'vstack' :
143
- for idx in range (self ._numinputs ):
144
- value = getattr (self .inputs , 'in%d' % (idx + 1 ))
145
- if isdefined (value ):
146
- if isinstance (value , list ) and not self .inputs .no_flatten :
147
- out .extend (value )
148
- else :
149
- out .append (value )
159
+ for value in values :
160
+ if isinstance (value , list ) and not self .inputs .no_flatten :
161
+ out .extend (value )
162
+ else :
163
+ out .append (value )
150
164
else :
151
- for i in range (len (filename_to_list (self . inputs . in1 ))):
165
+ for i in range (len (filename_to_list (values [ 0 ] ))):
152
166
out .insert (i , [])
153
- for j in range ( self . _numinputs ) :
154
- out [i ].append (filename_to_list (getattr ( self . inputs , 'in%d' % ( j + 1 )) )[i ])
167
+ for value in values :
168
+ out [i ].append (filename_to_list (values )[i ])
155
169
if out :
156
170
outputs ['out' ] = out
157
171
return outputs
0 commit comments