From bfc12dea7ed13c4b7994c290c649b27dab8968ac Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Wed, 17 May 2017 17:00:33 -0400 Subject: [PATCH 1/3] ENH: Permit external packages to deprecate interfaces --- nipype/interfaces/base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nipype/interfaces/base.py b/nipype/interfaces/base.py index f2f876b784..addee7a646 100644 --- a/nipype/interfaces/base.py +++ b/nipype/interfaces/base.py @@ -352,6 +352,7 @@ class BaseTraitedSpec(traits.HasTraits): XXX Reconsider this in the long run, but it seems like the best solution to move forward on the refactoring. """ + package_version = nipype_version def __init__(self, **kwargs): """ Initialize handlers and inputs""" @@ -444,7 +445,7 @@ def _deprecated_warn(self, obj, name, old, new): else: msg3 = '' msg = ' '.join((msg1, msg2, msg3)) - if LooseVersion(str(trait_spec.deprecated)) < nipype_version: + if LooseVersion(str(trait_spec.deprecated)) < self.package_version: raise TraitError(msg) else: if trait_spec.new_name: From 75b6ae3d79818088c0f0a082031db9fd4a373a4d Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Thu, 18 May 2017 09:19:01 -0400 Subject: [PATCH 2/3] ENH: Use PEP440-compliant versioning, including for gitversion --- nipype/info.py | 5 +++-- nipype/interfaces/base.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/nipype/info.py b/nipype/info.py index 8d6421b446..bbf2e8b157 100644 --- a/nipype/info.py +++ b/nipype/info.py @@ -45,7 +45,7 @@ def get_nipype_gitversion(): if __version__.endswith('-dev'): gitversion = get_nipype_gitversion() if gitversion: - __version__ = __version__.replace('-dev', '-' + gitversion + '.dev') + __version__ = '{}+{}'.format(__version__, gitversion) CLASSIFIERS = ['Development Status :: 5 - Production/Stable', 'Environment :: Console', @@ -141,7 +141,8 @@ def get_nipype_gitversion(): 'funcsigs', 'pytest>=%s' % PYTEST_MIN_VERSION, 'mock', - 'pydotplus' + 'pydotplus', + 'packaging', ] if sys.version_info <= (3, 4): diff --git a/nipype/interfaces/base.py b/nipype/interfaces/base.py index addee7a646..8d7c53cde1 100644 --- a/nipype/interfaces/base.py +++ b/nipype/interfaces/base.py @@ -31,6 +31,7 @@ from warnings import warn import simplejson as json from dateutil.parser import parse as parseutc +from packaging.version import Version from .. import config, logging, LooseVersion, __version__ from ..utils.provenance import write_provenance @@ -43,7 +44,7 @@ from ..external.due import due runtime_profile = str2bool(config.get('execution', 'profile_runtime')) -nipype_version = LooseVersion(__version__) +nipype_version = Version(__version__) iflogger = logging.getLogger('interface') FLOAT_FORMAT = '{:.10f}'.format @@ -445,7 +446,7 @@ def _deprecated_warn(self, obj, name, old, new): else: msg3 = '' msg = ' '.join((msg1, msg2, msg3)) - if LooseVersion(str(trait_spec.deprecated)) < self.package_version: + if Version(str(trait_spec.deprecated)) < self.package_version: raise TraitError(msg) else: if trait_spec.new_name: From f0d7070910c4add11c8a98e2b1ab9f042343efad Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Thu, 18 May 2017 14:21:50 -0400 Subject: [PATCH 3/3] Update requirements files --- requirements.txt | 1 + rtd_requirements.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index 65b9beb7ab..ce2adf9d09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,3 +13,4 @@ configparser pytest>=3.0 mock pydotplus +packaging diff --git a/rtd_requirements.txt b/rtd_requirements.txt index 71e2e3d4bc..1ee6c766ac 100644 --- a/rtd_requirements.txt +++ b/rtd_requirements.txt @@ -14,3 +14,4 @@ mock pydotplus psutil matplotlib +packaging