Skip to content

Commit 75897ba

Browse files
Merge pull request #168 from RonnyPfannschmidt/fix-167
try to fix #167 by introducing a preformated flag
2 parents 00f3fbe + a9a1bd5 commit 75897ba

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

CHANGELOG.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
v1.15.5
2+
=======
3+
4+
* fix #167 by correctly respecting preformatted version metadata
5+
from PKG-INFO/EGG-INFO
6+
17
v1.15.4
28
=======
39

setuptools_scm/hacks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def parse_pkginfo(root):
1010
data = data_from_mime(pkginfo)
1111
version = data.get('Version')
1212
if version != 'UNKNOWN':
13-
return meta(version)
13+
return meta(version, preformatted=True)
1414

1515

1616
def parse_pip_egg_info(root):

setuptools_scm/version.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ def tags_to_versions(tags):
5555
class ScmVersion(object):
5656
def __init__(self, tag_version,
5757
distance=None, node=None, dirty=False,
58+
preformatted=False,
5859
**kw):
60+
if kw:
61+
trace("unknown args", kw)
5962
self.tag = tag_version
6063
if dirty and distance is None:
6164
distance = 0
@@ -64,6 +67,7 @@ def __init__(self, tag_version,
6467
self.time = datetime.datetime.now()
6568
self.extra = kw
6669
self.dirty = dirty
70+
self.preformatted = preformatted
6771

6872
@property
6973
def exact(self):
@@ -84,13 +88,19 @@ def format_choice(self, clean_format, dirty_format):
8488
return self.format_with(dirty_format if self.dirty else clean_format)
8589

8690

87-
def meta(tag, distance=None, dirty=False, node=None, **kw):
91+
def _parse_tag(tag, preformatted):
92+
if preformatted:
93+
return tag
8894
if SetuptoolsVersion is None or not isinstance(tag, SetuptoolsVersion):
8995
tag = tag_to_version(tag)
90-
trace('version', tag)
96+
return tag
97+
9198

99+
def meta(tag, distance=None, dirty=False, node=None, preformatted=False, **kw):
100+
tag = _parse_tag(tag, preformatted)
101+
trace('version', tag)
92102
assert tag is not None, 'cant parse version %s' % tag
93-
return ScmVersion(tag, distance, node, dirty, **kw)
103+
return ScmVersion(tag, distance, node, dirty, preformatted, **kw)
94104

95105

96106
def guess_next_version(tag_version, distance):
@@ -147,6 +157,8 @@ def postrelease_version(version):
147157
def format_version(version, **config):
148158
trace('scm version', version)
149159
trace('config', config)
160+
if version.preformatted:
161+
return version.tag
150162
version_scheme = callable_or_entrypoint(
151163
'setuptools_scm.version_scheme', config['version_scheme'])
152164
local_scheme = callable_or_entrypoint(

testing/conftest.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,18 @@ def commit_testfile(self, reason=None):
5252
self(self.add_command)
5353
self.commit(reason=reason)
5454

55-
@property
56-
def version(self):
55+
def get_version(self, **kw):
5756
__tracebackhide__ = True
5857
from setuptools_scm import get_version
59-
version = get_version(root=str(self.cwd))
58+
version = get_version(root=str(self.cwd), **kw)
6059
print(version)
6160
return version
6261

62+
@property
63+
def version(self):
64+
__tracebackhide__ = True
65+
return self.get_version()
66+
6367

6468
@pytest.yield_fixture(autouse=True)
6569
def debug_mode():

testing/test_basic_api.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ def test_version_from_pkginfo(wd):
3030
wd.write('PKG-INFO', 'Version: 0.1')
3131
assert wd.version == '0.1'
3232

33+
# replicate issue 167
34+
assert wd.get_version(version_scheme="1.{0.distance}.0".format) == '0.1'
35+
3336

3437
def assert_root(monkeypatch, expected_root):
3538
"""

0 commit comments

Comments
 (0)