From 95853bcd627898390d0b3720c976b53b60c37b65 Mon Sep 17 00:00:00 2001 From: Satrajit Ghosh Date: Wed, 7 Mar 2018 16:21:48 -0500 Subject: [PATCH 1/3] fix: handle automatic module creation, name extraction, and default value determination --- nipype/utils/nipype2boutiques.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nipype/utils/nipype2boutiques.py b/nipype/utils/nipype2boutiques.py index 9f228f5c5d..f6648a485b 100644 --- a/nipype/utils/nipype2boutiques.py +++ b/nipype/utils/nipype2boutiques.py @@ -44,6 +44,8 @@ def generate_boutiques_descriptor( import_module(module) module_name = str(module) module = sys.modules[module] + else: + module_name = str(module.__name__) interface = getattr(module, interface_name)() inputs = interface.input_spec() @@ -249,7 +251,7 @@ def create_tempfile(): Creates a temp file and returns its name. ''' fileTemp = tempfile.NamedTemporaryFile(delete=False) - fileTemp.write("hello") + fileTemp.write(b"hello") fileTemp.close() return fileTemp.name @@ -283,6 +285,8 @@ def must_generate_value(name, type, ignored_template_inputs, spec_info, spec, # Best guess to detect string restrictions... if "' or '" in spec_info: return False + if spec.default or spec.default_value(): + return False if not ignored_template_inputs: return True return not (name in ignored_template_inputs) From 9fbeef442a2c14d1117c292e3de33d7c9bb9f4c0 Mon Sep 17 00:00:00 2001 From: Satrajit Ghosh Date: Wed, 7 Mar 2018 16:41:33 -0500 Subject: [PATCH 2/3] tst: add basic test --- nipype/utils/tests/test_nipype2boutiques.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 nipype/utils/tests/test_nipype2boutiques.py diff --git a/nipype/utils/tests/test_nipype2boutiques.py b/nipype/utils/tests/test_nipype2boutiques.py new file mode 100644 index 0000000000..f1d0c46eed --- /dev/null +++ b/nipype/utils/tests/test_nipype2boutiques.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- +# vi: set ft=python sts=4 ts=4 sw=4 et: +from future import standard_library +standard_library.install_aliases() + +from ..nipype2boutiques import generate_boutiques_descriptor + + +def test_generate(): + generate_boutiques_descriptor(module='nipype.interfaces.ants.registration', + interface_name='ANTS', + ignored_template_inputs=(), + docker_image=None, + docker_index=None, + verbose=False, + ignore_template_numbers=False) From 7f38e40f5cc764b64cfc50f472e529238078e7a2 Mon Sep 17 00:00:00 2001 From: Satrajit Ghosh Date: Wed, 7 Mar 2018 21:07:00 -0500 Subject: [PATCH 3/3] fix: check with str and bytes --- nipype/utils/nipype2boutiques.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nipype/utils/nipype2boutiques.py b/nipype/utils/nipype2boutiques.py index f6648a485b..21ecbc0eee 100644 --- a/nipype/utils/nipype2boutiques.py +++ b/nipype/utils/nipype2boutiques.py @@ -2,7 +2,7 @@ from __future__ import (print_function, division, unicode_literals, absolute_import) -from builtins import str, open +from builtins import str, open, bytes # This tool exports a Nipype interface in the Boutiques (https://github.com/boutiques) JSON format. # Boutiques tools can be imported in CBRAIN (https://github.com/aces/cbrain) among other platforms. # @@ -40,7 +40,7 @@ def generate_boutiques_descriptor( raise Exception("Undefined module.") # Retrieves Nipype interface - if isinstance(module, str): + if isinstance(module, (str, bytes)): import_module(module) module_name = str(module) module = sys.modules[module]