From b08014a65eabfa8dfe372bdf0aa8195309f6e736 Mon Sep 17 00:00:00 2001 From: Martin Ek Date: Mon, 7 Mar 2016 13:15:14 +0100 Subject: Add a doc section about compatible release clauses --- docs/reference.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/reference.rst b/docs/reference.rst index a645c1f..358b2c0 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -277,6 +277,11 @@ This means that:: .. note:: python-semanticversion also accepts ``"*"`` as a version spec, that matches all (valid) version strings. +.. note:: python-semanticversion supports PyPI-style `compatible release clauses`_: + + * ``~=2.2`` means "Any release between 2.2.0 and 3.0.0" + * ``~=1.4.5`` means "Any release between 1.4.5 and 1.5.0" + .. note:: python-semanticversion includes support for NPM-style specs: * ``~1.2.3`` means "Any release between 1.2.3 and 1.3.0" @@ -568,3 +573,4 @@ rules apply: .. _SemVer: http://semver.org/ +.. _`compatible release clauses`: https://www.python.org/dev/peps/pep-0440/#compatible-release -- cgit v1.2.1 From 2d3f694f852ac1619d673b67b115cb9bbb352c5e Mon Sep 17 00:00:00 2001 From: Martin Ek Date: Mon, 7 Mar 2016 13:22:13 +0100 Subject: Fix a bug with compatible release clauses and patch versions Previously, if the patch version was 0 (i.e. as in ~=2.2.0), this would cause the range to be interpreted as ~=2.2. --- semantic_version/base.py | 2 +- tests/test_base.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/semantic_version/base.py b/semantic_version/base.py index 83a9c25..0f4e11b 100644 --- a/semantic_version/base.py +++ b/semantic_version/base.py @@ -470,7 +470,7 @@ class SpecItem(object): elif self.kind == self.KIND_TILDE: return self.spec <= version < self.spec.next_minor() elif self.kind == self.KIND_COMPATIBLE: - if self.spec.patch: + if self.spec.patch is not None: upper = self.spec.next_minor() else: upper = self.spec.next_major() diff --git a/tests/test_base.py b/tests/test_base.py index 0675b24..a1255c3 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -518,6 +518,10 @@ class SpecItemTestCase(unittest.TestCase): ['1.4.5', '1.4.10-alpha', '1.4.10'], ['1.3.6', '1.4.4', '1.5.0'], ), + '~=1.4.0': ( + ['1.4.0', '1.4.10-alpha', '1.4.10'], + ['1.3.6', '1.3.9', '1.5.0'], + ), '~=1.4': ( ['1.4.0', '1.6.10-alpha', '1.6.10'], ['1.3.0', '2.0.0'], -- cgit v1.2.1