Skip to content

Commit 2ca56bd

Browse files
FIX: Set retain_collection_types to True (#22)
* Set retain_collection_types to True * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add unittest * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 24dd090 commit 2ca56bd

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

pydra/tasks/nipype1/tests/test_nipype1task.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from pkg_resources import resource_filename
44

55
from nipype.interfaces import fsl
6+
import nipype.interfaces.utility as nutil
7+
68
from pydra.tasks.nipype1.utils import Nipype1Task
79

810

@@ -21,3 +23,19 @@ def test_isolation(tmp_path):
2123
res = slicer()
2224
assert res.output.out_files
2325
assert all(fname.startswith(str(out_dir)) for fname in res.output.out_files)
26+
27+
28+
def test_preserve_input_types():
29+
def with_tuple(in_param: tuple):
30+
out_param = in_param
31+
return out_param
32+
33+
tuple_interface = nutil.Function(
34+
input_names=["in_param"], output_names=["out_param"], function=with_tuple
35+
)
36+
37+
nipype1_task_tuple = Nipype1Task(interface=tuple_interface, in_param=tuple(["test"]))
38+
39+
nipype1_task_tuple()
40+
41+
assert isinstance(nipype1_task_tuple._interface._list_outputs()["out_param"], tuple)

pydra/tasks/nipype1/utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ def __init__(
6767
self.output_spec = traitedspec_to_specinfo(interface._outputs())
6868

6969
def _run_task(self):
70-
inputs = attr.asdict(self.inputs, filter=lambda a, v: v is not attr.NOTHING)
70+
inputs = attr.asdict(
71+
self.inputs, filter=lambda a, v: v is not attr.NOTHING, retain_collection_types=True
72+
)
7173
node = nipype.Node(self._interface, base_dir=self.output_dir, name=self.name)
7274
node.inputs.trait_set(**inputs)
7375
res = node.run()

0 commit comments

Comments
 (0)