Hello community, here is the log from the commit of package python-semver for openSUSE:Factory checked in at 2019-06-06 18:19:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-semver (Old) and /work/SRC/openSUSE:Factory/.python-semver.new.4811 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-semver" Thu Jun 6 18:19:26 2019 rev:7 rq:708128 version:2.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-semver/python-semver.changes 2018-12-24 11:43:48.729323387 +0100 +++ /work/SRC/openSUSE:Factory/.python-semver.new.4811/python-semver.changes 2019-06-06 18:19:29.064648041 +0200 @@ -1,0 +2,5 @@ +Thu Jun 6 12:15:36 UTC 2019 - [email protected] + +- run the testsuite + +------------------------------------------------------------------- Old: ---- semver-2.8.1.tar.gz New: ---- 2.8.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-semver.spec ++++++ --- /var/tmp/diff_new_pack.k84MSB/_old 2019-06-06 18:19:29.572647892 +0200 +++ /var/tmp/diff_new_pack.k84MSB/_new 2019-06-06 18:19:29.572647892 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-semver # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,7 +25,9 @@ License: BSD-3-Clause Group: Development/Languages/Python URL: https://github.com/k-bx/python-semver -Source: https://files.pythonhosted.org/packages/source/s/semver/semver-%{version}.tar.gz +# https://github.com/k-bx/python-semver/issues/136 +Source: https://github.com/k-bx/python-semver/archive/%{version}.tar.gz +BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: python-rpm-macros BuildArch: noarch @@ -36,7 +38,7 @@ See also http://semver.org/ %prep -%setup -q -n semver-%{version} +%setup -q -n python-semver-%{version} %build %python_build @@ -44,6 +46,9 @@ %install %python_install +%check +%pytest + %files %{python_files} %doc README.rst %{python_sitelib}/semver* ++++++ semver-2.8.1.tar.gz -> 2.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/.gitignore new/python-semver-2.8.1/.gitignore --- old/semver-2.8.1/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/.gitignore 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,14 @@ +/.cache +/.coverage +/.emacs-project +/.idea +/.tox +/.venv* + +/*.egg-info +/.eggs +/build +/dist +/MANIFEST + +*.py[co] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/.travis.yml new/python-semver-2.8.1/.travis.yml --- old/semver-2.8.1/.travis.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/.travis.yml 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,25 @@ +language: python +install: pip install "virtualenv<14.0.0" +script: python setup.py test +matrix: + include: + - python: "2.7" + env: TOXENV=py27 + + - python: "3.3" + env: TOXENV=py33 + + - python: "3.4" + env: TOXENV=py34 + + - python: "3.4" + env: TOXENV=flake8 + + - python: "3.5" + env: TOXENV=py35 + + - python: "3.6" + env: TOXENV=py36 + + - python: "pypy" + env: TOXENV=pypy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/CHANGELOG new/python-semver-2.8.1/CHANGELOG --- old/semver-2.8.1/CHANGELOG 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/CHANGELOG 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,330 @@ +########## +Change Log +########## + +Python SemVer library +##################### + +All notable changes to this code base will be documented in this file, +in every released version. + +Version 2.8.1 +============= +:Released: 2018-07-09 +:Maintainer: Sébastien Celles <[email protected]> + +* 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 + +Version 2.8.0 +============= +:Released: 2018-05-16 +:Maintainer: Sébastien Celles <[email protected]> + +* Issue #76 (PR #80). Remove Python 2.6 compatibility +* Issue #79 (PR #81 #84). Define and improve a release procedure file +* Issue #72 #73 (PR #75). Implements __str__ and __hash__ +* Issue #82 (PR #83). Rename test.py to test_semver.py so py.test can autodiscover test file + +Version 2.7.9 +============= + +:Released: 2017-09-23 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +* Issue #65 (PR #66). Add finalize_version function + +Version 2.7.8 +============= + +:Released: 2017-08-25 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +* PR #62. Support custom default names for pre and build + +Version 2.7.7 +============= + +:Released: 2017-05-25 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +* Issue #54 (PR #55) Add comparision between VersionInfo objects +* PR #56. Add support for Python 3.6 + +Version 2.7.2 +============= + +:Released: 2016-11-08 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Fix issue #37 (Remove trailing zeros from prelease doesn't allow to + parse 0 pre-release version) +* Add ‘parse_version_info’ to parse a version string to a version info + tuple. + +Bug Fixes +--------- + +* Refine parsing to conform more strictly to SemVer 2.0.0. + + SemVer 2.0.0 specification §9 forbids leading zero on identifiers in + the prerelease version. + + +Version 2.6.0 +============= + +:Released: 2016-06-08 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Removals +-------- + +* Remove comparison of build component. + + SemVer 2.0.0 specification recommends that build component is + ignored in comparisons. + + +Version 2.5.0 +============= + +:Released: 2016-05-25 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Support matching 'not equal' with “!=”. + +Changes +------- + +* Make separate builds for tests on Travis CI. + + +Version 2.4.2 +============= + +:Released: 2016-05-16 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Changes +------- + +* Migrate README document to reStructuredText format. + +* Use Setuptools for distribution management. + +* Migrate test cases to Py.test. + +* Add configuration for Tox test runner. + + +Version 2.4.1 +============= + +:Released: 2016-03-04 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* [GitHub issue #23] Compare build component of a version. + + +Version 2.4.0 +============= + +:Released: 2016-02-12 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Bug Fixes +--------- + +* [GitHub issue #21] Compare alphanumeric components correctly. + + +Version 2.3.1 +============= + +:Released: 2016-01-30 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Declare granted license name in distribution metadata. + + +Version 2.3.0 +============= + +:Released: 2016-01-29 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Add functions to increment prerelease and build components in a + version. + + +Version 2.2.1 +============= + +:Released: 2015-08-04 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Bug Fixes +--------- + +* Correct comparison when any component includes zero. + + +Version 2.2.0 +============= + +:Released: 2015-06-21 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Add functions to determined minimum and maximum version. + +* Add code examples for recently-added functions. + + +Version 2.1.2 +============= + +:Released: 2015-05-23 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Bug Fixes +--------- + +* Restore current README document to distribution manifest. + + +Version 2.1.1 +============= + +:Released: 2015-05-23 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Bug Fixes +--------- + +* Remove absent document from distribution manifest. + + +Version 2.1.0 +============= + +:Released: 2015-05-22 +:Maintainer: Kostiantyn Rybnikov <[email protected]> + +Additions +--------- + +* Document installation instructions. + +* Document project home page. + +* Add function to format a version string from components. + +* Add functions to increment specific components in a version. + +Changes +------- + +* Migrate README document to Markdown format. + +Bug Fixes +--------- + +* Correct code examples in README document. + + +Version 2.0.2 +============= + +:Released: 2015-04-14 +:Maintainer: Konstantine Rybnikov <[email protected]> + +Additions +--------- + +* Add configuration for Travis continuous integration. + +* Explicitly declare supported Python versions. + + +Version 2.0.1 +============= + +:Released: 2014-09-24 +:Maintainer: Konstantine Rybnikov <[email protected]> + +Bug Fixes +--------- + +* [GitHub issue #9] Correct comparison of equal version strings. + + +Version 2.0.0 +============= + +:Released: 2014-05-24 +:Maintainer: Konstantine Rybnikov <[email protected]> + +Additions +--------- + +* Grant license in this code base under BSD 3-clause license terms. + +Changes +------- + +* Update parser to SemVer standard 2.0.0. + +* Ignore build component for comparison. + + +Version 0.0.2 +============= + +:Released: 2012-05-10 +:Maintainer: Konstantine Rybnikov <[email protected]> + +Changes +------- + +* Use standard library Distutils for distribution management. + + +Version 0.0.1 +============= + +:Released: 2012-04-28 +:Maintainer: Konstantine Rybnikov <[email protected]> + +* Initial release. + + +.. + Local variables: + coding: utf-8 + mode: text + mode: rst + End: + vim: fileencoding=utf-8 filetype=rst : diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/CONTRIBUTORS new/python-semver-2.8.1/CONTRIBUTORS --- old/semver-2.8.1/CONTRIBUTORS 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/CONTRIBUTORS 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,46 @@ +############ +Contributors +############ + +Python SemVer library +##################### + +This document records the primary maintainers and significant +contributors to this code base. + +Thank you to everyone whose work has made this possible. + + +Primary maintainers +=================== + +* Kostiantyn Rybnikov <[email protected]> +* Sébastien Celles <[email protected]> + + +Significant contributors +======================== + +* Alexander Puzynia <[email protected]> +* Alexander Shorin <[email protected]> +* Anton Talevnin <[email protected]> +* Ben Finney <[email protected]> +* Carles Barrobés <[email protected]> +* Craig Blaszczyk <[email protected]> +* Jan Pieter Waagmeester <[email protected]> +* Jelo Agnasin <[email protected]> +* Karol Werner <[email protected]> +* Peter Bittner <[email protected]> +* robi-wan <[email protected]> +* T. Jameson Little <[email protected]> +* Tuure Laurinolli <[email protected]> +* Tyler Cross <[email protected]> +* Zack Lalanne <[email protected]> + +.. + Local variables: + coding: utf-8 + mode: text + mode: rst + End: + vim: fileencoding=utf-8 filetype=rst : diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/LICENSE.txt new/python-semver-2.8.1/LICENSE.txt --- old/semver-2.8.1/LICENSE.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/LICENSE.txt 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,27 @@ +Copyright (c) 2013, Konstantine Rybnikov +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + Neither the name of the {organization} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/Makefile new/python-semver-2.8.1/Makefile --- old/semver-2.8.1/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/Makefile 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,5 @@ +sdist: + python setup.py sdist bdist_wheel --universal + +.PHONY sdist + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/PKG-INFO new/python-semver-2.8.1/PKG-INFO --- old/semver-2.8.1/PKG-INFO 2018-07-09 15:55:19.000000000 +0200 +++ new/python-semver-2.8.1/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,56 +0,0 @@ -Metadata-Version: 1.1 -Name: semver -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 -Author-email: [email protected] -License: BSD -Download-URL: https://github.com/k-bx/python-semver/downloads -Description: Semver |latest-version| - ======================= - - |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.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.org/project/semver - :alt: Python versions - .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg - :alt: Monthly downloads from PyPI - :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/ - - Documentation - ------------- - |docs| - -Platform: UNKNOWN -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development :: Libraries :: Python Modules diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/Makefile new/python-semver-2.8.1/docs/Makefile --- old/semver-2.8.1/docs/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/Makefile 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = python -msphinx +SPHINXPROJ = semver +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/api.rst new/python-semver-2.8.1/docs/api.rst --- old/semver-2.8.1/docs/api.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/api.rst 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,6 @@ +API +=== + +.. automodule:: semver + :members: + :undoc-members: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/conf.py new/python-semver-2.8.1/docs/conf.py --- old/semver-2.8.1/docs/conf.py 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/conf.py 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,177 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# python-semver documentation build configuration file +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('..')) + + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = 'python-semver' +copyright = '2018, Kostiantyn Rybnikov and all' +author = 'Kostiantyn Rybnikov and all' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '' +# The full version, including alpha/beta/rc tags. +release = '' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +# html_theme = 'alabaster' +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# This is required for the alabaster theme +# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars +html_sidebars = { + '**': [ + 'about.html', + 'navigation.html', + 'relations.html', # needs 'show_related': True theme option to display + 'searchbox.html', + 'donate.html', + ] +} + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'semverdoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'semver.tex', 'python-semver Documentation', + 'Kostiantyn Rybnikov and all', 'manual'), +] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'semver', 'python-semver Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'semver', 'python-semver Documentation', + author, 'semver', 'One line description of project.', + 'Miscellaneous'), +] + + +interpshinx_mapping = { + "matplotlib": ('http://matplotlib.org', None), +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/development.rst new/python-semver-2.8.1/docs/development.rst --- old/semver-2.8.1/docs/development.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/development.rst 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,28 @@ +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/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/index.rst new/python-semver-2.8.1/docs/index.rst --- old/semver-2.8.1/docs/index.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/index.rst 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,49 @@ +Semver |latest-version| +======================= + +|build-status| |python-support| |downloads| |license| + +.. python-semver documentation master file, created by + sphinx-quickstart on Tue May 1 16:51:19 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to python-semver's documentation! +========================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + Install <install.rst> + Usage <usage.rst> + Development <development.rst> + API <api.rst> + +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 +.. |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 + :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 +.. |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 +.. _semantic versioning: http://semver.org/ + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/install.rst new/python-semver-2.8.1/docs/install.rst --- old/semver-2.8.1/docs/install.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/install.rst 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,14 @@ +Installation +------------ + +For Python 2: + +.. code-block:: bash + + pip install semver + +For Python 3: + +.. code-block:: bash + + pip3 install semver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/make.bat new/python-semver-2.8.1/docs/make.bat --- old/semver-2.8.1/docs/make.bat 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/make.bat 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=python -msphinx +) +set SOURCEDIR=. +set BUILDDIR=_build +set SPHINXPROJ=semver + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The Sphinx module was not found. Make sure you have Sphinx installed, + echo.then set the SPHINXBUILD environment variable to point to the full + echo.path of the 'sphinx-build' executable. Alternatively you may add the + echo.Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/docs/usage.rst new/python-semver-2.8.1/docs/usage.rst --- old/semver-2.8.1/docs/usage.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/docs/usage.rst 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,47 @@ +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") + >>> # or using static method parse + >>> from semver import VersionInfo + >>> version_info = VersionInfo.parse("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' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/release-procedure.md new/python-semver-2.8.1/release-procedure.md --- old/semver-2.8.1/release-procedure.md 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/release-procedure.md 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,32 @@ +* Verify that latest build was passing https://travis-ci.org/k-bx/python-semver + +* Verify that `__version__` in [semver.py](https://github.com/k-bx/python-semver/blob/master/semver.py) have been updated and follow https://semver.org/ + +* Verify that [CHANGELOG](https://github.com/k-bx/python-semver/blob/master/CHANGELOG) have been updated + +* If one or several supported Python versions have been removed or added, verify that the 3 following files have been updated: + * [setup.py](https://github.com/k-bx/python-semver/blob/master/setup.py) + * [tox.ini](https://github.com/k-bx/python-semver/blob/master/tox.ini) + * [.travis.yml](https://github.com/k-bx/python-semver/blob/master/.travis.yml) + +* Verify that doc reflecting new changes have been updated + +* Add eventually new contributor(s) to [CONTRIBUTORS](https://github.com/k-bx/python-semver/blob/master/CONTRIBUTORS) + +* Tag commit and push to github using command line interface +```bash +git tag -a x.x.x -m 'Version x.x.x' +git push python-semver master --tags +``` +or using GitHub web interface available at https://github.com/k-bx/python-semver/releases + +* Upload to PyPI + +```bash +git clean -xfd +python setup.py register sdist bdist_wheel --universal +twine upload dist/* +``` + +* Go to https://pypi.org/project/semver/ to verify that new version is online and page is rendered correctly + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/semver.egg-info/PKG-INFO new/python-semver-2.8.1/semver.egg-info/PKG-INFO --- old/semver-2.8.1/semver.egg-info/PKG-INFO 2018-07-09 15:55:18.000000000 +0200 +++ new/python-semver-2.8.1/semver.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,56 +0,0 @@ -Metadata-Version: 1.1 -Name: semver -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 -Author-email: [email protected] -License: BSD -Download-URL: https://github.com/k-bx/python-semver/downloads -Description: Semver |latest-version| - ======================= - - |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.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.org/project/semver - :alt: Python versions - .. |downloads| image:: https://img.shields.io/pypi/dm/semver.svg - :alt: Monthly downloads from PyPI - :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/ - - Documentation - ------------- - |docs| - -Platform: UNKNOWN -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development :: Libraries :: Python Modules diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/semver.egg-info/SOURCES.txt new/python-semver-2.8.1/semver.egg-info/SOURCES.txt --- old/semver-2.8.1/semver.egg-info/SOURCES.txt 2018-07-09 15:55:18.000000000 +0200 +++ new/python-semver-2.8.1/semver.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,8 +0,0 @@ -MANIFEST.in -README.rst -semver.py -setup.py -semver.egg-info/PKG-INFO -semver.egg-info/SOURCES.txt -semver.egg-info/dependency_links.txt -semver.egg-info/top_level.txt \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/semver.egg-info/dependency_links.txt new/python-semver-2.8.1/semver.egg-info/dependency_links.txt --- old/semver-2.8.1/semver.egg-info/dependency_links.txt 2018-07-09 15:55:18.000000000 +0200 +++ new/python-semver-2.8.1/semver.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/semver.egg-info/top_level.txt new/python-semver-2.8.1/semver.egg-info/top_level.txt --- old/semver-2.8.1/semver.egg-info/top_level.txt 2018-07-09 15:55:18.000000000 +0200 +++ new/python-semver-2.8.1/semver.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -semver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/setup.cfg new/python-semver-2.8.1/setup.cfg --- old/semver-2.8.1/setup.cfg 2018-07-09 15:55:19.000000000 +0200 +++ new/python-semver-2.8.1/setup.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -[egg_info] -tag_build = -tag_date = 0 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/test_semver.py new/python-semver-2.8.1/test_semver.py --- old/semver-2.8.1/test_semver.py 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/test_semver.py 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,462 @@ +import pytest # noqa + +from semver import compare +from semver import match +from semver import parse +from semver import format_version +from semver import bump_major +from semver import bump_minor +from semver import bump_patch +from semver import bump_prerelease +from semver import bump_build +from semver import finalize_version +from semver import min_ver +from semver import max_ver +from semver import VersionInfo +from semver import parse_version_info + + +SEMVERFUNCS = [ + compare, match, parse, format_version, + bump_major, bump_minor, bump_patch, bump_prerelease, bump_build, + max_ver, min_ver, finalize_version +] + + [email protected]("func", SEMVERFUNCS, + ids=[func.__name__ for func in SEMVERFUNCS]) +def test_fordocstrings(func): + assert func.__doc__, "Need a docstring for function %r" % func.__name + + [email protected]("version,expected", [ + # no. 1 + ("1.2.3-alpha.1.2+build.11.e0f985a", + { + 'major': 1, + 'minor': 2, + 'patch': 3, + 'prerelease': 'alpha.1.2', + 'build': 'build.11.e0f985a', + }), + # no. 2 + ("1.2.3-alpha-1+build.11.e0f985a", + { + 'major': 1, + 'minor': 2, + 'patch': 3, + 'prerelease': 'alpha-1', + 'build': 'build.11.e0f985a', + }), +]) +def test_should_parse_version(version, expected): + result = parse(version) + assert result == expected + + [email protected]("version,expected", [ + # no. 1 + ("1.2.3-rc.0+build.0", + { + 'major': 1, + 'minor': 2, + 'patch': 3, + 'prerelease': 'rc.0', + 'build': 'build.0', + }), + # no. 2 + ("1.2.3-rc.0.0+build.0", + { + 'major': 1, + 'minor': 2, + 'patch': 3, + 'prerelease': 'rc.0.0', + 'build': 'build.0', + }), +]) +def test_should_parse_zero_prerelease(version, expected): + result = parse(version) + assert result == expected + + [email protected]("left,right", [ + ("1.0.0", "2.0.0"), + ('1.0.0-alpha', '1.0.0-alpha.1'), + ('1.0.0-alpha.1', '1.0.0-alpha.beta'), + ('1.0.0-alpha.beta', '1.0.0-beta'), + ('1.0.0-beta', '1.0.0-beta.2'), + ('1.0.0-beta.2', '1.0.0-beta.11'), + ('1.0.0-beta.11', '1.0.0-rc.1'), + ('1.0.0-rc.1', '1.0.0'), +]) +def test_should_get_less(left, right): + assert compare(left, right) == -1 + + [email protected]("left,right", [ + ("2.0.0", "1.0.0"), + ('1.0.0-alpha.1', '1.0.0-alpha'), + ('1.0.0-alpha.beta', '1.0.0-alpha.1'), + ('1.0.0-beta', '1.0.0-alpha.beta'), + ('1.0.0-beta.2', '1.0.0-beta'), + ('1.0.0-beta.11', '1.0.0-beta.2'), + ('1.0.0-rc.1', '1.0.0-beta.11'), + ('1.0.0', '1.0.0-rc.1') +]) +def test_should_get_greater(left, right): + assert compare(left, right) == 1 + + +def test_should_match_simple(): + assert match("2.3.7", ">=2.3.6") is True + + +def test_should_no_match_simple(): + assert match("2.3.7", ">=2.3.8") is False + + [email protected]("left,right,expected", [ + ("2.3.7", "!=2.3.8", True), + ("2.3.7", "!=2.3.6", True), + ("2.3.7", "!=2.3.7", False), +]) +def test_should_match_not_equal(left, right, expected): + assert match(left, right) is expected + + [email protected]("left,right,expected", [ + ("2.3.7", "<2.4.0", True), + ("2.3.7", ">2.3.5", True), + ("2.3.7", "<=2.3.9", True), + ("2.3.7", ">=2.3.5", True), + ("2.3.7", "==2.3.7", True), + ("2.3.7", "!=2.3.7", False), +]) +def test_should_not_raise_value_error_for_expected_match_expression(left, + right, + expected): + assert match(left, right) is expected + + [email protected]("left,right", [ + ("2.3.7", "=2.3.7"), + ("2.3.7", "~2.3.7"), + ("2.3.7", "^2.3.7"), +]) +def test_should_raise_value_error_for_unexpected_match_expression(left, right): + with pytest.raises(ValueError): + match(left, right) + + [email protected]("version", ["01.2.3", "1.02.3", "1.2.03"]) +def test_should_raise_value_error_for_zero_prefixed_versions(version): + with pytest.raises(ValueError): + parse(version) + + [email protected]("left,right", [ + ('foo', 'bar'), + ('1.0', '1.0.0'), + ('1.x', '1.0.0'), +]) +def test_should_raise_value_error_for_invalid_value(left, right): + with pytest.raises(ValueError): + compare(left, right) + + [email protected]("left,right", [ + ('1.0.0', ''), + ('1.0.0', '!'), + ('1.0.0', '1.0.0'), +]) +def test_should_raise_value_error_for_invalid_match_expression(left, right): + with pytest.raises(ValueError): + match(left, right) + + +def test_should_follow_specification_comparison(): + """ + produce comparison chain: + 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta.2 < 1.0.0-beta.11 + < 1.0.0-rc.1 < 1.0.0-rc.1+build.1 < 1.0.0 < 1.0.0+0.3.7 < 1.3.7+build + < 1.3.7+build.2.b8f12d7 < 1.3.7+build.11.e0f985a + and in backward too. + """ + chain = [ + '1.0.0-alpha', '1.0.0-alpha.1', '1.0.0-beta.2', '1.0.0-beta.11', + '1.0.0-rc.1', '1.0.0', '1.3.7+build', + ] + versions = zip(chain[:-1], chain[1:]) + for low_version, high_version in versions: + assert compare(low_version, high_version) == -1, \ + '%s should be lesser than %s' % (low_version, high_version) + assert compare(high_version, low_version) == 1, \ + '%s should be higher than %s' % (high_version, low_version) + + [email protected]("left,right", [ + ('1.0.0-beta.2', '1.0.0-beta.11'), +]) +def test_should_compare_rc_builds(left, right): + assert compare(left, right) == -1 + + [email protected]("left,right", [ + ('1.0.0-rc.1', '1.0.0'), + ('1.0.0-rc.1+build.1', '1.0.0'), +]) +def test_should_compare_release_candidate_with_release(left, right): + assert compare(left, right) == -1 + + [email protected]("left,right", [ + ('2.0.0', '2.0.0'), + ('1.1.9-rc.1', '1.1.9-rc.1'), + ('1.1.9+build.1', '1.1.9+build.1'), + ('1.1.9-rc.1+build.1', '1.1.9-rc.1+build.1'), +]) +def test_should_say_equal_versions_are_equal(left, right): + assert compare(left, right) == 0 + + [email protected]("left,right,expected", [ + ('1.1.9-rc.1', '1.1.9-rc.1+build.1', 0), + ('1.1.9-rc.1', '1.1.9+build.1', -1), +]) +def test_should_compare_versions_with_build_and_release(left, right, expected): + assert compare(left, right) == expected + + [email protected]("left,right,expected", [ + ('1.0.0+build.1', '1.0.0', 0), + ('1.0.0-alpha.1+build.1', '1.0.0-alpha.1', 0), + ('1.0.0+build.1', '1.0.0-alpha.1', 1), + ('1.0.0+build.1', '1.0.0-alpha.1+build.1', 1), +]) +def test_should_ignore_builds_on_compare(left, right, expected): + assert compare(left, right) == expected + + +def test_should_correctly_format_version(): + assert format_version(3, 4, 5) == '3.4.5' + assert format_version(3, 4, 5, 'rc.1') == '3.4.5-rc.1' + assert format_version(3, 4, 5, prerelease='rc.1') == '3.4.5-rc.1' + assert format_version(3, 4, 5, build='build.4') == '3.4.5+build.4' + assert format_version(3, 4, 5, 'rc.1', 'build.4') == '3.4.5-rc.1+build.4' + + +def test_should_bump_major(): + assert bump_major('3.4.5') == '4.0.0' + + +def test_should_bump_minor(): + assert bump_minor('3.4.5') == '3.5.0' + + +def test_should_bump_patch(): + assert bump_patch('3.4.5') == '3.4.6' + + +def test_should_ignore_extensions_for_bump(): + assert bump_patch('3.4.5-rc1+build4') == '3.4.6' + + +def test_should_get_max(): + assert max_ver('3.4.5', '4.0.2') == '4.0.2' + + +def test_should_get_min(): + assert min_ver('3.4.5', '4.0.2') == '3.4.5' + + +def test_should_get_min_same(): + assert min_ver('3.4.5', '3.4.5') == '3.4.5' + + +def test_should_get_more_rc1(): + assert compare("1.0.0-rc1", "1.0.0-rc0") == 1 + + [email protected]("left,right,expected", [ + ('1.2.3-rc.2', '1.2.3-rc.10', '1.2.3-rc.2'), + ('1.2.3-rc2', '1.2.3-rc10', '1.2.3-rc10'), + # identifiers with letters or hyphens are compared lexically in ASCII sort + # order. + ('1.2.3-Rc10', '1.2.3-rc10', '1.2.3-Rc10'), + # Numeric identifiers always have lower precedence than non-numeric + # identifiers. + ('1.2.3-2', '1.2.3-rc', '1.2.3-2'), + # A larger set of pre-release fields has a higher precedence than a + # smaller set, if all of the preceding identifiers are equal. + ('1.2.3-rc.2.1', '1.2.3-rc.2', '1.2.3-rc.2'), + # When major, minor, and patch are equal, a pre-release version has lower + # precedence than a normal version. + ('1.2.3', '1.2.3-1', '1.2.3-1'), + ('1.0.0-alpha', '1.0.0-alpha.1', '1.0.0-alpha') +]) +def test_prerelease_order(left, right, expected): + assert min_ver(left, right) == expected + + [email protected]("version,token,expected", [ + ('3.4.5-rc.9', None, '3.4.5-rc.10'), + ('3.4.5', None, '3.4.5-rc.1'), + ('3.4.5', 'dev', '3.4.5-dev.1'), + ('3.4.5', '', '3.4.5-rc.1'), +]) +def test_should_bump_prerelease(version, token, expected): + token = "rc" if not token else token + assert bump_prerelease(version, token) == expected + + +def test_should_ignore_build_on_prerelease_bump(): + assert bump_prerelease('3.4.5-rc.1+build.4') == '3.4.5-rc.2' + + [email protected]("version,expected", [ + ('3.4.5-rc.1+build.9', '3.4.5-rc.1+build.10'), + ('3.4.5-rc.1+0009.dev', '3.4.5-rc.1+0010.dev'), + ('3.4.5-rc.1', '3.4.5-rc.1+build.1'), + ('3.4.5', '3.4.5+build.1'), +]) +def test_should_bump_build(version, expected): + assert bump_build(version) == expected + + [email protected]("version,expected", [ + ('1.2.3', '1.2.3'), + ('1.2.3-rc.5', '1.2.3'), + ('1.2.3+build.2', '1.2.3'), + ('1.2.3-rc.1+build.5', '1.2.3'), + ('1.2.3-alpha', '1.2.3'), + ('1.2.0', '1.2.0'), +]) +def test_should_finalize_version(version, expected): + assert finalize_version(version) == expected + + +def test_should_compare_version_info_objects(): + v1 = VersionInfo(major=0, minor=10, patch=4) + v2 = VersionInfo( + major=0, minor=10, patch=4, prerelease='beta.1', build=None) + + # use `not` to enforce using comparision operators + assert v1 != v2 + assert v1 > v2 + assert v1 >= v2 + assert not(v1 < v2) + assert not(v1 <= v2) + assert not(v1 == v2) + + v3 = VersionInfo(major=0, minor=10, patch=4) + + assert not(v1 != v3) + assert not(v1 > v3) + assert v1 >= v3 + assert not(v1 < v3) + assert v1 <= v3 + assert v1 == v3 + + v4 = VersionInfo(major=0, minor=10, patch=5) + assert v1 != v4 + assert not(v1 > v4) + assert not(v1 >= v4) + assert v1 < v4 + assert v1 <= v4 + assert not(v1 == v4) + + +def test_should_compare_version_dictionaries(): + v1 = VersionInfo(major=0, minor=10, patch=4) + v2 = dict(major=0, minor=10, patch=4, prerelease='beta.1', build=None) + + assert v1 != v2 + assert v1 > v2 + assert v1 >= v2 + assert not(v1 < v2) + assert not(v1 <= v2) + assert not(v1 == v2) + + v3 = dict(major=0, minor=10, patch=4) + + assert not(v1 != v3) + assert not(v1 > v3) + assert v1 >= v3 + assert not(v1 < v3) + assert v1 <= v3 + assert v1 == v3 + + v4 = dict(major=0, minor=10, patch=5) + assert v1 != v4 + assert not(v1 > v4) + assert not(v1 >= v4) + assert v1 < v4 + assert v1 <= v4 + assert not(v1 == v4) + + +def test_should_compare_prerelease_with_numbers_and_letters(): + v1 = VersionInfo(major=1, minor=9, patch=1, prerelease='1unms', build=None) + v2 = VersionInfo(major=1, minor=9, patch=1, prerelease=None, build='1asd') + assert v1 < v2 + assert compare("1.9.1-1unms", "1.9.1+1") == -1 + + +def test_parse_version_info_str_hash(): + s_version = "1.2.3-alpha.1.2+build.11.e0f985a" + v = parse_version_info(s_version) + assert v.__str__() == s_version + d = {} + d[v] = "" # to ensure that VersionInfo are hashable + + +def test_parse_method_for_version_info(): + s_version = "1.2.3-alpha.1.2+build.11.e0f985a" + v = VersionInfo.parse(s_version) + assert str(v) == s_version + + +def test_immutable(): + v = VersionInfo(major=1, minor=2, patch=3, + prerelease='alpha.1.2', build='build.11.e0f985a') + try: + v.major = 9 + except AttributeError: + pass + else: + assert 0, "attribute 'major' must be readonly" + + try: + v.minor = 9 + except AttributeError: + pass + else: + assert 0, "attribute 'minor' must be readonly" + + try: + v.patch = 9 + except AttributeError: + pass + else: + assert 0, "attribute 'patch' must be readonly" + + try: + v.prerelease = 'alpha.9.9' + except AttributeError: + pass + else: + assert 0, "attribute 'prerelease' must be readonly" + + try: + v.build = 'build.99.e0f985a' + except AttributeError: + pass + else: + assert 0, "attribute 'build' must be readonly" + + try: + v.new_attribute = 'forbidden' + except AttributeError: + pass + else: + assert 0, "no new attribute can be set" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/semver-2.8.1/tox.ini new/python-semver-2.8.1/tox.ini --- old/semver-2.8.1/tox.ini 1970-01-01 01:00:00.000000000 +0100 +++ new/python-semver-2.8.1/tox.ini 2018-07-09 15:52:10.000000000 +0200 @@ -0,0 +1,16 @@ +[tox] +envlist = + flake8 + py{27,32,33,34,35,36} + pypy + +[testenv] +commands = py.test -q --doctest-modules +deps = pytest +setenv = + PIP_DISABLE_PIP_VERSION_CHECK = 1 + +[testenv:flake8] +basepython = python3.4 +deps = flake8 +commands = flake8
