Hello community, here is the log from the commit of package python-semver for openSUSE:Factory checked in at 2018-07-13 10:21:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-semver (Old) and /work/SRC/openSUSE:Factory/.python-semver.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-semver" Fri Jul 13 10:21:19 2018 rev:5 rq:622232 version:2.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-semver/python-semver.changes 2018-06-29 22:27:20.450440943 +0200 +++ /work/SRC/openSUSE:Factory/.python-semver.new/python-semver.changes 2018-07-13 10:21:21.194455587 +0200 @@ -1,0 +2,16 @@ +Thu Jul 12 03:30:06 UTC 2018 - [email protected] + +- specfile: + * be more specific for python_sitelib in %files section + +- update to version 2.8.1: + * Issue #77 (PR #47). Convert multiple tests into + pytest.mark.parametrize + * Issue #89 (PR #90). Add doctests. + * Issue #40 (PR #88). Add a static parse method to VersionInfo + * Issue #87 #94 (PR #93). Remove named tuple inheritance. Fix bad + rendering in Pandas DataFrame + * Issue #96 (PR #97). Make VersionInfo immutable + * Issue #98 (PR #99). prerelease and build set to None by default + +------------------------------------------------------------------- Old: ---- semver-2.8.0.tar.gz New: ---- semver-2.8.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-semver.spec ++++++ --- /var/tmp/diff_new_pack.Huuju4/_old 2018-07-13 10:21:21.962456506 +0200 +++ /var/tmp/diff_new_pack.Huuju4/_new 2018-07-13 10:21:21.966456511 +0200 @@ -19,18 +19,17 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %bcond_without test Name: python-semver -Version: 2.8.0 +Version: 2.8.1 Release: 0 Summary: Python helper for Semantic Versioning License: BSD-3-Clause Group: Development/Languages/Python -Url: https://github.com/k-bx/python-semver +URL: https://github.com/k-bx/python-semver Source: https://files.pythonhosted.org/packages/source/s/semver/semver-%{version}.tar.gz BuildRequires: %{python_module devel} BuildRequires: %{python_module setuptools} BuildRequires: python-rpm-macros BuildArch: noarch - %python_subpackages %description @@ -48,6 +47,7 @@ %files %{python_files} %doc README.rst -%{python_sitelib}/* +%{python_sitelib}/semver* +%pycache_only %{python_sitelib}/__pycache__/semver* %changelog ++++++ semver-2.8.0.tar.gz -> semver-2.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.0/PKG-INFO new/semver-2.8.1/PKG-INFO --- old/semver-2.8.0/PKG-INFO 2018-05-16 13:08:32.000000000 +0200 +++ new/semver-2.8.1/PKG-INFO 2018-07-09 15:55:19.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: semver -Version: 2.8.0 +Version: 2.8.1 Summary: Python helper for Semantic Versioning (http://semver.org/) Home-page: https://github.com/k-bx/python-semver Author: Kostiantyn Rybnikov @@ -10,116 +10,34 @@ Description: Semver |latest-version| ======================= - |build-status| |python-support| |downloads| |license| + |build-status| |python-support| |downloads| |license| |docs| A Python module for `semantic versioning`_. Simplifies comparing versions. .. |latest-version| image:: https://img.shields.io/pypi/v/semver.svg :alt: Latest version on PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |build-status| image:: https://travis-ci.org/k-bx/python-semver.svg?branch=master :alt: Build status :target: https://travis-ci.org/k-bx/python-semver .. |python-support| image:: https://img.shields.io/pypi/pyversions/semver.svg - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver :alt: Python versions .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg :alt: Monthly downloads from PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |license| image:: https://img.shields.io/pypi/l/semver.svg :alt: Software license :target: https://github.com/k-bx/python-semver/blob/master/LICENSE.txt + .. |docs| image:: https://readthedocs.org/projects/python-semver/badge/?version=latest + :target: http://python-semver.readthedocs.io/en/latest/?badge=latest + :alt: Documentation Status .. _semantic versioning: http://semver.org/ - Usage - ----- - - This module provides just couple of functions, main of which are: - - .. code-block:: python - - >>> import semver - >>> semver.compare("1.0.0", "2.0.0") - -1 - >>> semver.compare("2.0.0", "1.0.0") - 1 - >>> semver.compare("2.0.0", "2.0.0") - 0 - >>> semver.match("2.0.0", ">=1.0.0") - True - >>> semver.match("1.0.0", ">1.0.0") - False - >>> semver.format_version(3, 4, 5, 'pre.2', 'build.4') - '3.4.5-pre.2+build.4' - >>> version_parts = semver.parse("3.4.5-pre.2+build.4") - >>> version_parts == { - ... 'major': 3, 'minor': 4, 'patch': 5, - ... 'prerelease': 'pre.2', 'build': 'build.4'} - True - >>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4") - >>> version_info - VersionInfo(major=3, minor=4, patch=5, prerelease='pre.2', build='build.4') - >>> version_info.major - 3 - >>> version_info > (1, 0) - True - >>> version_info < (3, 5) - True - >>> semver.bump_major("3.4.5") - '4.0.0' - >>> semver.bump_minor("3.4.5") - '3.5.0' - >>> semver.bump_patch("3.4.5") - '3.4.6' - >>> semver.max_ver("1.0.0", "2.0.0") - '2.0.0' - >>> semver.min_ver("1.0.0", "2.0.0") - '1.0.0' - - Installation - ------------ - - For Python 2: - - .. code-block:: bash - - pip install semver - - For Python 3: - - .. code-block:: bash - - pip3 install semver - - How to Contribute - ----------------- - - When you make changes to the code please run the tests before pushing your - code to your fork and opening a `pull request`_: - - .. code-block:: bash - - python setup.py test - - We use `py.test`_ and `tox`_ to run tests against all supported Python - versions. All test dependencies are resolved automatically, apart from - virtualenv, which for the moment you still may have to install manually: - - .. code-block:: bash - - pip install "virtualenv<14.0.0" # <14.0.0 needed for Python 3.2 only - - You can use the ``clean`` command to remove build and test files and folders: - - .. code-block:: bash - - python setup.py clean - - - .. _pull request: https://github.com/k-bx/python-semver/pulls - .. _py.test: http://pytest.org/ - .. _tox: http://tox.testrun.org/ + Documentation + ------------- + |docs| Platform: UNKNOWN Classifier: Environment :: Web Environment diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.0/README.rst new/semver-2.8.1/README.rst --- old/semver-2.8.0/README.rst 2018-05-11 21:48:22.000000000 +0200 +++ new/semver-2.8.1/README.rst 2018-05-26 14:09:49.000000000 +0200 @@ -1,113 +1,31 @@ Semver |latest-version| ======================= -|build-status| |python-support| |downloads| |license| +|build-status| |python-support| |downloads| |license| |docs| A Python module for `semantic versioning`_. Simplifies comparing versions. .. |latest-version| image:: https://img.shields.io/pypi/v/semver.svg :alt: Latest version on PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |build-status| image:: https://travis-ci.org/k-bx/python-semver.svg?branch=master :alt: Build status :target: https://travis-ci.org/k-bx/python-semver .. |python-support| image:: https://img.shields.io/pypi/pyversions/semver.svg - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver :alt: Python versions .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg :alt: Monthly downloads from PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |license| image:: https://img.shields.io/pypi/l/semver.svg :alt: Software license :target: https://github.com/k-bx/python-semver/blob/master/LICENSE.txt +.. |docs| image:: https://readthedocs.org/projects/python-semver/badge/?version=latest + :target: http://python-semver.readthedocs.io/en/latest/?badge=latest + :alt: Documentation Status .. _semantic versioning: http://semver.org/ -Usage ------ - -This module provides just couple of functions, main of which are: - -.. code-block:: python - - >>> import semver - >>> semver.compare("1.0.0", "2.0.0") - -1 - >>> semver.compare("2.0.0", "1.0.0") - 1 - >>> semver.compare("2.0.0", "2.0.0") - 0 - >>> semver.match("2.0.0", ">=1.0.0") - True - >>> semver.match("1.0.0", ">1.0.0") - False - >>> semver.format_version(3, 4, 5, 'pre.2', 'build.4') - '3.4.5-pre.2+build.4' - >>> version_parts = semver.parse("3.4.5-pre.2+build.4") - >>> version_parts == { - ... 'major': 3, 'minor': 4, 'patch': 5, - ... 'prerelease': 'pre.2', 'build': 'build.4'} - True - >>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4") - >>> version_info - VersionInfo(major=3, minor=4, patch=5, prerelease='pre.2', build='build.4') - >>> version_info.major - 3 - >>> version_info > (1, 0) - True - >>> version_info < (3, 5) - True - >>> semver.bump_major("3.4.5") - '4.0.0' - >>> semver.bump_minor("3.4.5") - '3.5.0' - >>> semver.bump_patch("3.4.5") - '3.4.6' - >>> semver.max_ver("1.0.0", "2.0.0") - '2.0.0' - >>> semver.min_ver("1.0.0", "2.0.0") - '1.0.0' - -Installation ------------- - -For Python 2: - -.. code-block:: bash - - pip install semver - -For Python 3: - -.. code-block:: bash - - pip3 install semver - -How to Contribute ------------------ - -When you make changes to the code please run the tests before pushing your -code to your fork and opening a `pull request`_: - -.. code-block:: bash - - python setup.py test - -We use `py.test`_ and `tox`_ to run tests against all supported Python -versions. All test dependencies are resolved automatically, apart from -virtualenv, which for the moment you still may have to install manually: - -.. code-block:: bash - - pip install "virtualenv<14.0.0" # <14.0.0 needed for Python 3.2 only - -You can use the ``clean`` command to remove build and test files and folders: - -.. code-block:: bash - - python setup.py clean - - -.. _pull request: https://github.com/k-bx/python-semver/pulls -.. _py.test: http://pytest.org/ -.. _tox: http://tox.testrun.org/ +Documentation +------------- +|docs| diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.0/semver.egg-info/PKG-INFO new/semver-2.8.1/semver.egg-info/PKG-INFO --- old/semver-2.8.0/semver.egg-info/PKG-INFO 2018-05-16 13:08:31.000000000 +0200 +++ new/semver-2.8.1/semver.egg-info/PKG-INFO 2018-07-09 15:55:18.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: semver -Version: 2.8.0 +Version: 2.8.1 Summary: Python helper for Semantic Versioning (http://semver.org/) Home-page: https://github.com/k-bx/python-semver Author: Kostiantyn Rybnikov @@ -10,116 +10,34 @@ Description: Semver |latest-version| ======================= - |build-status| |python-support| |downloads| |license| + |build-status| |python-support| |downloads| |license| |docs| A Python module for `semantic versioning`_. Simplifies comparing versions. .. |latest-version| image:: https://img.shields.io/pypi/v/semver.svg :alt: Latest version on PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |build-status| image:: https://travis-ci.org/k-bx/python-semver.svg?branch=master :alt: Build status :target: https://travis-ci.org/k-bx/python-semver .. |python-support| image:: https://img.shields.io/pypi/pyversions/semver.svg - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver :alt: Python versions .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg :alt: Monthly downloads from PyPI - :target: https://pypi.python.org/pypi/semver + :target: https://pypi.org/project/semver .. |license| image:: https://img.shields.io/pypi/l/semver.svg :alt: Software license :target: https://github.com/k-bx/python-semver/blob/master/LICENSE.txt + .. |docs| image:: https://readthedocs.org/projects/python-semver/badge/?version=latest + :target: http://python-semver.readthedocs.io/en/latest/?badge=latest + :alt: Documentation Status .. _semantic versioning: http://semver.org/ - Usage - ----- - - This module provides just couple of functions, main of which are: - - .. code-block:: python - - >>> import semver - >>> semver.compare("1.0.0", "2.0.0") - -1 - >>> semver.compare("2.0.0", "1.0.0") - 1 - >>> semver.compare("2.0.0", "2.0.0") - 0 - >>> semver.match("2.0.0", ">=1.0.0") - True - >>> semver.match("1.0.0", ">1.0.0") - False - >>> semver.format_version(3, 4, 5, 'pre.2', 'build.4') - '3.4.5-pre.2+build.4' - >>> version_parts = semver.parse("3.4.5-pre.2+build.4") - >>> version_parts == { - ... 'major': 3, 'minor': 4, 'patch': 5, - ... 'prerelease': 'pre.2', 'build': 'build.4'} - True - >>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4") - >>> version_info - VersionInfo(major=3, minor=4, patch=5, prerelease='pre.2', build='build.4') - >>> version_info.major - 3 - >>> version_info > (1, 0) - True - >>> version_info < (3, 5) - True - >>> semver.bump_major("3.4.5") - '4.0.0' - >>> semver.bump_minor("3.4.5") - '3.5.0' - >>> semver.bump_patch("3.4.5") - '3.4.6' - >>> semver.max_ver("1.0.0", "2.0.0") - '2.0.0' - >>> semver.min_ver("1.0.0", "2.0.0") - '1.0.0' - - Installation - ------------ - - For Python 2: - - .. code-block:: bash - - pip install semver - - For Python 3: - - .. code-block:: bash - - pip3 install semver - - How to Contribute - ----------------- - - When you make changes to the code please run the tests before pushing your - code to your fork and opening a `pull request`_: - - .. code-block:: bash - - python setup.py test - - We use `py.test`_ and `tox`_ to run tests against all supported Python - versions. All test dependencies are resolved automatically, apart from - virtualenv, which for the moment you still may have to install manually: - - .. code-block:: bash - - pip install "virtualenv<14.0.0" # <14.0.0 needed for Python 3.2 only - - You can use the ``clean`` command to remove build and test files and folders: - - .. code-block:: bash - - python setup.py clean - - - .. _pull request: https://github.com/k-bx/python-semver/pulls - .. _py.test: http://pytest.org/ - .. _tox: http://tox.testrun.org/ + Documentation + ------------- + |docs| Platform: UNKNOWN Classifier: Environment :: Web Environment diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.0/semver.py new/semver-2.8.1/semver.py --- old/semver-2.8.0/semver.py 2018-05-16 13:07:44.000000000 +0200 +++ new/semver-2.8.1/semver.py 2018-05-31 19:58:40.000000000 +0200 @@ -6,7 +6,7 @@ import re -__version__ = '2.8.0' +__version__ = '2.8.1' __author__ = 'Kostiantyn Rybnikov' __author_email__ = '[email protected]' __maintainer__ = 'Sebastien Celles' @@ -46,6 +46,19 @@ and 'prerelease'. The prerelease or build keys can be None if not provided :rtype: dict + + >>> import semver + >>> ver = semver.parse('3.4.5-pre.2+build.4') + >>> ver['major'] + 3 + >>> ver['minor'] + 4 + >>> ver['patch'] + 5 + >>> ver['prerelease'] + 'pre.2' + >>> ver['build'] + 'build.4' """ match = _REGEX.match(version) if match is None: @@ -60,8 +73,7 @@ return version_parts -class VersionInfo(collections.namedtuple( - 'VersionInfo', 'major minor patch prerelease build')): +class VersionInfo(object): """ :param int major: version when you make incompatible API changes. :param int minor: version when you add functionality in @@ -69,14 +81,48 @@ :param int patch: version when you make backwards-compatible bug fixes. :param str prerelease: an optional prerelease string :param str build: an optional build string - - >>> import semver - >>> ver = semver.parse('3.4.5-pre.2+build.4') - >>> ver - {'build': 'build.4', 'major': 3, 'minor': 4, 'patch': 5, - 'prerelease': 'pre.2'} """ - __slots__ = () + __slots__ = ('_major', '_minor', '_patch', '_prerelease', '_build') + + def __init__(self, major, minor, patch, prerelease=None, build=None): + self._major = major + self._minor = minor + self._patch = patch + self._prerelease = prerelease + self._build = build + + @property + def major(self): + return self._major + + @property + def minor(self): + return self._minor + + @property + def patch(self): + return self._patch + + @property + def prerelease(self): + return self._prerelease + + @property + def build(self): + return self._build + + def _astuple(self): + return (self.major, self.minor, self.patch, + self.prerelease, self.build) + + def _asdict(self): + return collections.OrderedDict(( + ("major", self.major), + ("minor", self.minor), + ("patch", self.patch), + ("prerelease", self.prerelease), + ("build", self.build) + )) def __eq__(self, other): if not isinstance(other, (VersionInfo, dict)): @@ -108,11 +154,31 @@ return NotImplemented return _compare_by_keys(self._asdict(), _to_dict(other)) >= 0 + def __repr__(self): + s = ", ".join("%s=%r" % (key, val) + for key, val in self._asdict().items()) + return "VersionInfo(%s)" % s + def __str__(self): - return format_version(*self) + return format_version(*(self._astuple())) def __hash__(self): - return hash(tuple(self)) + return hash(self._astuple()) + + @staticmethod + def parse(version): + """Parse version string to a VersionInfo instance. + + >>> from semver import VersionInfo + >>> VersionInfo.parse('3.4.5-pre.2+build.4') + VersionInfo(major=3, minor=4, patch=5, \ +prerelease='pre.2', build='build.4') + + :param version: version string + :return: a :class:`VersionInfo` instance + :rtype: :class:`VersionInfo` + """ + return parse_version_info(version) def _to_dict(obj): @@ -127,6 +193,19 @@ :param version: version string :return: a :class:`VersionInfo` instance :rtype: :class:`VersionInfo` + + >>> import semver + >>> version_info = semver.parse_version_info("3.4.5-pre.2+build.4") + >>> version_info.major + 3 + >>> version_info.minor + 4 + >>> version_info.patch + 5 + >>> version_info.prerelease + 'pre.2' + >>> version_info.build + 'build.4' """ parts = parse(version) version_info = VersionInfo( @@ -190,6 +269,14 @@ :return: The return value is negative if ver1 < ver2, zero if ver1 == ver2 and strictly positive if ver1 > ver2 :rtype: int + + >>> import semver + >>> semver.compare("1.0.0", "2.0.0") + -1 + >>> semver.compare("2.0.0", "1.0.0") + 1 + >>> semver.compare("2.0.0", "2.0.0") + 0 """ v1, v2 = parse(ver1), parse(ver2) @@ -210,6 +297,12 @@ != not equal :return: True if the expression matches the version, otherwise False :rtype: bool + + >>> import semver + >>> semver.match("2.0.0", ">=1.0.0") + True + >>> semver.match("1.0.0", ">1.0.0") + False """ prefix = match_expr[:2] if prefix in ('>=', '<=', '==', '!='): @@ -245,6 +338,10 @@ :param ver2: version string 2 :return: the greater version of the two :rtype: :class:`VersionInfo` + + >>> import semver + >>> semver.max_ver("1.0.0", "2.0.0") + '2.0.0' """ cmp_res = compare(ver1, ver2) if cmp_res == 0 or cmp_res == 1: @@ -260,6 +357,10 @@ :param ver2: version string 2 :return: the smaller version of the two :rtype: :class:`VersionInfo` + + >>> import semver + >>> semver.min_ver("1.0.0", "2.0.0") + '1.0.0' """ cmp_res = compare(ver1, ver2) if cmp_res == 0 or cmp_res == -1: @@ -278,6 +379,10 @@ :param str build: the optional build part of a version :return: the formatted string :rtype: str + + >>> import semver + >>> semver.format_version(3, 4, 5, 'pre.2', 'build.4') + '3.4.5-pre.2+build.4' """ version = "%d.%d.%d" % (major, minor, patch) if prerelease is not None: @@ -308,6 +413,10 @@ :param: version string :return: the raised version string :rtype: str + + >>> import semver + >>> semver.bump_major("3.4.5") + '4.0.0' """ verinfo = parse(version) return format_version(verinfo['major'] + 1, 0, 0) @@ -319,6 +428,10 @@ :param: version string :return: the raised version string :rtype: str + + >>> import semver + >>> semver.bump_minor("3.4.5") + '3.5.0' """ verinfo = parse(version) return format_version(verinfo['major'], verinfo['minor'] + 1, 0) @@ -330,6 +443,10 @@ :param: version string :return: the raised version string :rtype: str + + >>> import semver + >>> semver.bump_patch("3.4.5") + '3.4.6' """ verinfo = parse(version) return format_version(verinfo['major'], verinfo['minor'], @@ -343,6 +460,9 @@ :param token: defaults to 'rc' :return: the raised version string :rtype: str + + >>> bump_prerelease('3.4.5', 'dev') + '3.4.5-dev.1' """ verinfo = parse(version) verinfo['prerelease'] = _increment_string( @@ -359,6 +479,9 @@ :param token: defaults to 'build' :return: the raised version string :rtype: str + + >>> bump_build('3.4.5-rc.1+build.9') + '3.4.5-rc.1+build.10' """ verinfo = parse(version) verinfo['build'] = _increment_string( @@ -374,6 +497,14 @@ :param version: version string :return: the finalized version string :rtype: str + + >>> finalize_version('1.2.3-rc.5') + '1.2.3' """ verinfo = parse(version) return format_version(verinfo['major'], verinfo['minor'], verinfo['patch']) + + +if __name__ == "__main__": + import doctest + doctest.testmod()
