@@ -163,7 +163,6 @@ def __init__(self, interface, name, iterables=None, itersource=None,
163
163
self .name = name
164
164
165
165
self ._output_dir = None
166
- self ._result = None
167
166
self .iterables = iterables
168
167
self .synchronize = synchronize
169
168
self .itersource = itersource
@@ -190,11 +189,7 @@ def interface(self):
190
189
191
190
@property
192
191
def result (self ):
193
- # Cache first
194
- if not self ._result :
195
- self ._result = self ._load_resultfile (self .output_dir ())[0 ]
196
-
197
- return self ._result
192
+ return self ._load_resultfile (self .output_dir ())[0 ]
198
193
199
194
@property
200
195
def inputs (self ):
@@ -420,7 +415,7 @@ def run(self, updatehash=False):
420
415
self .write_report (report_type = 'postexec' , cwd = outdir )
421
416
logger .info ('[Node] Finished "%s".' , self .fullname )
422
417
os .chdir (cwd )
423
- return self ._result
418
+ return self .result
424
419
425
420
# Private functions
426
421
def _parameterization_dir (self , param ):
@@ -511,7 +506,7 @@ def _get_inputs(self):
511
506
def _run_interface (self , execute = True , updatehash = False ):
512
507
if updatehash :
513
508
return
514
- self . _result = self ._run_command (execute )
509
+ return self ._run_command (execute )
515
510
516
511
def _save_results (self , result , cwd ):
517
512
resultsfile = op .join (cwd , 'result_%s.pklz' % self .name )
@@ -609,8 +604,7 @@ def _load_results(self, cwd):
609
604
self ._save_results (result , cwd )
610
605
else :
611
606
logger .debug ('aggregating mapnode results' )
612
- self ._run_interface ()
613
- result = self ._result
607
+ result = self ._run_interface ()
614
608
return result
615
609
616
610
def _run_command (self , execute , copyfiles = True ):
@@ -625,7 +619,7 @@ def _run_command(self, execute, copyfiles=True):
625
619
interface = self ._interface .__class__ ,
626
620
runtime = runtime ,
627
621
inputs = self ._interface .inputs .get_traitsfree ())
628
- self . _result = result
622
+
629
623
if copyfiles :
630
624
self ._copyfiles_to_wd (cwd , execute )
631
625
@@ -634,7 +628,7 @@ def _run_command(self, execute, copyfiles=True):
634
628
try :
635
629
cmd = self ._interface .cmdline
636
630
except Exception as msg :
637
- self . _result .runtime .stderr = msg
631
+ result .runtime .stderr = msg
638
632
raise
639
633
cmdfile = op .join (cwd , 'command.txt' )
640
634
with open (cmdfile , 'wt' ) as fd :
@@ -646,7 +640,7 @@ def _run_command(self, execute, copyfiles=True):
646
640
result = self ._interface .run ()
647
641
except Exception as msg :
648
642
self ._save_results (result , cwd )
649
- self . _result .runtime .stderr = msg
643
+ result .runtime .stderr = msg
650
644
raise
651
645
652
646
dirs2keep = None
@@ -1182,19 +1176,19 @@ def _node_runner(self, nodes, updatehash=False):
1182
1176
yield i , node , err
1183
1177
1184
1178
def _collate_results (self , nodes ):
1185
- self . _result = InterfaceResult (interface = [], runtime = [],
1186
- provenance = [], inputs = [],
1187
- outputs = self .outputs )
1179
+ result = InterfaceResult (
1180
+ interface = [], runtime = [], provenance = [], inputs = [],
1181
+ outputs = self .outputs )
1188
1182
returncode = []
1189
1183
for i , node , err in nodes :
1190
- self . _result .runtime .insert (i , None )
1184
+ result .runtime .insert (i , None )
1191
1185
if node .result :
1192
1186
if hasattr (node .result , 'runtime' ):
1193
- self . _result .interface .insert (i , node .result .interface )
1194
- self . _result .inputs .insert (i , node .result .inputs )
1195
- self . _result .runtime [i ] = node .result .runtime
1187
+ result .interface .insert (i , node .result .interface )
1188
+ result .inputs .insert (i , node .result .inputs )
1189
+ result .runtime [i ] = node .result .runtime
1196
1190
if hasattr (node .result , 'provenance' ):
1197
- self . _result .provenance .insert (i , node .result .provenance )
1191
+ result .provenance .insert (i , node .result .provenance )
1198
1192
returncode .insert (i , err )
1199
1193
if self .outputs :
1200
1194
for key , _ in list (self .outputs .items ()):
@@ -1203,24 +1197,24 @@ def _collate_results(self, nodes):
1203
1197
if str2bool (rm_extra ) and self .needed_outputs :
1204
1198
if key not in self .needed_outputs :
1205
1199
continue
1206
- values = getattr (self . _result .outputs , key )
1200
+ values = getattr (result .outputs , key )
1207
1201
if not isdefined (values ):
1208
1202
values = []
1209
1203
if node .result .outputs :
1210
1204
values .insert (i , node .result .outputs .get ()[key ])
1211
1205
else :
1212
1206
values .insert (i , None )
1213
1207
defined_vals = [isdefined (val ) for val in values ]
1214
- if any (defined_vals ) and self . _result .outputs :
1215
- setattr (self . _result .outputs , key , values )
1208
+ if any (defined_vals ) and result .outputs :
1209
+ setattr (result .outputs , key , values )
1216
1210
1217
1211
if self .nested :
1218
1212
for key , _ in list (self .outputs .items ()):
1219
- values = getattr (self . _result .outputs , key )
1213
+ values = getattr (result .outputs , key )
1220
1214
if isdefined (values ):
1221
1215
values = unflatten (values , filename_to_list (
1222
1216
getattr (self .inputs , self .iterfield [0 ])))
1223
- setattr (self . _result .outputs , key , values )
1217
+ setattr (result .outputs , key , values )
1224
1218
1225
1219
if returncode and any ([code is not None for code in returncode ]):
1226
1220
msg = []
@@ -1231,6 +1225,8 @@ def _collate_results(self, nodes):
1231
1225
raise Exception ('Subnodes of node: %s failed:\n %s' %
1232
1226
(self .name , '\n ' .join (msg )))
1233
1227
1228
+ return result
1229
+
1234
1230
def write_report (self , report_type = None , cwd = None ):
1235
1231
if not str2bool (self .config ['execution' ]['create_report' ]):
1236
1232
return
@@ -1322,9 +1318,10 @@ def _run_interface(self, execute=True, updatehash=False):
1322
1318
nitems = len (filename_to_list (getattr (self .inputs ,
1323
1319
self .iterfield [0 ])))
1324
1320
nodenames = ['_' + self .name + str (i ) for i in range (nitems )]
1325
- self ._collate_results (self ._node_runner (self ._make_nodes (cwd ),
1326
- updatehash = updatehash ))
1327
- self ._save_results (self ._result , cwd )
1321
+ result = self ._collate_results (
1322
+ self ._node_runner (self ._make_nodes (cwd ),
1323
+ updatehash = updatehash ))
1324
+ self ._save_results (result , cwd )
1328
1325
# remove any node directories no longer required
1329
1326
dirs2remove = []
1330
1327
for path in glob (op .join (cwd , 'mapflow' , '*' )):
@@ -1334,5 +1331,5 @@ def _run_interface(self, execute=True, updatehash=False):
1334
1331
for path in dirs2remove :
1335
1332
shutil .rmtree (path )
1336
1333
else :
1337
- self . _result = self ._load_results (cwd )
1334
+ result = self ._load_results (cwd )
1338
1335
os .chdir (old_cwd )
0 commit comments