Skip to content

Commit b0a9576

Browse files
Merge pull request #104 from RonnyPfannschmidt/master
fix issue #103 - reorder version dumping
2 parents f9ca54d + 6e6c18e commit b0a9576

File tree

5 files changed

+38
-16
lines changed

5 files changed

+38
-16
lines changed

CHANGELOG.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v2.0.0
2+
========
3+
4+
* fix regression caused by the fix of #101
5+
* assert types for version dumping
6+
* strictly pass all versions trough parsed version metadata
7+
18
v1.12.0
29
=======
310

setuptools_scm/__init__.py

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

89
from .utils import trace
9-
from .version import format_version
10+
from .version import format_version, meta, ScmVersion
1011
from .discover import find_matching_entrypoint
1112

1213
PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
@@ -37,6 +38,7 @@ def _version_from_entrypoint(root, entrypoint):
3738

3839

3940
def dump_version(root, version, write_to, template=None):
41+
assert isinstance(version, string_types)
4042
if not write_to:
4143
return
4244
target = os.path.normpath(os.path.join(root, write_to))
@@ -59,10 +61,21 @@ def dump_version(root, version, write_to, template=None):
5961
def _do_parse(root, parse):
6062
pretended = os.environ.get(PRETEND_KEY)
6163
if pretended:
62-
return pretended
64+
# we use meta here since the pretended version
65+
# must adhere to the pep to begin with
66+
return meta(pretended)
6367

6468
if parse:
65-
version = parse(root) or _version_from_entrypoint(
69+
parse_result = parse(root)
70+
if isinstance(parse_result, string_types):
71+
warnings.warn(
72+
"version parse result was a string\n"
73+
"please return a parsed version",
74+
category=DeprecationWarning)
75+
# we use ScmVersion here in order to keep legacy code working
76+
# for 2.0 we should use meta
77+
parse_result = ScmVersion(parse_result)
78+
version = parse_result or _version_from_entrypoint(
6679
root, 'setuptools_scm.parse_scm_fallback')
6780
else:
6881
# include fallbacks after dropping them from the main entrypoint
@@ -101,18 +114,17 @@ def get_version(root='.',
101114
root = os.path.abspath(root)
102115
trace('root', repr(root))
103116

104-
version = _do_parse(root, parse)
117+
parsed_version = _do_parse(root, parse)
105118

106-
if version:
119+
if parsed_version:
120+
version_string = format_version(
121+
parsed_version,
122+
version_scheme=version_scheme,
123+
local_scheme=local_scheme)
107124
dump_version(
108125
root=root,
109-
version=version,
126+
version=version_string,
110127
write_to=write_to,
111128
template=write_to_template)
112-
if isinstance(version, string_types):
113-
return version
114-
version = format_version(
115-
version,
116-
version_scheme=version_scheme,
117-
local_scheme=local_scheme)
118-
return version
129+
130+
return version_string

setuptools_scm/hacks.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
from .utils import data_from_mime, trace
3+
from .version import meta
34

45

56
def parse_pkginfo(root):
@@ -9,4 +10,4 @@ def parse_pkginfo(root):
910
data = data_from_mime(pkginfo)
1011
version = data.get('Version')
1112
if version != 'UNKNOWN':
12-
return version
13+
return meta(version)

testing/test_basic_api.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,9 @@ def test_dump_version(tmpdir):
7474
ast.parse(content)
7575

7676

77-
def test_parse_plain():
77+
def test_parse_plain(recwarn):
7878
def parse(root):
7979
return 'tricked you'
8080
assert setuptools_scm.get_version(parse=parse) == 'tricked you'
81+
assert str(recwarn.pop().message) == \
82+
'version parse result was a string\nplease return a parsed version'

testing/test_functions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_format_version(version, monkeypatch, scheme, expected):
5252

5353
def test_dump_version_doesnt_bail_on_value_error(tmpdir):
5454
write_to = "VERSION"
55-
version = VERSIONS['exact']
55+
version = str(VERSIONS['exact'].tag)
5656
with pytest.raises(ValueError) as exc_info:
5757
dump_version(tmpdir.strpath, version, write_to)
5858
assert str(exc_info.value).startswith("bad file format:")

0 commit comments

Comments
 (0)