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


Reply via email to