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