Hello community,
here is the log from the commit of package python-setuptools_scm for
openSUSE:Factory checked in at 2018-04-22 14:29:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-setuptools_scm (Old)
and /work/SRC/openSUSE:Factory/.python-setuptools_scm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-setuptools_scm"
Sun Apr 22 14:29:41 2018 rev:13 rq:596488 version:2.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-setuptools_scm/python-setuptools_scm.changes
2018-03-29 11:48:15.834265812 +0200
+++
/work/SRC/openSUSE:Factory/.python-setuptools_scm.new/python-setuptools_scm.changes
2018-04-22 14:29:44.054476229 +0200
@@ -1,0 +2,13 @@
+Thu Apr 12 20:42:08 UTC 2018 - [email protected]
+
+- update to version 2.0.0:
+ * fix #237 - correct imports in code examples
+ * improve mercurial commit detection (thanks Aaron)
+ * breaking change: remove support for setuptools before parsed
+ versions
+ * reintroduce manifest as the travis deploy cant use the file finder
+ * reconfigure flake8 for future compatibility with black
+ * introduce support for branch name in version metadata and support
+ a opt-in simplified semver version scheme
+
+-------------------------------------------------------------------
Old:
----
setuptools_scm-1.17.0.tar.gz
New:
----
setuptools_scm-2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-setuptools_scm.spec ++++++
--- /var/tmp/diff_new_pack.HeMBwv/_old 2018-04-22 14:29:44.630455382 +0200
+++ /var/tmp/diff_new_pack.HeMBwv/_new 2018-04-22 14:29:44.634455237 +0200
@@ -16,10 +16,10 @@
#
-%bcond_with test
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%bcond_with test
Name: python-setuptools_scm
-Version: 1.17.0
+Version: 2.0.0
Release: 0
Summary: Manage your versions by scm tags
License: MIT
@@ -29,20 +29,18 @@
BuildRequires: %{python_module devel}
BuildRequires: %{python_module setuptools}
BuildRequires: python-rpm-macros
+Requires: python-setuptools
+BuildArch: noarch
%if %{with test}
# Testing requirements
BuildRequires: %{python_module pytest}
BuildRequires: git
BuildRequires: mercurial
%endif
-Requires: python-setuptools
%if 0%{?suse_version} >= 1000 || 0%{?fedora_version} >= 24
Recommends: git
Recommends: mecurial
%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildArch: noarch
-
%python_subpackages
%description
@@ -63,9 +61,9 @@
%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib}
py.test-%{$python_bin_suffix}
%endif
-%files %python_files
-%defattr(-,root,root,-)
-%doc README.rst LICENSE CHANGELOG.rst
+%files %{python_files}
+%license LICENSE
+%doc README.rst CHANGELOG.rst
%{python_sitelib}/*
%changelog
++++++ setuptools_scm-1.17.0.tar.gz -> setuptools_scm-2.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/.gitignore
new/setuptools_scm-2.0.0/.gitignore
--- old/setuptools_scm-1.17.0/.gitignore 2018-03-20 11:15:19.000000000
+0100
+++ new/setuptools_scm-2.0.0/.gitignore 2018-04-10 10:27:36.000000000 +0200
@@ -37,6 +37,7 @@
.coverage
.coverage.*
.cache
+.pytest_cache
nosetests.xml
coverage.xml
*,cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/CHANGELOG.rst
new/setuptools_scm-2.0.0/CHANGELOG.rst
--- old/setuptools_scm-1.17.0/CHANGELOG.rst 2018-03-20 11:15:19.000000000
+0100
+++ new/setuptools_scm-2.0.0/CHANGELOG.rst 2018-04-10 10:27:36.000000000
+0200
@@ -1,3 +1,13 @@
+v2.0.0
+========
+
+* fix #237 - correct imports in code examples
+* improve mercurial commit detection (thanks Aaron)
+* breaking change: remove support for setuptools before parsed versions
+* reintroduce manifest as the travis deploy cant use the file finder
+* reconfigure flake8 for future compatibility with black
+* introduce support for branch name in version metadata and support a opt-in
simplified semver version scheme
+
v1.17.0
========
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/MANIFEST.in
new/setuptools_scm-2.0.0/MANIFEST.in
--- old/setuptools_scm-1.17.0/MANIFEST.in 1970-01-01 01:00:00.000000000
+0100
+++ new/setuptools_scm-2.0.0/MANIFEST.in 2018-04-10 10:27:36.000000000
+0200
@@ -0,0 +1,8 @@
+exclude *.nix
+exclude appveyor.yml
+exclude .travis.yaml
+include *.py
+include testing/*.py
+include tox.ini
+include *.rst
+include LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/PKG-INFO
new/setuptools_scm-2.0.0/PKG-INFO
--- old/setuptools_scm-1.17.0/PKG-INFO 2018-03-20 11:15:44.000000000 +0100
+++ new/setuptools_scm-2.0.0/PKG-INFO 2018-04-10 10:28:15.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: setuptools_scm
-Version: 1.17.0
+Version: 2.0.0
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -293,9 +293,9 @@
.. code:: python
def myversion():
- from setuptools_scm.version import dirty_tag
+ from setuptools_scm.version import get_local_dirty_tag
def clean_scheme(version):
- return dirty_tag(version) if version.dirty else '+clean'
+ return get_local_dirty_tag(version) if version.dirty else
'+clean'
return {'local_scheme': clean_scheme}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/README.rst
new/setuptools_scm-2.0.0/README.rst
--- old/setuptools_scm-1.17.0/README.rst 2018-03-20 11:15:19.000000000
+0100
+++ new/setuptools_scm-2.0.0/README.rst 2018-04-10 10:27:36.000000000 +0200
@@ -285,9 +285,9 @@
.. code:: python
def myversion():
- from setuptools_scm.version import dirty_tag
+ from setuptools_scm.version import get_local_dirty_tag
def clean_scheme(version):
- return dirty_tag(version) if version.dirty else '+clean'
+ return get_local_dirty_tag(version) if version.dirty else '+clean'
return {'local_scheme': clean_scheme}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/appveyor.yml
new/setuptools_scm-2.0.0/appveyor.yml
--- old/setuptools_scm-1.17.0/appveyor.yml 2018-03-20 11:15:19.000000000
+0100
+++ new/setuptools_scm-2.0.0/appveyor.yml 1970-01-01 01:00:00.000000000
+0100
@@ -1,45 +0,0 @@
-environment:
- matrix:
- - PYTHON: "C:\\Python27"
- TOX_ENV: "py-test"
-
- - PYTHON: "C:\\Python27-x64"
- TOX_ENV: "py-test"
-
- - PYTHON: "C:\\Python34"
- TOX_ENV: "py-test"
-
- - PYTHON: "C:\\Python34-x64"
- TOX_ENV: "py-test"
-
-init:
- - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
-
- - ECHO "Updating Environment"
- - python -m pip install -U setuptools
- - python -m pip install -U pip
- - python -m pip install -U wheel
- - python -m pip install -U tox
-
-
-install:
- # Check that we have the expected version and architecture for Python
- - python -c "import sys, os;sys.stdout.write(str(sys.version) + os.linesep)"
- - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
- - python -m pip list
-
-build: false # Not a C# project, build stuff at the test step instead.
-
-test_script:
- # Build the compiled extension and run the project tests
- - python -m tox -e %TOX_ENV%"
-
-after_test:
- # If tests are successful, create a whl package for the project.
- - "%CMD_IN_ENV% python setup.py bdist_wheel"
- - ps: "ls dist"
-
-artifacts:
- # Archive the generated wheel package in the ci.appveyor.com build report.
- - path: dist\*
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/default.nix
new/setuptools_scm-2.0.0/default.nix
--- old/setuptools_scm-1.17.0/default.nix 2018-03-20 11:15:19.000000000
+0100
+++ new/setuptools_scm-2.0.0/default.nix 1970-01-01 01:00:00.000000000
+0100
@@ -1,15 +0,0 @@
-{pkgs ? import <nixpkgs> {}}:
-with pkgs.pythonPackages;
-buildPythonPackage {
- name = "setuptools_scm";
- src = ./.;
- version = "git";
- buildInputs = [
- setuptools
- pip
- pytest
- pkgs.git
- pkgs.mercurial
- ];
-}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/setup.py
new/setuptools_scm-2.0.0/setup.py
--- old/setuptools_scm-1.17.0/setup.py 2018-03-20 11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/setup.py 2018-04-10 10:27:36.000000000 +0200
@@ -87,6 +87,7 @@
[setuptools_scm.version_scheme]
guess-next-dev = setuptools_scm.version:guess_next_dev_version
post-release = setuptools_scm.version:postrelease_version
+ python-simplified-semver =
setuptools_scm.version:simplified_semver_version
[setuptools_scm.local_scheme]
node-and-date = setuptools_scm.version:get_local_node_and_date
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/setuptools_scm/__main__.py
new/setuptools_scm-2.0.0/setuptools_scm/__main__.py
--- old/setuptools_scm-1.17.0/setuptools_scm/__main__.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm/__main__.py 2018-04-10
10:27:36.000000000 +0200
@@ -4,9 +4,14 @@
from setuptools_scm.integration import find_files
from setuptools_scm.version import _warn_if_setuptools_outdated
-if __name__ == '__main__':
+
+def main():
_warn_if_setuptools_outdated()
print('Guessed Version', get_version())
if 'ls' in sys.argv:
for fname in find_files('.'):
print(fname)
+
+
+if __name__ == '__main__':
+ main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/setuptools_scm/git.py
new/setuptools_scm-2.0.0/setuptools_scm/git.py
--- old/setuptools_scm-1.17.0/setuptools_scm/git.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm/git.py 2018-04-10
10:27:36.000000000 +0200
@@ -39,6 +39,13 @@
out, _, _ = self.do_ex("git status --porcelain --untracked-files=no")
return bool(out)
+ def get_branch(self):
+ branch, err, ret = self.do_ex("git rev-parse --abbrev-ref HEAD")
+ if ret:
+ trace("branch err", branch, err, ret)
+ return
+ return branch
+
def is_shallow(self):
return isfile(join(self.path, '.git/shallow'))
@@ -89,7 +96,7 @@
if pre_parse:
pre_parse(wd)
- out, err, ret = do_ex(describe_command, root)
+ out, err, ret = wd.do_ex(describe_command)
if ret:
# If 'git describe' failed, try to get the information otherwise.
rev_node = wd.node()
@@ -103,6 +110,7 @@
distance=wd.count_all_nodes(),
node='g' + rev_node,
dirty=dirty,
+ branch=wd.get_branch(),
)
# 'out' looks e.g. like 'v1.5.0-0-g4060507' or
@@ -115,10 +123,11 @@
tag, number, node = out.rsplit('-', 2)
number = int(number)
+ branch = wd.get_branch()
if number:
- return meta(tag, distance=number, node=node, dirty=dirty)
+ return meta(tag, distance=number, node=node, dirty=dirty,
branch=branch)
else:
- return meta(tag, node=node, dirty=dirty)
+ return meta(tag, node=node, dirty=dirty, branch=branch)
def list_files_in_archive(path):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/setuptools_scm/hg.py
new/setuptools_scm-2.0.0/setuptools_scm/hg.py
--- old/setuptools_scm-1.17.0/setuptools_scm/hg.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm/hg.py 2018-04-10
10:27:36.000000000 +0200
@@ -5,7 +5,7 @@
FILES_COMMAND = 'hg locate -I .'
-def _hg_tagdist_normalize_tagcommit(root, tag, dist, node):
+def _hg_tagdist_normalize_tagcommit(root, tag, dist, node, branch):
dirty = node.endswith('+')
node = 'h' + node.strip('+')
@@ -17,13 +17,14 @@
" and not tag({tag!r}))" # ignore the tagged commit itself
).format(tag=tag)
if tag != '0.0':
- commits = do(['hg', 'log', '-r', revset, '--template', '{node|short}'],
+ commits = do(['hg', 'log', '-r', revset,
+ '--template', '{node|short}'],
root)
else:
commits = True
trace('normalize', locals())
if commits or dirty:
- return meta(tag, distance=dist, node=node, dirty=dirty)
+ return meta(tag, distance=dist, node=node, dirty=dirty, branch=branch)
else:
return meta(tag)
@@ -31,37 +32,50 @@
def parse(root):
if not has_command('hg'):
return
- identity_data = do('hg id -i -t', root).split()
+ identity_data = do('hg id -i -b -t', root).split()
if not identity_data:
return
node = identity_data.pop(0)
+ branch = identity_data.pop(0)
tags = tags_to_versions(identity_data)
# filter tip in degraded mode on old setuptools
tags = [x for x in tags if x != 'tip']
dirty = node[-1] == '+'
if tags:
- return meta(tags[0], dirty=dirty)
+ return meta(tags[0], dirty=dirty, branch=branch)
- if node.strip('+') == '0'*12:
+ if node.strip('+') == '0' * 12:
trace('initial node', root)
- return meta('0.0', dirty=dirty)
+ return meta('0.0', dirty=dirty, branch=branch)
- # the newline is needed for merge stae, see issue 72
- cmd = 'hg parents --template "{latesttag} {latesttagdistance}\n"'
- out = do(cmd, root)
try:
- # in merge state we assume parent 1 is fine
- tags, dist = out.splitlines()[0].split()
- # pick latest tag from tag list
- tag = tags.split(':')[-1]
+ tag = get_latest_normalizable_tag(root)
+ dist = get_graph_distance(root, tag)
if tag == 'null':
tag = '0.0'
dist = int(dist) + 1
- return _hg_tagdist_normalize_tagcommit(root, tag, dist, node)
+ return _hg_tagdist_normalize_tagcommit(root, tag, dist, node, branch)
except ValueError:
pass # unpacking failed, old hg
+def get_latest_normalizable_tag(root):
+ # Gets all tags containing a '.' (see #229) from oldest to newest
+ cmd = ['hg', 'log',
+ '-r', "ancestors(.) and tag('re:\.')", '--template', "{tags}\n"]
+ outlines = do(cmd, root).split()
+ if not outlines:
+ return 'null'
+ tag = outlines[-1].split()[-1]
+ return tag
+
+
+def get_graph_distance(root, rev1, rev2='.'):
+ cmd = ['hg', 'log', '-q', '-r', '%s::%s' % (rev1, rev2)]
+ out = do(cmd, root)
+ return len(out.strip().splitlines()) - 1
+
+
def archival_to_version(data):
trace('data', data)
node = data.get('node', '')[:12]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/setuptools_scm/version.py
new/setuptools_scm-2.0.0/setuptools_scm/version.py
--- old/setuptools_scm-1.17.0/setuptools_scm/version.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm/version.py 2018-04-10
10:27:36.000000000 +0200
@@ -2,13 +2,23 @@
import datetime
import warnings
import re
+from itertools import chain, repeat, islice
+
from .utils import trace
from pkg_resources import iter_entry_points
-from distutils import log
from pkg_resources import parse_version
+SEMVER_MINOR = 2
+SEMVER_PATCH = 3
+SEMVER_LEN = 3
+
+
+def _pad(iterable, size, padding=None):
+ padded = chain(iterable, repeat(padding))
+ return list(islice(padded, size))
+
def _get_version_class():
modern_version = parse_version("1.0")
@@ -21,10 +31,17 @@
VERSION_CLASS = _get_version_class()
+class SetuptoolsOutdatedWarning(Warning):
+ pass
+
+
+# append so integrators can disable the warning
+warnings.simplefilter('error', SetuptoolsOutdatedWarning, append=1)
+
+
def _warn_if_setuptools_outdated():
if VERSION_CLASS is None:
- log.warn("your setuptools is too old (<12)")
- log.warn("setuptools_scm functionality is degraded")
+ warnings.warn("your setuptools is too old (<12)",
SetuptoolsOutdatedWarning)
def callable_or_entrypoint(group, callable_or_name):
@@ -64,6 +81,7 @@
def __init__(self, tag_version,
distance=None, node=None, dirty=False,
preformatted=False,
+ branch=None,
**kw):
if kw:
trace("unknown args", kw)
@@ -76,6 +94,7 @@
self.extra = kw
self.dirty = dirty
self.preformatted = preformatted
+ self.branch = branch
@property
def exact(self):
@@ -84,16 +103,22 @@
def __repr__(self):
return self.format_with(
'<ScmVersion {tag} d={distance}'
- ' n={node} d={dirty} x={extra}>')
+ ' n={node} d={dirty} b={branch} x={extra}>')
- def format_with(self, fmt):
+ def format_with(self, fmt, **kw):
return fmt.format(
time=self.time,
tag=self.tag, distance=self.distance,
- node=self.node, dirty=self.dirty, extra=self.extra)
+ node=self.node, dirty=self.dirty, extra=self.extra,
+ branch=self.branch, **kw)
+
+ def format_choice(self, clean_format, dirty_format, **kw):
+ return self.format_with(
+ dirty_format if self.dirty else clean_format, **kw)
- def format_choice(self, clean_format, dirty_format):
- return self.format_with(dirty_format if self.dirty else clean_format)
+ def format_next_version(self, guess_next, fmt="{guessed}.dev{distance}",
**kw):
+ guessed = guess_next(self.tag, **kw)
+ return self.format_with(fmt, guessed=guessed)
def _parse_tag(tag, preformatted):
@@ -111,11 +136,9 @@
return ScmVersion(tag, distance, node, dirty, preformatted, **kw)
-def guess_next_version(tag_version, distance):
+def guess_next_version(tag_version):
version = _strip_local(str(tag_version))
- bumped = _bump_dev(version) or _bump_regex(version)
- suffix = '.dev%s' % distance
- return bumped + suffix
+ return _bump_dev(version) or _bump_regex(version)
def _strip_local(version_string):
@@ -133,7 +156,7 @@
def _bump_regex(version):
- prefix, tail = re.match('(.*?)(\d+)$', version).groups()
+ prefix, tail = re.match(r'(.*?)(\d+)$', version).groups()
return '%s%d' % (prefix, int(tail) + 1)
@@ -141,28 +164,49 @@
if version.exact:
return version.format_with("{tag}")
else:
- return guess_next_version(version.tag, version.distance)
+ return version.format_next_version(guess_next_version)
-def get_local_node_and_date(version):
- if version.exact or version.node is None:
- return version.format_choice("", "+d{time:%Y%m%d}")
+def guess_next_simple_semver(version, retain, increment=True):
+ parts = map(int, str(version).split('.'))
+ parts = _pad(parts, retain, 0)
+ if increment:
+ parts[-1] += 1
+ parts = _pad(parts, SEMVER_LEN, 0)
+ return '.'.join(map(str, parts))
+
+
+def simplified_semver_version(version):
+ if version.exact:
+ return guess_next_simple_semver(
+ version.tag, retain=SEMVER_LEN, increment=False)
else:
- return version.format_choice("+{node}", "+{node}.d{time:%Y%m%d}")
+ if version.branch is not None and 'feature' in version.branch:
+ return version.format_next_version(
+ guess_next_simple_semver, retain=SEMVER_MINOR)
+ else:
+ return version.format_next_version(
+ guess_next_simple_semver, retain=SEMVER_PATCH)
-def get_local_node_and_timestamp(version, fmt='%Y%m%d%H%M%S'):
+def _format_local_with_time(version, time_format):
+
if version.exact or version.node is None:
- return version.format_choice("",
- "+d{time:"
- + "{fmt}".format(fmt=fmt)
- + "}")
+ return version.format_choice(
+ "", "+d{time:{time_format}}",
+ time_format=time_format)
else:
- return version.format_choice("+{node}",
- "+{node}"
- + ".d{time:"
- + "{fmt}".format(fmt=fmt)
- + "}")
+ return version.format_choice(
+ "+{node}", "+{node}.d{time:{time_format}}",
+ time_format=time_format)
+
+
+def get_local_node_and_date(version):
+ return _format_local_with_time(version, time_format="%Y%m%d")
+
+
+def get_local_node_and_timestamp(version, fmt='%Y%m%d%H%M%S'):
+ return _format_local_with_time(version, time_format=fmt)
def get_local_dirty_tag(version):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.17.0/setuptools_scm.egg-info/PKG-INFO
new/setuptools_scm-2.0.0/setuptools_scm.egg-info/PKG-INFO
--- old/setuptools_scm-1.17.0/setuptools_scm.egg-info/PKG-INFO 2018-03-20
11:15:44.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm.egg-info/PKG-INFO 2018-04-10
10:28:15.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: setuptools-scm
-Version: 1.17.0
+Version: 2.0.0
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -293,9 +293,9 @@
.. code:: python
def myversion():
- from setuptools_scm.version import dirty_tag
+ from setuptools_scm.version import get_local_dirty_tag
def clean_scheme(version):
- return dirty_tag(version) if version.dirty else '+clean'
+ return get_local_dirty_tag(version) if version.dirty else
'+clean'
return {'local_scheme': clean_scheme}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.17.0/setuptools_scm.egg-info/SOURCES.txt
new/setuptools_scm-2.0.0/setuptools_scm.egg-info/SOURCES.txt
--- old/setuptools_scm-1.17.0/setuptools_scm.egg-info/SOURCES.txt
2018-03-20 11:15:44.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm.egg-info/SOURCES.txt
2018-04-10 10:28:15.000000000 +0200
@@ -2,9 +2,8 @@
.travis.yml
CHANGELOG.rst
LICENSE
+MANIFEST.in
README.rst
-appveyor.yml
-default.nix
setup.cfg
setup.py
tox.ini
@@ -31,4 +30,6 @@
testing/test_git.py
testing/test_main.py
testing/test_mercurial.py
-testing/test_regressions.py
\ No newline at end of file
+testing/test_regressions.py
+testing/test_setuptools_support.py
+testing/test_version.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.17.0/setuptools_scm.egg-info/entry_points.txt
new/setuptools_scm-2.0.0/setuptools_scm.egg-info/entry_points.txt
--- old/setuptools_scm-1.17.0/setuptools_scm.egg-info/entry_points.txt
2018-03-20 11:15:44.000000000 +0100
+++ new/setuptools_scm-2.0.0/setuptools_scm.egg-info/entry_points.txt
2018-04-10 10:28:15.000000000 +0200
@@ -21,6 +21,7 @@
[setuptools_scm.version_scheme]
guess-next-dev = setuptools_scm.version:guess_next_dev_version
post-release = setuptools_scm.version:postrelease_version
+ python-simplified-semver =
setuptools_scm.version:simplified_semver_version
[setuptools_scm.local_scheme]
node-and-date = setuptools_scm.version:get_local_node_and_date
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/testing/test_functions.py
new/setuptools_scm-2.0.0/testing/test_functions.py
--- old/setuptools_scm-1.17.0/testing/test_functions.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/testing/test_functions.py 2018-04-10
10:27:36.000000000 +0200
@@ -14,14 +14,14 @@
@pytest.mark.parametrize('tag, expected', [
- ('1.1', '1.2.dev0'),
- ('1.2.dev', '1.2.dev0'),
- ('1.1a2', '1.1a3.dev0'),
- ('23.24.post2+deadbeef', '23.24.post3.dev0'),
- ])
+ ('1.1', '1.2'),
+ ('1.2.dev', '1.2'),
+ ('1.1a2', '1.1a3'),
+ ('23.24.post2+deadbeef', '23.24.post3'),
+])
def test_next_tag(tag, expected):
version = pkg_resources.parse_version(tag)
- assert guess_next_version(version, 0) == expected
+ assert guess_next_version(version) == expected
VERSIONS = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/testing/test_git.py
new/setuptools_scm-2.0.0/testing/test_git.py
--- old/setuptools_scm-1.17.0/testing/test_git.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/testing/test_git.py 2018-04-10
10:27:36.000000000 +0200
@@ -99,7 +99,7 @@
def test_find_files_stop_at_root_git(wd):
wd.commit_testfile()
wd.cwd.ensure('project/setup.cfg')
- assert integration.find_files(str(wd.cwd/'project')) == []
+ assert integration.find_files(str(wd.cwd / 'project')) == []
@pytest.mark.issue(128)
@@ -133,3 +133,13 @@
wd('git add foobar')
wd.commit()
assert integration.find_files(str(wd.cwd)) == ['foobar/test1.txt']
+
+
+def test_git_feature_branch_increments_major(wd):
+ wd.commit_testfile()
+ wd("git tag 1.0.0")
+ wd.commit_testfile()
+ assert
wd.get_version(version_scheme="python-simplified-semver").startswith("1.0.1")
+ wd("git checkout -b feature/fun")
+ wd.commit_testfile()
+ assert
wd.get_version(version_scheme="python-simplified-semver").startswith("1.1.0")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/testing/test_mercurial.py
new/setuptools_scm-2.0.0/testing/test_mercurial.py
--- old/setuptools_scm-1.17.0/testing/test_mercurial.py 2018-03-20
11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/testing/test_mercurial.py 2018-04-10
10:27:36.000000000 +0200
@@ -18,10 +18,10 @@
'1.1.dev3+h000000000000': {
'latesttag': '1.0',
'latesttagdistance': '3',
- 'node': '0'*20,
+ 'node': '0' * 20,
},
'0.0': {
- 'node': '0'*20,
+ 'node': '0' * 20,
},
'1.2.2': {'tag': 'release-1.2.2'},
'1.2.2.dev0': {'tag': 'release-1.2.2.dev'},
@@ -41,7 +41,7 @@
def test_find_files_stop_at_root_hg(wd):
wd.commit_testfile()
wd.cwd.ensure('project/setup.cfg')
- assert integration.find_files(str(wd.cwd/'project')) == []
+ assert integration.find_files(str(wd.cwd / 'project')) == []
# XXX: better tests for tag prefixes
@@ -114,7 +114,7 @@
def version_1_0(wd):
wd('hg branch default')
wd.commit_testfile()
- wd('hg tag 1.0 -u test -d "0 0"')
+ wd('hg tag 1.0.0 -u test -d "0 0"')
return wd
@@ -131,14 +131,14 @@
@pytest.mark.usefixtures("pre_merge_commit_after_tag")
def test_version_bump_before_merge_commit(wd):
- assert wd.version.startswith('1.1.dev1+')
+ assert wd.version.startswith('1.0.1.dev1+')
@pytest.mark.issue(219)
@pytest.mark.usefixtures("pre_merge_commit_after_tag")
def test_version_bump_from_merge_commit(wd):
wd.commit()
- assert wd.version.startswith('1.1.dev3+') # issue 219
+ assert wd.version.startswith('1.0.1.dev3+') # issue 219
@pytest.mark.usefixtures("version_1_0")
@@ -149,6 +149,25 @@
tagfile.write('0 0\n')
wd.write('branchfile', 'branchtext')
wd(wd.add_command)
- assert wd.version.startswith('1.1.dev1+') # bump from dirty version
+ assert wd.version.startswith('1.0.1.dev1+') # bump from dirty version
wd.commit() # commits both the testfile _and_ .hgtags
- assert wd.version.startswith('1.1.dev2+')
+ assert wd.version.startswith('1.0.1.dev2+')
+
+
[email protected](229)
[email protected]("version_1_0")
+def test_latest_tag_detection(wd):
+ """ Tests that tags not containing a "." are ignored, the same as for git.
+ Note that will be superceded by the fix for pypa/setuptools_scm/issues/235
+ """
+ wd('hg tag some-random-tag')
+ assert wd.version == '1.0.0'
+
+
[email protected]("version_1_0")
+def test_feature_branch_increments_major(wd):
+
+ wd.commit_testfile()
+ assert
wd.get_version(version_scheme="python-simplified-semver").startswith("1.0.1")
+ wd("hg branch feature/fun")
+ assert
wd.get_version(version_scheme="python-simplified-semver").startswith("1.1.0")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.17.0/testing/test_setuptools_support.py
new/setuptools_scm-2.0.0/testing/test_setuptools_support.py
--- old/setuptools_scm-1.17.0/testing/test_setuptools_support.py
1970-01-01 01:00:00.000000000 +0100
+++ new/setuptools_scm-2.0.0/testing/test_setuptools_support.py 2018-04-10
10:27:36.000000000 +0200
@@ -0,0 +1,60 @@
+"""
+integration tests that check setuptools version support
+"""
+import sys
+import os
+import subprocess
+import pytest
+pytestmark = pytest.mark.skipif(
+ "sys.version_info >= (3,6,0)",
+ reason="integration with old versions no longer needed on py3.6+")
+
+
[email protected](scope='session')
+def get_setuptools_packagedir(request):
+ targets = request.config.cache.makedir('setuptools_installs')
+
+ def makeinstall(version):
+ target = targets.ensure(version, dir=1)
+ subprocess.check_call([
+ sys.executable, '-m', 'pip',
+ 'install', '--no-binary', 'setuptools', 'setuptools==' + version,
+ '-t', str(target),
+ ])
+ return target
+ return makeinstall
+
+
+SCRIPT = """
+import setuptools
+print(setuptools.__version__)
+import setuptools_scm.version
+from setuptools_scm.__main__ import main
+main()
+"""
+
+
+def check(packagedir, **env):
+ subprocess.check_call(
+ [sys.executable, '-c', SCRIPT],
+ env=dict(os.environ, PYTHONPATH=".:" + str(packagedir), **env))
+
+
+def test_old_setuptools_fails(get_setuptools_packagedir):
+ packagedir = get_setuptools_packagedir("0.9.8")
+ with pytest.raises(subprocess.CalledProcessError):
+ check(packagedir)
+
+
+def test_old_setuptools_allows_with_warnings(get_setuptools_packagedir):
+
+ packagedir = get_setuptools_packagedir("0.9.8")
+ # filter using warning since in the early python startup
+ check(
+ packagedir,
+ PYTHONWARNINGS="once::Warning")
+
+
+def test_distlib_setuptools_works(get_setuptools_packagedir):
+ packagedir = get_setuptools_packagedir("12.0.1")
+ check(packagedir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/testing/test_version.py
new/setuptools_scm-2.0.0/testing/test_version.py
--- old/setuptools_scm-1.17.0/testing/test_version.py 1970-01-01
01:00:00.000000000 +0100
+++ new/setuptools_scm-2.0.0/testing/test_version.py 2018-04-10
10:27:36.000000000 +0200
@@ -0,0 +1,23 @@
+import pytest
+from setuptools_scm.version import meta, simplified_semver_version
+
+
[email protected]('version, expected_next', [
+ pytest.param(meta("1.0.0"), "1.0.0", id='exact'),
+
+ pytest.param(meta("1.0"), "1.0.0", id='short_tag'),
+ pytest.param(meta("1.0.0", distance=2, branch='default'), "1.0.1.dev2",
+ id='normal_branch'),
+
+ pytest.param(meta("1.0", distance=2, branch='default'), "1.0.1.dev2",
+ id='normal_branch_short_tag'),
+ pytest.param(meta("1.0.0", distance=2, branch='feature'), "1.1.0.dev2",
+ id='feature_branch'),
+ pytest.param(meta("1.0", distance=2, branch='feature'), "1.1.0.dev2",
+ id='feature_branch_short_tag'),
+ pytest.param(meta("1.0.0", distance=2, branch='features/test'),
"1.1.0.dev2",
+ id='feature_in_branch'),
+])
+def test_next_semver(version, expected_next):
+ computed = simplified_semver_version(version)
+ assert computed == expected_next
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.17.0/tox.ini
new/setuptools_scm-2.0.0/tox.ini
--- old/setuptools_scm-1.17.0/tox.ini 2018-03-20 11:15:19.000000000 +0100
+++ new/setuptools_scm-2.0.0/tox.ini 2018-04-10 10:27:36.000000000 +0200
@@ -3,7 +3,15 @@
[flake8]
max-complexity = 10
-
+max-line-length = 88
+exclude=
+ .git,
+ .tox,
+ .env,
+ .venv,
+ .pytest_cache,
+ __pycache__,
+ ./setuptools_scm/win_py31_compat.py
[testenv]
usedevelop=True
@@ -22,11 +30,14 @@
[testenv:check_readme]
skip_install=True
+setenv = SETUPTOOLS_SCM_PRETEND_VERSION=2.0
deps=
readme
+ check-manifest
commands=
python setup.py check -r -s
rst2html.py README.rst {envlogdir}/README.html --strict []
+ check-manifest
[testenv:upload]
deps=