@@ -245,19 +245,21 @@ def save_resultfile(result, cwd, name, rebase=True):
245
245
savepkl (resultsfile , result )
246
246
return
247
247
248
+ backup_traits = {}
248
249
try :
249
250
with indirectory (cwd ):
250
251
# All the magic to fix #2944 resides here:
251
252
for key , old in list (outputs .items ()):
252
253
if isdefined (old ):
254
+ old = result .outputs .trait (key ).handler .get_value (result .outputs , key )
255
+ backup_traits [key ] = old
253
256
val = rebase_path_traits (result .outputs .trait (key ), old , cwd )
254
257
setattr (result .outputs , key , val )
255
258
savepkl (resultsfile , result )
256
259
finally :
257
260
# Restore resolved paths from the outputs dict no matter what
258
- for key , val in list (outputs .items ()):
259
- if isdefined (val ):
260
- setattr (result .outputs , key , val )
261
+ for key , val in list (backup_traits .items ()):
262
+ setattr (result .outputs , key , val )
261
263
262
264
263
265
def load_resultfile (results_file , resolve = True ):
@@ -308,6 +310,8 @@ def load_resultfile(results_file, resolve=True):
308
310
logger .debug ('Resolving paths in outputs loaded from results file.' )
309
311
for trait_name , old in list (outputs .items ()):
310
312
if isdefined (old ):
313
+ old = result .outputs .trait (trait_name ).handler .get_value (
314
+ result .outputs , trait_name )
311
315
value = resolve_path_traits (result .outputs .trait (trait_name ), old ,
312
316
results_file .parent )
313
317
setattr (result .outputs , trait_name , value )
0 commit comments