Skip to content

Commit 7cd319b

Browse files
Merge pull request #267 from pypa/other
assorted fixes
2 parents 3469893 + d297ecd commit 7cd319b

File tree

6 files changed

+29
-33
lines changed

6 files changed

+29
-33
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ v3.0.0
33

44
* introduce pre-commit and use black
55
* print the origin module to help testing
6-
* switch to src layout
6+
* switch to src layout (breaking change)
7+
* no longer alias tag and parsed_version in order to support understanding a version parse failure
8+
* require parse results to be ScmVersion or None (breaking change)
79

810
v2.1.0
911
======

src/setuptools_scm/__init__.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
"""
55
import os
66
import sys
7-
import warnings
87

98
from .utils import trace
10-
from .version import format_version, meta, ScmVersion
9+
from .version import format_version, meta
1110
from .discover import iter_matching_entrypoints
1211

1312
PRETEND_KEY = "SETUPTOOLS_SCM_PRETEND_VERSION"
@@ -46,15 +45,14 @@ def dump_version(root, version, write_to, template=None):
4645
ext = os.path.splitext(target)[1]
4746
template = template or TEMPLATES.get(ext)
4847

49-
if template is not None:
50-
dump = template.format(version=version)
51-
else:
48+
if template is None:
5249
raise ValueError(
53-
("bad file format: '%s' (of %s) \n" "only *.txt and *.py are supported")
54-
% (os.path.splitext(target)[1], target)
50+
"bad file format: '{}' (of {}) \nonly *.txt and *.py are supported".format(
51+
os.path.splitext(target)[1], target
52+
)
5553
)
5654
with open(target, "w") as fp:
57-
fp.write(dump)
55+
fp.write(template.format(version=version))
5856

5957

6058
def _do_parse(root, parse):
@@ -67,13 +65,9 @@ def _do_parse(root, parse):
6765
if parse:
6866
parse_result = parse(root)
6967
if isinstance(parse_result, string_types):
70-
warnings.warn(
71-
"version parse result was a string\n" "please return a parsed version",
72-
category=DeprecationWarning,
68+
raise TypeError(
69+
"version parse result was a string\nplease return a parsed version"
7370
)
74-
# we use ScmVersion here in order to keep legacy code working
75-
# for 2.0 we should use meta
76-
parse_result = ScmVersion(parse_result)
7771
version = parse_result or _version_from_entrypoint(
7872
root, "setuptools_scm.parse_scm_fallback"
7973
)

src/setuptools_scm/version.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from pkg_resources import iter_entry_points
1010

11-
from pkg_resources import parse_version
11+
from pkg_resources import parse_version as pkg_parse_version
1212

1313
SEMVER_MINOR = 2
1414
SEMVER_PATCH = 3
@@ -21,7 +21,7 @@ def _pad(iterable, size, padding=None):
2121

2222

2323
def _get_version_class():
24-
modern_version = parse_version("1.0")
24+
modern_version = pkg_parse_version("1.0")
2525
if isinstance(modern_version, tuple):
2626
return None
2727
else:
@@ -36,7 +36,7 @@ class SetuptoolsOutdatedWarning(Warning):
3636

3737

3838
# append so integrators can disable the warning
39-
warnings.simplefilter("error", SetuptoolsOutdatedWarning, append=1)
39+
warnings.simplefilter("error", SetuptoolsOutdatedWarning, append=True)
4040

4141

4242
def _warn_if_setuptools_outdated():
@@ -66,7 +66,7 @@ def tag_to_version(tag):
6666
version = tag.rsplit("-", 1)[-1].lstrip("v")
6767
if VERSION_CLASS is None:
6868
return version
69-
version = parse_version(version)
69+
version = pkg_parse_version(version)
7070
trace("version", repr(version))
7171
if isinstance(version, VERSION_CLASS):
7272
return version
@@ -140,10 +140,10 @@ def _parse_tag(tag, preformatted):
140140

141141

142142
def meta(tag, distance=None, dirty=False, node=None, preformatted=False, **kw):
143-
tag = _parse_tag(tag, preformatted)
144-
trace("version", tag)
145-
assert tag is not None, "cant parse version %s" % tag
146-
return ScmVersion(tag, distance, node, dirty, preformatted, **kw)
143+
parsed_version = _parse_tag(tag, preformatted)
144+
trace("version", tag, "->", parsed_version)
145+
assert parsed_version is not None, "cant parse version %s" % tag
146+
return ScmVersion(parsed_version, distance, node, dirty, preformatted, **kw)
147147

148148

149149
def guess_next_version(tag_version):

testing/test_basic_api.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import setuptools_scm
66
from setuptools_scm import dump_version
7-
87
from setuptools_scm.utils import data_from_mime, do
98

109

@@ -77,13 +76,10 @@ def test_dump_version(tmpdir):
7776
ast.parse(content)
7877

7978

80-
def test_parse_plain(recwarn):
79+
def test_parse_plain_fails(recwarn):
8180

8281
def parse(root):
8382
return "tricked you"
8483

85-
assert setuptools_scm.get_version(parse=parse) == "tricked you"
86-
assert (
87-
str(recwarn.pop().message)
88-
== "version parse result was a string\nplease return a parsed version"
89-
)
84+
with pytest.raises(TypeError):
85+
setuptools_scm.get_version(parse=parse)

testing/test_setuptools_support.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ def makeinstall(version):
5454

5555
def check(packagedir, expected_version, **env):
5656

57-
old_pythonpath = os.environ.get('PYTHONPATH')
57+
old_pythonpath = os.environ.get("PYTHONPATH")
5858
if old_pythonpath:
59-
pythonpath = '{}:{}'.format(old_pythonpath, packagedir)
59+
pythonpath = "{}:{}".format(old_pythonpath, packagedir)
6060
else:
6161
pythonpath = str(packagedir)
6262
subprocess.check_call(

tox.ini

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tox]
2-
envlist=py{27,34,35,36,37}-test,flake8,check_readme
2+
envlist=py{27,34,35,36,37}-test,flake8,check_readme,py{27,36}-selftest
33

44
[flake8]
55
max-complexity = 10
@@ -15,10 +15,14 @@ exclude=
1515

1616
[testenv]
1717
usedevelop=True
18+
skip_install=
19+
selfcheck: True
20+
test: False
1821
deps=
1922
pytest
2023
commands=
2124
test: py.test []
25+
selfcheck: python setup.py --version
2226

2327
[testenv:flake8]
2428
skip_install=True

0 commit comments

Comments
 (0)