Skip to content

Commit 9ea629d

Browse files
committed
fix: attempt to resolve pickled function strings
1 parent 3fcb646 commit 9ea629d

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

nipype/pipeline/engine.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,21 @@ def _write_inputs(node):
5858
val = getattr(node.inputs, key)
5959
if isdefined(val):
6060
if type(val) == str:
61-
lines.append('%s.inputs.%s = "%s"' % (node.name, key, val))
61+
try:
62+
func = create_function_from_source(val)
63+
except RuntimeError, e:
64+
lines.append("%s.inputs.%s = '%s'" % (node.name, key, val))
65+
else:
66+
funcname = [name for name in func.func_globals if name != '__builtins__'][0]
67+
lines.append(cPickle.loads(val))
68+
if funcname == node.name:
69+
lines[-1] = lines[-1].replace(' %s(' % funcname,
70+
' %s_1(' % funcname)
71+
funcname = '%s_1' % funcname
72+
lines.append('from nipype.utils.misc import getsource')
73+
lines.append("%s.inputs.%s = getsource(%s)" % (node.name,
74+
key,
75+
funcname))
6276
else:
6377
lines.append('%s.inputs.%s = %s' % (node.name, key, val))
6478
return lines
@@ -586,7 +600,8 @@ def export(self, prefix="output", format="python"):
586600
functionlines.append(cPickle.loads(function).rstrip())
587601
all_lines = importlines + functionlines + lines
588602
with open('%s%s.py' % (prefix, self.name), 'wt') as fp:
589-
fp.writelines('\n'.join([line.replace('\n', '\\n') for line in all_lines]))
603+
#fp.writelines('\n'.join([line.replace('\n', '\\n') for line in all_lines]))
604+
fp.writelines('\n'.join(all_lines))
590605
return all_lines
591606

592607
def run(self, plugin=None, plugin_args=None, updatehash=False):

0 commit comments

Comments
 (0)