diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d4920d3747b9171938e5fe2a1a53d246770e28d8..63c0583ae2821ded824e81d95ec13aedc728d8ab 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,20 @@ This document contains the ``fslpy`` release history in reverse chronological order. +1.10.3 (Sunday September 9th 2018) +---------------------------------- + + +Added +^^^^^ + + +* The :func:`.parseVersionString` function accepts (and ignores) `local + version identifer + <https://www.python.org/dev/peps/pep-0440/#local-version-identifiers>`_ + strings. + + 1.10.2 (Friday September 7th 2018) ---------------------------------- diff --git a/fsl/version.py b/fsl/version.py index d859a0c63a8fde3bdc63a4352d3439d76233639a..4d8381b9c69a4fe47c727c14fe3cbb762d500563 100644 --- a/fsl/version.py +++ b/fsl/version.py @@ -31,8 +31,14 @@ is compatible with PEP 440 (https://www.python.org/dev/peps/pep-0440/): which primarily involve bug-fixes and minor changes. -The sole exception to the above convention are development versions, which end -in ``'.dev'``. +The sole exceptions to the above convention are: + + - development versions, where the point release number is followed by a + development release identifier of the form ``'.devN'``, where ``N`` + denotes a specific development release. + + - Builds, where the version number ends in ``'+buildN'``, where ``N`` + denotes a specific build. """ @@ -53,7 +59,9 @@ def parseVersionString(versionString): An error is raised if the ``versionString`` is invalid. """ - components = versionString.split('.') + # Ignore build if present + versionString = versionString.split('+')[0] + components = versionString.split('.') # Truncate after three elements - # a development (unreleased version @@ -80,6 +88,8 @@ def parseVersionString(versionString): def compareVersions(v1, v2, ignorePoint=False): """Compares the given ``fslpy`` version numbers. + Both developemnt versions and build numbers are ignored in the comparison. + :arg v1: Version number to compare :arg v2: Version number to compare :arg ignorePoint: Defaults to ``False``. If ``True``, the point release diff --git a/tests/test_version.py b/tests/test_version.py index f2e47ba7b8856572fafd9452dc233549fa69815e..b52437f1894f159eb1643ce5279278d7de3264bf 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -18,12 +18,17 @@ import fsl.version as fslversion def test_parseVersionString(): tests = [ - ('0.0.0', [0, 0, 0]), - ('0.0.10', [0, 0, 10]), - ('10.0.10', [10, 0, 10]), - ('10.10.10', [10, 10, 10]), - ('10.10.10.dev', [10, 10, 10]), - ('10.10.10.dev0', [10, 10, 10]), + ('0.0.0', [0, 0, 0]), + ('0.0.10', [0, 0, 10]), + ('10.0.10', [10, 0, 10]), + ('10.10.10', [10, 10, 10]), + ('10.10.10.dev', [10, 10, 10]), + ('10.10.10.dev0', [10, 10, 10]), + ('10.10.10.dev0', [10, 10, 10]), + ('10.10.10+build1', [10, 10, 10]), + ('10.10.10+buildB', [10, 10, 10]), + ('10.10.10.dev0+build4', [10, 10, 10]), + # old-style hotfix release numbers ('10.10.10a', [10, 10, 10]), @@ -45,6 +50,7 @@ def test_parseVersionString_bad(): 'a.5.5', '5.5.a', '5.5.a', + '5.5+build0', ] for test in tests: