diff --git a/fsl/utils/assertions.py b/fsl/utils/assertions.py index b8e5a43b5dfb7a80c7151cf1f51243e1d2ecbad0..63b004d1f5c065b3f692663cb937662f31043adf 100644 --- a/fsl/utils/assertions.py +++ b/fsl/utils/assertions.py @@ -39,14 +39,17 @@ _DISABLE_ASSERTIONS = False @contextlib.contextmanager -def disabled(): +def disabled(disable=True): """Context manager which allows assertion checks to be temporarily disabled. + + :arg disable: Set to ``True`` (the default) to disable assertions, + or ``False`` to enable them. """ global _DISABLE_ASSERTIONS oldval = _DISABLE_ASSERTIONS - _DISABLE_ASSERTIONS = True + _DISABLE_ASSERTIONS = disable try: yield diff --git a/fsl/wrappers/wrapperutils.py b/fsl/wrappers/wrapperutils.py index 51f269bcbdf3f700c17145b14cf3a5aa67dbf246..ff6fcc06d5c66d2a18cfeb50986fd0f560e41384 100644 --- a/fsl/wrappers/wrapperutils.py +++ b/fsl/wrappers/wrapperutils.py @@ -108,10 +108,11 @@ import six import nibabel as nib import numpy as np -import fsl.utils.run as run -import fsl.utils.path as fslpath -import fsl.utils.tempdir as tempdir -import fsl.data.image as fslimage +import fsl.utils.run as run +import fsl.utils.assertions as asrt +import fsl.utils.path as fslpath +import fsl.utils.tempdir as tempdir +import fsl.data.image as fslimage log = logging.getLogger(__name__) @@ -185,7 +186,14 @@ def genxwrapper(func, runner): submit = kwargs.pop('submit', None) cmdonly = kwargs.pop('cmdonly', False) log = kwargs.pop('log', {'tee' : True}) - cmd = func(*args, **kwargs) + + # many wrapper functions use fsl.utils.assertions + # statements to check that input arguments are + # valid. Disable these if the cmdonly argument is + # being used to generate a command without running + # it. + with asrt.disabled(cmdonly): + cmd = func(*args, **kwargs) return runner(cmd, stderr=stderr,