Source code for niftynet.utilities.versioning

# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function
import re
from packaging import version


[docs]def get_niftynet_version_string(): """ Return a user-visible string describing the name and product version This is a safe function that will never throw an exception """ version_string = get_niftynet_version() if not version_string: version_string = "unknown" return "NiftyNet version " + version_string
[docs]def get_niftynet_version(): """ Return a user-visible string describing the product version. This is a safe function that will never throw an exception. :return: a PEP440-compliant version string on success, ``None`` otherwise """ # Default: to be set only if conditions in the branches below are fulfilled version_string = None # Attempt to get the version string from the git repository try: from .versioneer_version import get_versions version_info = get_versions() if version_info['error'] is None: version_string = version_info['version'] elif 'full-revisionid' in version_info: if version_info['full-revisionid']: version_string = '{} ({})'.format( version_info['full-revisionid'], version_info['error'] ) except: pass # version_string is None by default # If we cannot get a git version, attempt to get a package version if not version_string: try: import pkg_resources version_string = pkg_resources.get_distribution("niftynet").version except: pass # version_string is None by default return version_string
[docs]def check_pep_440(): niftynet_version = get_niftynet_version() # Regex for checking PEP 440 conformity # https://www.python.org/dev/peps/pep-0440/#id79 pep440_regex = re.compile( r"^\s*" + version.VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE, ) # Check PEP 440 conformity if niftynet_version is not None and \ pep440_regex.match(niftynet_version) is None: raise ValueError('The version string {} does not conform to' ' PEP 440'.format(niftynet_version))