Skip to content

Commit cdda768

Browse files
troughly pass all versions trough parsed versions
1 parent 1cd3958 commit cdda768

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

CHANGELOG.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
v1.13.0
1+
v2.0.0
22
========
33

44
* fix regression caused by the fix of #101
55
* assert types for version dumping
6+
* strictly pass all versions trough parsed version metadata
67

78
v1.12.0
89
=======

setuptools_scm/__init__.py

Lines changed: 15 additions & 10 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'
@@ -60,10 +61,17 @@ def dump_version(root, version, write_to, template=None):
6061
def _do_parse(root, parse):
6162
pretended = os.environ.get(PRETEND_KEY)
6263
if pretended:
63-
return pretended
64+
return meta(pretended)
6465

6566
if parse:
66-
version = parse(root) or _version_from_entrypoint(
67+
parse_result = parse(root)
68+
if isinstance(parse_result, string_types):
69+
warnings.warn(
70+
"version parse result was a string\n"
71+
"please return a parsed version",
72+
category=DeprecationWarning)
73+
parse_result = ScmVersion(parse_result)
74+
version = parse_result or _version_from_entrypoint(
6775
root, 'setuptools_scm.parse_scm_fallback')
6876
else:
6977
# include fallbacks after dropping them from the main entrypoint
@@ -105,13 +113,10 @@ def get_version(root='.',
105113
parsed_version = _do_parse(root, parse)
106114

107115
if parsed_version:
108-
if isinstance(parsed_version, string_types):
109-
version_string = parsed_version
110-
else:
111-
version_string = format_version(
112-
parsed_version,
113-
version_scheme=version_scheme,
114-
local_scheme=local_scheme)
116+
version_string = format_version(
117+
parsed_version,
118+
version_scheme=version_scheme,
119+
local_scheme=local_scheme)
115120
dump_version(
116121
root=root,
117122
version=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'

0 commit comments

Comments
 (0)