3636from hashlib import sha1
3737
3838from ... import config , logging
39- from ...utils .misc import (flatten , unflatten , package_check , str2bool )
39+ from ...utils .misc import (flatten , unflatten , str2bool )
4040from ...utils .filemanip import (save_json , FileNotFoundError ,
4141 filename_to_list , list_to_filename ,
4242 copyfiles , fnames_presuffix , loadpkl ,
5454 get_print_name , merge_dict , evaluate_connect_function )
5555from .base import EngineBase
5656
57- package_check ('networkx' , '1.3' )
5857logger = logging .getLogger ('workflow' )
5958
6059class Node (EngineBase ):
@@ -607,6 +606,7 @@ def _run_command(self, execute, copyfiles=True):
607606 try :
608607 result = self ._interface .run ()
609608 except Exception as msg :
609+ self ._save_results (result , cwd )
610610 self ._result .runtime .stderr = msg
611611 raise
612612
@@ -1124,6 +1124,7 @@ def _make_nodes(self, cwd=None):
11241124 yield i , node
11251125
11261126 def _node_runner (self , nodes , updatehash = False ):
1127+ old_cwd = os .getcwd ()
11271128 for i , node in nodes :
11281129 err = None
11291130 try :
@@ -1133,6 +1134,7 @@ def _node_runner(self, nodes, updatehash=False):
11331134 if str2bool (self .config ['execution' ]['stop_on_first_crash' ]):
11341135 raise
11351136 finally :
1137+ os .chdir (old_cwd )
11361138 yield i , node , err
11371139
11381140 def _collate_results (self , nodes ):
@@ -1275,12 +1277,8 @@ def _run_interface(self, execute=True, updatehash=False):
12751277 nitems = len (filename_to_list (getattr (self .inputs ,
12761278 self .iterfield [0 ])))
12771279 nodenames = ['_' + self .name + str (i ) for i in range (nitems )]
1278- nodes = list (self ._make_nodes (cwd ))
1279- node_results = list (self ._node_runner (nodes ))
1280- self ._collate_results (node_results )
1281- # map-reduce formulation
1282- #self._collate_results(self._node_runner(self._make_nodes(cwd),
1283- # updatehash=updatehash))
1280+ self ._collate_results (self ._node_runner (self ._make_nodes (cwd ),
1281+ updatehash = updatehash ))
12841282 self ._save_results (self ._result , cwd )
12851283 # remove any node directories no longer required
12861284 dirs2remove = []
0 commit comments