Skip to content

Commit 7b5201d

Browse files
authored
Merge pull request #1764 from wtriplett/fix/py3-encode-before-hash
improve python 3 compatibility when parameterize_dirs is False
2 parents 98a09d5 + 212af5e commit 7b5201d

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

Diff for: nipype/pipeline/engine/nodes.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ def _parameterization_dir(self, param):
391391
- Otherwise, return the parameterization unchanged.
392392
"""
393393
if len(param) > 32:
394-
return sha1(param).hexdigest()
394+
return sha1(param.encode()).hexdigest()
395395
else:
396396
return param
397397

Diff for: nipype/pipeline/engine/tests/test_engine.py

+28-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
class InputSpec(nib.TraitedSpec):
2323
input1 = nib.traits.Int(desc='a random int')
2424
input2 = nib.traits.Int(desc='a random int')
25-
25+
input_file = nib.traits.File(desc='Random File')
2626

2727
class OutputSpec(nib.TraitedSpec):
2828
output1 = nib.traits.List(nib.traits.Int, desc='outputs')
@@ -626,6 +626,33 @@ def func1(in1):
626626
assert not error_raised
627627

628628

629+
def test_parameterize_dirs_false(tmpdir):
630+
from ....interfaces.utility import IdentityInterface
631+
from ....testing import example_data
632+
633+
input_file = example_data('fsl_motion_outliers_fd.txt')
634+
635+
n1 = pe.Node(EngineTestInterface(), name='Node1')
636+
n1.iterables = ('input_file', (input_file, input_file))
637+
n1.interface.inputs.input1 = 1
638+
639+
n2 = pe.Node(IdentityInterface(fields='in1'), name='Node2')
640+
641+
wf = pe.Workflow(name='Test')
642+
wf.base_dir = str(tmpdir)
643+
wf.config['execution']['parameterize_dirs'] = False
644+
wf.connect([(n1, n2, [('output1', 'in1')])])
645+
646+
error_raised = False
647+
try:
648+
wf.run()
649+
except TypeError as typerr:
650+
from nipype.pipeline.engine.base import logger
651+
logger.info('Exception: %s' % str(typerr))
652+
error_raised = True
653+
assert not error_raised
654+
655+
629656
def test_serial_input(tmpdir):
630657
wd = str(tmpdir)
631658
os.chdir(wd)

0 commit comments

Comments
 (0)