Hello community,
here is the log from the commit of package python-node-semver for
openSUSE:Leap:15.2 checked in at 2020-03-09 18:09:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-node-semver (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-node-semver.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-node-semver"
Mon Mar 9 18:09:19 2020 rev:15 rq:776847 version:0.7.0
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-node-semver/python-node-semver.changes
2020-01-15 15:50:48.151507083 +0100
+++
/work/SRC/openSUSE:Leap:15.2/.python-node-semver.new.26092/python-node-semver.changes
2020-03-09 18:09:19.613021246 +0100
@@ -1,0 +2,28 @@
+Thu Oct 3 10:27:14 UTC 2019 - John Vandenberg <[email protected]>
+
+- Add Conflicts: python-semver
+
+-------------------------------------------------------------------
+Tue Aug 13 14:41:23 UTC 2019 - Martin Pluskal <[email protected]>
+
+- Update to version 0.7.0:
+ * Include tests in source distributions
+
+-------------------------------------------------------------------
+Thu Jan 10 13:48:13 UTC 2019 - Martin Pluskal <[email protected]>
+
+- Update to version 0.6.0:
+ * more strict error handling (InvalidTypeIncluded is added)
+- Changes for version 0.5.1:
+ * bug fix
+- Changes for version 0.5.0:
+ * include_prerelease option is added
+
+-------------------------------------------------------------------
+Thu Oct 11 13:33:36 UTC 2018 - Martin Pluskal <[email protected]>
+
+- Update to version 0.4.2:
+ * fix bug for support 4-digit (handling prelease and build)
+ * suport 4-digit version (e.g. x.y.z.a)
+
+-------------------------------------------------------------------
Old:
----
python-node-semver-0.3.0.tar.gz
New:
----
python-node-semver-0.7.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-node-semver.spec ++++++
--- /var/tmp/diff_new_pack.z2hUA7/_old 2020-03-09 18:09:19.897021653 +0100
+++ /var/tmp/diff_new_pack.z2hUA7/_new 2020-03-09 18:09:19.897021653 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-node-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
@@ -12,14 +12,14 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-node-semver
-Version: 0.3.0
+Version: 0.7.0
Release: 0
Summary: Port of node-semver
License: MIT
@@ -31,6 +31,8 @@
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+# See https://github.com/k-bx/python-semver/issues/67 for why conflicts is
needed
+Conflicts: python-semver
BuildArch: noarch
%python_subpackages
@@ -51,7 +53,8 @@
%python_exec setup.py test
%files %{python_files}
-%doc LICENSE README.rst
+%license LICENSE
+%doc README.rst
%{python_sitelib}/*
%changelog
++++++ python-node-semver-0.3.0.tar.gz -> python-node-semver-0.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/.eggs/README.txt
new/python-semver-0.7.0/.eggs/README.txt
--- old/python-semver-0.3.0/.eggs/README.txt 2018-01-13 04:53:03.000000000
+0100
+++ new/python-semver-0.7.0/.eggs/README.txt 1970-01-01 01:00:00.000000000
+0100
@@ -1,6 +0,0 @@
-This directory contains eggs that were downloaded by setuptools to build,
test, and run plug-ins.
-
-This directory caches those eggs to prevent repeated downloads.
-
-However, it is safe to delete this directory.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/.gitignore
new/python-semver-0.7.0/.gitignore
--- old/python-semver-0.3.0/.gitignore 2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/.gitignore 2019-08-12 14:02:25.000000000 +0200
@@ -52,3 +52,5 @@
# Sphinx documentation
docs/_build/
+# misc
+node_modules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/.travis.yml
new/python-semver-0.7.0/.travis.yml
--- old/python-semver-0.3.0/.travis.yml 2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/.travis.yml 2019-08-12 14:02:25.000000000 +0200
@@ -7,7 +7,7 @@
- "nightly"
# command to install dependencies
install:
- - pip install
+ - pip install -e .
# command to run tests
script:
- pytest # or py.test for Python versions 3.5 and below
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/CHANGES.txt
new/python-semver-0.7.0/CHANGES.txt
--- old/python-semver-0.3.0/CHANGES.txt 2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/CHANGES.txt 2019-08-12 14:02:25.000000000 +0200
@@ -1,3 +1,27 @@
+0.7.0
+
+Include tests in source distributions (#31)
+
+0.6.0
+
+- more strict error handling (InvalidTypeIncluded is added)
+
+0.5.1
+
+- bug fix
+
+0.5.0
+
+- include_prerelease option is added
+
+0.4.2
+
+- fix bug for support 4-digit (handling prelease and build)
+
+0.4.0
+
+- suport 4-digit version (e.g. x.y.z.a)
+
0.3.0
- drop python2.x support
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/MANIFEST.in
new/python-semver-0.7.0/MANIFEST.in
--- old/python-semver-0.3.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
+++ new/python-semver-0.7.0/MANIFEST.in 2019-08-12 14:02:25.000000000 +0200
@@ -0,0 +1,4 @@
+graft examples
+graft semver/tests
+global-exclude __pycache__
+global-exclude *.py[co]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/README.rst
new/python-semver-0.7.0/README.rst
--- old/python-semver-0.3.0/README.rst 2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/README.rst 2019-08-12 14:02:25.000000000 +0200
@@ -34,3 +34,8 @@
(max_satisfying(versions, range_, loose=False) == '2.0.0')
except ValueError as e:
assert e.args[0] == "Invalid Version: 2.0.0b1"
+
+ versions = ['1.2.3', '1.2.4', '1.2.5', '1.2.6-pre.1', '2.0.1']
+ range_ = '~1.2.3'
+ assert max_satisfying(versions, range_, loose=False,
include_prerelease=True) == '1.2.6-pre.1'
+ assert max_satisfying(versions, range_, loose=False,
include_prerelease=False) == '1.2.5'
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/examples/readme.py
new/python-semver-0.7.0/examples/readme.py
--- old/python-semver-0.3.0/examples/readme.py 2018-01-13 04:53:03.000000000
+0100
+++ new/python-semver-0.7.0/examples/readme.py 2019-08-12 14:02:25.000000000
+0200
@@ -1,4 +1,11 @@
# -*- coding:utf-8 -*-
+from semver import satisfies
+
+assert satisfies("1.2.3-dev.1+abc", ">1.1.0 <2.0.0", include_prerelease=True)
+assert not satisfies("1.2.3-dev.1+abc", ">1.1.0 <2.0.0",
include_prerelease=False)
+assert satisfies("1.2.3", ">1.1 <2.0")
+
+
from semver import max_satisfying
versions = ['1.2.3', '1.2.4', '1.2.5', '1.2.6', '2.0.1']
@@ -14,3 +21,9 @@
(max_satisfying(versions, range_, loose=False) == '2.0.0')
except ValueError as e:
assert e.args[0] == "Invalid Version: 2.0.0b1"
+
+
+versions = ['1.2.3', '1.2.4', '1.2.5', '1.2.6-pre.1', '2.0.1']
+range_ = '~1.2.3'
+assert max_satisfying(versions, range_, loose=False, include_prerelease=True)
== '1.2.6-pre.1'
+assert max_satisfying(versions, range_, loose=False, include_prerelease=False)
== '1.2.5'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/semver/__init__.py
new/python-semver-0.7.0/semver/__init__.py
--- old/python-semver-0.3.0/semver/__init__.py 2018-01-13 04:53:03.000000000
+0100
+++ new/python-semver-0.7.0/semver/__init__.py 2019-08-12 14:02:25.000000000
+0200
@@ -1,12 +1,16 @@
# -*- coding:utf-8 -*-
import logging
import re
-logger = logging.getLogger(__name__)
+logger = logging.getLogger(__name__)
SEMVER_SPEC_VERSION = '2.0.0'
+class InvalidTypeIncluded(ValueError):
+ pass
+
+
class _R(object):
def __init__(self, i):
self.i = i
@@ -278,7 +282,7 @@
return None
-NUMERIC = re.compile("^\d+$")
+NUMERIC = re.compile(r"^\d+$")
def semver(version, loose):
@@ -288,7 +292,7 @@
else:
version = version.version
elif not isinstance(version, str): # xxx:
- raise ValueError("Invalid Version: {}".format(version))
+ raise InvalidTypeIncluded("must be str, but {!r}".format(version))
"""
if (!(this instanceof SemVer))
@@ -301,21 +305,54 @@
class SemVer(object):
+ # major, minor, patch, prerelease, build, micro_version
+
def __init__(self, version, loose):
logger.debug("SemVer %s, %s", version, loose)
self.loose = loose
self.raw = version
+ self.micro_versions = []
+ self.build = []
m = regexp[LOOSE if loose else FULL].search(version.strip())
if not m:
if not loose:
raise ValueError("Invalid Version: {}".format(version))
- m = regexp[RECOVERYVERSIONNAME].search(version.strip())
+ if not hasattr(version, "strip"):
+ raise ValueError("Invalid Version: {}".format(version))
+ m = regexp[RECOVERYVERSIONNAME].match(version.strip())
+ if m is None:
+ raise ValueError("Invalid Version: {}".format(version))
self.major = int(m.group(1)) if m.group(1) else 0
self.minor = int(m.group(2)) if m.group(2) else 0
self.patch = 0
if not m.group(3):
- self.prerelease = []
+ # this is not same behaviour node's semver (see:
https://github.com/podhmo/python-semver/issues/15)
+ self.prerelease = [id for id in
version.strip()[m.end():].split(".") if id]
+ if self.prerelease and NUMERIC.search(self.prerelease[0]):
+ self.patch = int(self.prerelease[0])
+ self.prerelease = self.prerelease[1:]
+
+ prerelease = []
+ for id in self.prerelease:
+ if "-" in id:
+ other = prerelease
+ ks = id.split("-")
+ elif "+" in id:
+ other = self.build
+ ks = id.split("+")
+ else:
+ other = None
+ ks = [id]
+ for k in ks:
+ if NUMERIC.search(k):
+ self.micro_versions.append(int(k))
+ elif other is None:
+ raise ValueError("Invalid Version:
{}".format(version))
+ else:
+ other.append(k)
+ self.prerelease = prerelease
+ self.prerelease = [(int(id) if NUMERIC.search(id) else id)for
id in self.prerelease]
else:
self.prerelease = [(int(id) if NUMERIC.search(id) else id)
for id in m.group(3).split(".")]
@@ -333,8 +370,6 @@
for id in m.group(4).split(".")]
if m.group(5):
self.build = m.group(5).split(".")
- else:
- self.build = []
self.format() # xxx:
@@ -342,6 +377,8 @@
self.version = "{}.{}.{}".format(self.major, self.minor, self.patch)
if len(self.prerelease) > 0:
self.version += ("-{}".format(".".join(str(v) for v in
self.prerelease)))
+ elif self.micro_versions:
+ self.version += ".{}".format(".".join(str(v) for v in
self.micro_versions))
return self.version
def __repr__(self):
@@ -485,8 +522,8 @@
def inc(version, release, loose, identifier=None): # wow!
try:
return make_semver(version, loose).inc(release,
identifier=identifier).version
- except Exception as e:
- logger.debug(e, exc_info=5)
+ except ValueError as e:
+ logger.info(e, exc_info=2)
return None
@@ -554,6 +591,8 @@
def key_function(version):
v = make_semver(version, loose)
key = (v.major, v.minor, v.patch)
+ if v.micro_versions:
+ key = key + v.micro_versions
if v.prerelease:
key = key + (0,) + tuple(_prerelease_key(
v.prerelease))
@@ -691,6 +730,8 @@
def make_range(range_, loose):
if isinstance(range_, Range) and range_.loose == loose:
return range_
+ elif not isinstance(range_, str): # xxx:
+ raise InvalidTypeIncluded("must be str, but {!r}".format(range_))
# if (!(this instanceof Range))
# return new Range(range, loose);
@@ -698,11 +739,11 @@
class Range(object):
- def __init__(self, range_, loose):
+ def __init__(self, range_, loose, _split_rx=re.compile(r"\s*\|\|\s*")):
self.loose = loose
# First, split based on boolean or ||
self.raw = range_
- xs = [self.parse_range(r.strip()) for r in re.split(r"\s*\|\|\s*",
range_)]
+ xs = [self.parse_range(r.strip()) for r in _split_rx.split(range_)]
self.set = [r for r in xs if r]
if not len(self.set):
@@ -744,7 +785,7 @@
range_ = regexp[CARETTRIM].sub(caretTrimReplace, range_)
# normalize spaces
- range_ = " ".join(re.split("\s+", range_))
+ range_ = " ".join(re.split(r"\s+", range_))
# At this point, the range is completely trimmed and
# ready to be split into comparators.
@@ -752,14 +793,14 @@
comp_re = regexp[COMPARATORLOOSE]
else:
comp_re = regexp[COMPARATOR]
- set_ = re.split("\s+", ' '.join([parse_comparator(comp, loose) for
comp in range_.split(" ")]))
+ set_ = re.split(r"\s+", ' '.join([parse_comparator(comp, loose) for
comp in range_.split(" ")]))
if self.loose:
# in loose mode, throw out any that are not valid comparators
set_ = [comp for comp in set_ if comp_re.search(comp)]
set_ = [make_comparator(comp, loose) for comp in set_]
return set_
- def test(self, version):
+ def test(self, version, include_prerelease=False):
if not version: # xxx
return False
@@ -767,7 +808,7 @@
version = make_semver(version, loose=self.loose)
for e in self.set:
- if test_set(e, version):
+ if test_set(e, version, include_prerelease=include_prerelease):
return True
return False
@@ -808,7 +849,7 @@
def replace_tildes(comp, loose):
return " ".join([replace_tilde(c, loose)
- for c in re.split("\s+", comp.strip())])
+ for c in re.split(r"\s+", comp.strip())])
def replace_tilde(comp, loose):
@@ -849,7 +890,7 @@
# ^1.2.0 --> >=1.2.0 <2.0.0
def replace_carets(comp, loose):
return " ".join([replace_caret(c, loose)
- for c in re.split("\s+", comp.strip())])
+ for c in re.split(r"\s+", comp.strip())])
def replace_caret(comp, loose):
@@ -900,7 +941,7 @@
def replace_xranges(comp, loose):
logger.debug('replaceXRanges %s %s', comp, loose)
return " ".join([replace_xrange(c, loose)
- for c in re.split("\s+", comp.strip())])
+ for c in re.split(r"\s+", comp.strip())])
def replace_xrange(comp, loose):
@@ -1007,11 +1048,11 @@
return (from_ + ' ' + to).strip()
-def test_set(set_, version):
+def test_set(set_, version, include_prerelease=False):
for e in set_:
if not e.test(version):
return False
- if len(version.prerelease) > 0:
+ if len(version.prerelease) > 0 and not include_prerelease:
# Find the set of versions that are allowed to have prereleases
# For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
# That should allow `1.2.3-pr.2` to pass.
@@ -1029,23 +1070,29 @@
return True
-def satisfies(version, range_, loose=False):
+def satisfies(version, range_, loose=False, include_prerelease=False):
try:
range_ = make_range(range_, loose)
- except Exception as e:
+ except InvalidTypeIncluded:
+ raise
+ except ValueError as e:
+ logger.info(e, exc_info=2)
return False
- return range_.test(version)
+ return range_.test(version, include_prerelease=include_prerelease)
-def max_satisfying(versions, range_, loose=False):
+def max_satisfying(versions, range_, loose=False, include_prerelease=False):
try:
range_ob = make_range(range_, loose=loose)
- except:
+ except InvalidTypeIncluded:
+ raise
+ except ValueError as e:
+ logger.info(e, exc_info=2)
return None
max_ = None
max_sv = None
for v in versions:
- if range_ob.test(v): # satisfies(v, range_, loose=loose)
+ if range_ob.test(v, include_prerelease=include_prerelease): #
satisfies(v, range_, loose=loose)
if max_ is None or max_sv.compare(v) == -1: # compare(max, v,
true)
max_ = v
max_sv = make_semver(max_, loose=loose)
@@ -1057,7 +1104,10 @@
# Return '*' instead of '' so that truthiness works.
# This will throw if it's invalid anyway
return make_range(range_, loose).range or "*"
- except:
+ except TypeError as e:
+ raise InvalidTypeIncluded("{} (range_={!r}".format(e, range_))
+ except ValueError as e:
+ logger.info(e, exc_info=2)
return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/semver/tests/test_for_4digit.py
new/python-semver-0.7.0/semver/tests/test_for_4digit.py
--- old/python-semver-0.3.0/semver/tests/test_for_4digit.py 1970-01-01
01:00:00.000000000 +0100
+++ new/python-semver-0.7.0/semver/tests/test_for_4digit.py 2019-08-12
14:02:25.000000000 +0200
@@ -0,0 +1,109 @@
+# https://github.com/podhmo/python-semver/issues/15
+import pytest
+
+cands = [
+ (
+ "4.1.3", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": [],
+ "build": [],
+ "micro_versions": [],
+ }
+ ),
+ (
+ "4.1.3+jenkins", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": [],
+ "build": ["jenkins"],
+ "micro_versions": [],
+ }
+ ),
+ (
+ "4.1.3-pre", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": ["pre"],
+ "build": [],
+ "micro_versions": [],
+ }
+ ),
+ # 4-digit
+ (
+ "4.1.3.2", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": [],
+ "build": [],
+ "micro_versions": [2],
+ }
+ ),
+ (
+ "4.1.3.2+jenkins", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": [],
+ "build": ["jenkins"],
+ "micro_versions": [2],
+ }
+ ),
+ (
+ "4.1.3.2-pre", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": ["pre"],
+ "build": [],
+ "micro_versions": [2],
+ }
+ ),
+ (
+ "4.1.3.2-pre2", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": ["pre2"],
+ "build": [],
+ "micro_versions": [2],
+ }
+ ),
+ (
+ "4.1.3.2-pre.2", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": ["pre"],
+ "build": [],
+ "micro_versions": [2, 2],
+ }
+ ),
+ (
+ "4.1.3.2-pre.2+xxx", True, {
+ "major": 4,
+ "minor": 1,
+ "patch": 3,
+ "prerelease": ["pre"],
+ "build": ["xxx"],
+ "micro_versions": [2, 2],
+ }
+ ),
+]
+
+
[email protected]("v, loose, expected", cands)
+def test_parse(v, loose, expected):
+ from semver import make_semver
+ got = make_semver(v, loose=loose)
+ assert got.raw == v
+ assert got.major == expected["major"]
+ assert got.minor == expected["minor"]
+ assert got.patch == expected["patch"]
+ assert got.prerelease == expected["prerelease"]
+ assert got.build == expected["build"]
+ assert got.micro_versions == expected["micro_versions"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-semver-0.3.0/semver/tests/test_invalid_version_number.py
new/python-semver-0.7.0/semver/tests/test_invalid_version_number.py
--- old/python-semver-0.3.0/semver/tests/test_invalid_version_number.py
2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/semver/tests/test_invalid_version_number.py
2019-08-12 14:02:25.000000000 +0200
@@ -2,13 +2,32 @@
import pytest
# node-semver/test/index.js
-cands = ['1.2.3.4', 'NOT VALID', 1.2, None, 'Infinity.NaN.Infinity']
+cands = [
+ ('1.2.3.4', False, ValueError),
+ ('NOT VALID', False, ValueError),
+ (1.2, False, ValueError),
+ ("1.2", False, ValueError),
+ ("1.a.2", False, ValueError),
+ (None, False, ValueError),
+ ('X.2', False, ValueError),
+ ('Infinity.NaN.Infinity', False, ValueError),
+ ('1.2.3.4', True, None),
+ ('NOT VALID', True, ValueError),
+ (1.2, True, ValueError),
+ ("1.2", True, None),
+ ("1.a.2", True, ValueError),
+ (None, True, ValueError),
+ ('Infinity.NaN.Infinity', True, ValueError),
+ ('X.2', True, ValueError),
+]
[email protected]("v", cands)
-def test_it(v):
[email protected]("v, loose, exc", cands)
+def test_it(v, loose, exc):
import pytest
from semver import make_semver
- with pytest.raises(ValueError):
- loose = False
+ if exc is not None:
+ with pytest.raises(exc):
+ make_semver(v, loose)
+ else:
make_semver(v, loose)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-semver-0.3.0/semver/tests/test_max_satisfying.py
new/python-semver-0.7.0/semver/tests/test_max_satisfying.py
--- old/python-semver-0.3.0/semver/tests/test_max_satisfying.py 2018-01-13
04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/semver/tests/test_max_satisfying.py 2019-08-12
14:02:25.000000000 +0200
@@ -3,14 +3,28 @@
# node-semver/test/index.js
cands = [
- [['1.2.3', '1.2.4'], '1.2', '1.2.4', False],
- [['1.2.4', '1.2.3'], '1.2', '1.2.4', False],
- [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6', False],
- [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3',
'2.0.0', '2.1.0'], '~2.0.0', '2.0.0', True]
+ [['1.2.4', '1.2.3', '1.2.5-beta'], '~1.2.3', '1.2.5-beta', False, True],
+ [['1.2.4', '1.2.3', '1.2.5-beta'], '~1.2.3', '1.2.4', False, False],
+ [['1.2.3', '1.2.4'], '1.2', '1.2.4', False, False],
+ [['1.2.4', '1.2.3'], '1.2', '1.2.4', False, False],
+ [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6', False, False],
+ [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3',
'2.0.0', '2.1.0'], '~2.0.0', '2.0.0',
+ True, False],
+ [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3',
'2.0.0', '2.1.0'], '~2.0.0', ValueError,
+ False, False],
+ [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0',
'2.0.1b1', '2.1.0'], '~2.0.0', '2.0.0',
+ True, False],
+ [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0',
'2.0.1b1', '2.1.0'], '~2.0.0', '2.0.1b1',
+ True, True]
+
]
[email protected]("versions, range_, expect, loose", cands)
-def test_it(versions, range_, expect, loose):
[email protected]("versions, range_, expect, loose,
include_prerelease", cands)
+def test_it(versions, range_, expect, loose, include_prerelease):
from semver import max_satisfying
- assert max_satisfying(versions, range_, loose) == expect
+ if isinstance(expect, type) and issubclass(expect, Exception):
+ with pytest.raises(expect):
+ max_satisfying(versions, range_, loose, include_prerelease)
+ else:
+ assert max_satisfying(versions, range_, loose, include_prerelease) ==
expect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-semver-0.3.0/semver/tests/test_passing_bytes.py
new/python-semver-0.7.0/semver/tests/test_passing_bytes.py
--- old/python-semver-0.3.0/semver/tests/test_passing_bytes.py 1970-01-01
01:00:00.000000000 +0100
+++ new/python-semver-0.7.0/semver/tests/test_passing_bytes.py 2019-08-12
14:02:25.000000000 +0200
@@ -0,0 +1,30 @@
+import pytest
+
+
+def test_max_satisfying():
+ def _callFUT(versions, range_):
+ from semver import max_satisfying
+ max_satisfying(versions, range_)
+
+ from semver import InvalidTypeIncluded
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT([b"1.0.0"], "1.0.0")
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT(["1.0.0"], b"1.0.0")
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT("1.0.0", [b"1.0.0"]) # mistakes
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT(b"1.0.0", ["1.0.0"]) # mistakes
+ _callFUT(["1.0.0"], "1.0.0")
+
+
+def test_satisfies():
+ def _callFUT(version, range_):
+ from semver import satisfies
+ satisfies(version, range_)
+
+ from semver import InvalidTypeIncluded
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT(b"1.0.0", "1.0.0")
+ with pytest.raises(InvalidTypeIncluded):
+ _callFUT("1.0.0", b"1.0.0")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/semver/tests/test_range.py
new/python-semver-0.7.0/semver/tests/test_range.py
--- old/python-semver-0.3.0/semver/tests/test_range.py 2018-01-13
04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/semver/tests/test_range.py 2019-08-12
14:02:25.000000000 +0200
@@ -3,112 +3,114 @@
# node-semver/test/index.js
cands = [
- ['1.0.0 - 2.0.0', '1.2.3', False],
- ['^1.2.3+build', '1.2.3', False],
- ['^1.2.3+build', '1.3.0', False],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3', False],
- ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', True],
- ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', True],
- ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', True],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2', False],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha', False],
- ['1.2.3+asdf - 2.4.3+asdf', '1.2.3', False],
- ['1.0.0', '1.0.0', False],
- ['>=*', '0.2.4', False],
- ['', '1.0.0', False],
- ['*', '1.2.3', False],
- ['*', 'v1.2.3', True],
- ['>=1.0.0', '1.0.0', False],
- ['>=1.0.0', '1.0.1', False],
- ['>=1.0.0', '1.1.0', False],
- ['>1.0.0', '1.0.1', False],
- ['>1.0.0', '1.1.0', False],
- ['<=2.0.0', '2.0.0', False],
- ['<=2.0.0', '1.9999.9999', False],
- ['<=2.0.0', '0.2.9', False],
- ['<2.0.0', '1.9999.9999', False],
- ['<2.0.0', '0.2.9', False],
- ['>= 1.0.0', '1.0.0', False],
- ['>= 1.0.0', '1.0.1', False],
- ['>= 1.0.0', '1.1.0', False],
- ['> 1.0.0', '1.0.1', False],
- ['> 1.0.0', '1.1.0', False],
- ['<= 2.0.0', '2.0.0', False],
- ['<= 2.0.0', '1.9999.9999', False],
- ['<= 2.0.0', '0.2.9', False],
- ['< 2.0.0', '1.9999.9999', False],
- ['<\t2.0.0', '0.2.9', False],
- ['>=0.1.97', 'v0.1.97', True],
- ['>=0.1.97', '0.1.97', False],
- ['0.1.20 || 1.2.4', '1.2.4', False],
- ['>=0.2.3 || <0.0.1', '0.0.0', False],
- ['>=0.2.3 || <0.0.1', '0.2.3', False],
- ['>=0.2.3 || <0.0.1', '0.2.4', False],
- ['||', '1.3.4', False],
- ['2.x.x', '2.1.3', False],
- ['1.2.x', '1.2.3', False],
- ['1.2.x || 2.x', '2.1.3', False],
- ['1.2.x || 2.x', '1.2.3', False],
- ['x', '1.2.3', False],
- ['2.*.*', '2.1.3', False],
- ['1.2.*', '1.2.3', False],
- ['1.2.* || 2.*', '2.1.3', False],
- ['1.2.* || 2.*', '1.2.3', False],
- ['*', '1.2.3', False],
- ['2', '2.1.2', False],
- ['2.3', '2.3.1', False],
- ['~x', '0.0.9', False], # >=2.4.0 <2.5.0
- ['~2', '2.0.9', False], # >=2.4.0 <2.5.0
- ['~2.4', '2.4.0', False], # >=2.4.0 <2.5.0
- ['~2.4', '2.4.5', False],
- ['~>3.2.1', '3.2.2', False], # >=3.2.1 <3.3.0,
- ['~1', '1.2.3', False], # >=1.0.0 <2.0.0
- ['~>1', '1.2.3', False],
- ['~> 1', '1.2.3', False],
- ['~1.0', '1.0.2', False], # >=1.0.0 <1.1.0,
- ['~ 1.0', '1.0.2', False],
- ['~ 1.0.3', '1.0.12', False],
- ['>=1', '1.0.0', False],
- ['>= 1', '1.0.0', False],
- ['<1.2', '1.1.1', False],
- ['< 1.2', '1.1.1', False],
- ['~v0.5.4-pre', '0.5.5', False],
- ['~v0.5.4-pre', '0.5.4', False],
- ['=0.7.x', '0.7.2', False],
- ['<=0.7.x', '0.7.2', False],
- ['>=0.7.x', '0.7.2', False],
- ['<=0.7.x', '0.6.2', False],
- ['~1.2.1 >=1.2.3', '1.2.3', False],
- ['~1.2.1 =1.2.3', '1.2.3', False],
- ['~1.2.1 1.2.3', '1.2.3', False],
- ['~1.2.1 >=1.2.3 1.2.3', '1.2.3', False],
- ['~1.2.1 1.2.3 >=1.2.3', '1.2.3', False],
- ['~1.2.1 1.2.3', '1.2.3', False],
- ['>=1.2.1 1.2.3', '1.2.3', False],
- ['1.2.3 >=1.2.1', '1.2.3', False],
- ['>=1.2.3 >=1.2.1', '1.2.3', False],
- ['>=1.2.1 >=1.2.3', '1.2.3', False],
- ['>=1.2', '1.2.8', False],
- ['^1.2.3', '1.8.1', False],
- ['^0.1.2', '0.1.2', False],
- ['^0.1', '0.1.2', False],
- ['^0.0.1', '0.0.1', False],
- ['^1.2', '1.4.2', False],
- ['^1.2 ^1', '1.4.2', False],
- ['^1.2.3-alpha', '1.2.3-pre', False],
- ['^1.2.0-alpha', '1.2.0-pre', False],
- ['^0.0.1-alpha', '0.0.1-beta', False],
- ['^0.1.1-alpha', '0.1.1-beta', False],
- ['^x', '1.2.3', False],
- ['x - 1.0.0', '0.9.7', False],
- ['x - 1.x', '0.9.7', False],
- ['1.0.0 - x', '1.9.7', False],
- ['1.x - x', '1.9.7', False],
- ['<=7.x', '7.9.9', False]
+ ['1.0.0 - 2.0.0', '1.2.3', False, False],
+ ['^1.2.3+build', '1.2.3', False, False],
+ ['^1.2.3+build', '1.3.0', False, False],
+ ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3', False, False],
+ ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', True, False],
+ ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', True, False],
+ ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', True, False],
+ ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2', False, False],
+ ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha', False, False],
+ ['1.2.3+asdf - 2.4.3+asdf', '1.2.3', False, False],
+ ['1.0.0', '1.0.0', False, False],
+ ['>=*', '0.2.4', False, False],
+ ['', '1.0.0', False, False],
+ ['*', '1.2.3', False, False],
+ ['*', 'v1.2.3', True, False],
+ ['>=1.0.0', '1.0.0', False, False],
+ ['>=1.0.0', '1.0.1', False, False],
+ ['>=1.0.0', '1.1.0', False, False],
+ ['>1.0.0', '1.0.1', False, False],
+ ['>1.0.0', '1.0.1-pre.1', False, True],
+ ['>1.0.0', '1.1.0', False, False],
+ ['<=2.0.0', '2.0.0', False, False],
+ ['<=2.0.0', '1.9999.9999', False, False],
+ ['<=2.0.0', '0.2.9', False, False],
+ ['<2.0.0', '1.9999.9999', False, False],
+ ['<2.0.0', '0.2.9', False, False],
+ ['>= 1.0.0', '1.0.0', False, False],
+ ['>= 1.0.0', '1.0.1', False, False],
+ ['>= 1.0.0', '1.1.0', False, False],
+ ['> 1.0.0', '1.0.1', False, False],
+ ['> 1.0.0', '1.1.0', False, False],
+ ['<= 2.0.0', '2.0.0', False, False],
+ ['<= 2.0.0', '1.9999.9999', False, False],
+ ['<= 2.0.0', '0.2.9', False, False],
+ ['< 2.0.0', '1.9999.9999', False, False],
+ ['<\t2.0.0', '0.2.9', False, False],
+ ['>=0.1.97', 'v0.1.97', True, False],
+ ['>=0.1.97', '0.1.97', False, False],
+ ['0.1.20 || 1.2.4', '1.2.4', False, False],
+ ['>=0.2.3 || <0.0.1', '0.0.0', False, False],
+ ['>=0.2.3 || <0.0.1', '0.2.3', False, False],
+ ['>=0.2.3 || <0.0.1', '0.2.4', False, False],
+ ['||', '1.3.4', False, False],
+ ['2.x.x', '2.1.3', False, False],
+ ['1.2.x', '1.2.3', False, False],
+ ['1.2.x || 2.x', '2.1.3', False, False],
+ ['1.2.x || 2.x', '1.2.3', False, False],
+ ['x', '1.2.3', False, False],
+ ['2.*.*', '2.1.3', False, False],
+ ['1.2.*', '1.2.3', False, False],
+ ['1.2.* || 2.*', '2.1.3', False, False],
+ ['1.2.* || 2.*', '1.2.3', False, False],
+ ['*', '1.2.3', False, False],
+ ['2', '2.1.2', False, False],
+ ['2.3', '2.3.1', False, False],
+ ['~x', '0.0.9', False, False], # >=2.4.0 <2.5.0
+ ['~2', '2.0.9', False, False], # >=2.4.0 <2.5.0
+ ['~2.4', '2.4.0', False, False], # >=2.4.0 <2.5.0
+ ['~2.4', '2.4.5', False, False],
+ ['~>3.2.1', '3.2.2', False, False], # >=3.2.1 <3.3.0,
+ ['~1', '1.2.3', False, False], # >=1.0.0 <2.0.0
+ ['~>1', '1.2.3', False, False],
+ ['~> 1', '1.2.3', False, False],
+ ['~1.0', '1.0.2', False, False], # >=1.0.0 <1.1.0,
+ ['~ 1.0', '1.0.2', False, False],
+ ['~ 1.0.3', '1.0.12', False, False],
+ ['>=1', '1.0.0', False, False],
+ ['>= 1', '1.0.0', False, False],
+ ['<1.2', '1.1.1', False, False],
+ ['< 1.2', '1.1.1', False, False],
+ ['~v0.5.4-pre', '0.5.5', False, False],
+ ['~v0.5.4-pre', '0.5.4', False, False],
+ ['=0.7.x', '0.7.2', False, False],
+ ['<=0.7.x', '0.7.2', False, False],
+ ['>=0.7.x', '0.7.2', False, False],
+ ['<=0.7.x', '0.6.2', False, False],
+ ['~1.2.1 >=1.2.3', '1.2.3', False, False],
+ ['~1.2.1 =1.2.3', '1.2.3', False, False],
+ ['~1.2.1 1.2.3', '1.2.3', False, False],
+ ['~1.2.1 >=1.2.3 1.2.3', '1.2.3', False, False],
+ ['~1.2.1 1.2.3 >=1.2.3', '1.2.3', False, False],
+ ['~1.2.1 1.2.3', '1.2.3', False, False],
+ ['>=1.2.1 1.2.3', '1.2.3', False, False],
+ ['1.2.3 >=1.2.1', '1.2.3', False, False],
+ ['>=1.2.3 >=1.2.1', '1.2.3', False, False],
+ ['>=1.2.1 >=1.2.3', '1.2.3', False, False],
+ ['>=1.2', '1.2.8', False, False],
+ ['^1.2.3', '1.8.1', False, False],
+ ['^0.1.2', '0.1.2', False, False],
+ ['^0.1', '0.1.2', False, False],
+ ['^0.0.1', '0.0.1', False, False],
+ ['^1.2', '1.4.2', False, False],
+ ['^1.2 ^1', '1.4.2', False, False],
+ ['^1.2.3-alpha', '1.2.3-pre', False, False],
+ ['^1.2.3-alpha', '1.2.4-pre', False, True],
+ ['^1.2.0-alpha', '1.2.0-pre', False, False],
+ ['^0.0.1-alpha', '0.0.1-beta', False, False],
+ ['^0.1.1-alpha', '0.1.1-beta', False, False],
+ ['^x', '1.2.3', False, False],
+ ['x - 1.0.0', '0.9.7', False, False],
+ ['x - 1.x', '0.9.7', False, False],
+ ['1.0.0 - x', '1.9.7', False, False],
+ ['1.x - x', '1.9.7', False, False],
+ ['<=7.x', '7.9.9', False, False]
]
[email protected]("range_, version, loose", cands)
-def test_it(range_, version, loose):
[email protected]("range_, version, loose, include_prerelease", cands)
+def test_it(range_, version, loose, include_prerelease):
from semver import satisfies
- assert satisfies(version, range_, loose) is True
+ assert satisfies(version, range_, loose, include_prerelease) is True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-semver-0.3.0/setup.py
new/python-semver-0.7.0/setup.py
--- old/python-semver-0.3.0/setup.py 2018-01-13 04:53:03.000000000 +0100
+++ new/python-semver-0.7.0/setup.py 2019-08-12 14:02:25.000000000 +0200
@@ -4,14 +4,15 @@
import sys
from setuptools import setup, find_packages
+
here = os.path.abspath(os.path.dirname(__file__))
try:
- with open(os.path.join(here, 'README.rst')) as f:
+ with open(os.path.join(here, "README.rst")) as f:
README = f.read()
- with open(os.path.join(here, 'CHANGES.txt')) as f:
+ with open(os.path.join(here, "CHANGES.txt")) as f:
CHANGES = f.read()
except IOError:
- README = CHANGES = ''
+ README = CHANGES = ""
install_requires = []
@@ -31,20 +32,21 @@
def run_tests(self):
import pytest
+
pytest.main(self.test_args)
setup(
- name='node-semver',
- version='0.3.0',
- description='port of node-semver',
- long_description=README + '\n\n' + CHANGES,
+ name="node-semver",
+ version="0.7.0",
+ description="port of node-semver",
+ long_description=README + "\n\n" + CHANGES,
classifiers=[
"Programming Language :: Python",
- 'Programming Language :: Python :: 3',
+ "Programming Language :: Python :: 3",
"Programming Language :: Python :: Implementation :: CPython",
],
- keywords='version semver',
+ keywords="version semver",
author="podhmo",
author_email="[email protected]",
url="https://github.com/podhmo/python-semver",
@@ -52,12 +54,9 @@
include_package_data=True,
zip_safe=False,
install_requires=install_requires,
- extras_require={
- 'testing': testing_extras,
- 'docs': docs_extras,
- },
+ extras_require={"testing": testing_extras, "docs": docs_extras},
tests_require=tests_require,
- cmdclass={'test': PyTest},
+ cmdclass={"test": PyTest},
entry_points=""" """,
license="mit",
)