1111from ....utils .filemanip import split_filename
1212from ... import base as nib
1313from ...base import traits , Undefined
14+ from ....interfaces import fsl
15+ from ...utility .wrappers import Function
16+ from ....pipeline import Node
17+
1418
1519standard_library .install_aliases ()
1620
@@ -47,6 +51,23 @@ class spec(nib.TraitedSpec):
4751 assert infields .__repr__ () == '\n foo = 1\n goo = 0.0\n '
4852
4953
54+ def test_TraitedSpec_tab_completion ():
55+ bet_nd = Node (fsl .BET (), name = 'bet' )
56+ bet_interface = fsl .BET ()
57+ bet_inputs = bet_nd .inputs .class_editable_traits ()
58+ bet_outputs = bet_nd .outputs .class_editable_traits ()
59+
60+ # Check __all__ for bet node and interface inputs
61+ assert bet_nd .inputs .__all__ == [
62+ x for x in bet_inputs if not x == "__all__" ]
63+ assert bet_interface .inputs .__all__ == [
64+ x for x in bet_inputs if not x == "__all__" ]
65+
66+ # Check __all__ for bet node outputs
67+ assert bet_nd .outputs .__all__ == [
68+ x for x in bet_outputs if not x == "__all__" ]
69+
70+
5071@pytest .mark .skip
5172def test_TraitedSpec_dynamic ():
5273 from pickle import dumps , loads
@@ -63,6 +84,29 @@ def test_TraitedSpec_dynamic():
6384 assign_a_again
6485
6586
87+ def test_DynamicTraitedSpec_tab_completion ():
88+ extract_func = lambda list_out : list_out [0 ]
89+
90+ # Define interface
91+ func_interface = Function (input_names = ["list_out" ],
92+ output_names = ["out_file" ,"another_file" ],
93+ function = extract_func )
94+ # Check __all__ for interface inputs
95+ assert func_interface .inputs .__all__ == func_interface ._input_names
96+
97+ # Define node
98+ list_extract = Node (Function (
99+ input_names = ["list_out" ],output_names = ["out_file" ],
100+ function = extract_func ), name = "list_extract" )
101+
102+ # Check __all__ for node inputs
103+ assert list_extract .inputs .__all__ == list_extract ._interface ._input_names
104+ # Check __all__ for node outputs
105+ outputs_dict = list_extract ._interface ._outputs ().get ().items ()
106+ outputs = [k for k ,v in outputs_dict if not k == "__all__" ]
107+ assert list_extract .outputs .__all__ == outputs
108+
109+
66110def test_TraitedSpec_logic ():
67111 class spec3 (nib .TraitedSpec ):
68112 _xor_inputs = ('foo' , 'bar' )
0 commit comments