Skip to content

Commit a91ac1d

Browse files
Merge pull request #127 from pypa/issue-126
Discard local parts when guessing next version.
2 parents b84d2a4 + 4c8d3d1 commit a91ac1d

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
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.1
2+
=======
3+
4+
* fix issue #126: the local part of any tags is discarded
5+
when guessing new versions
6+
17
v1.15.0
28
=======
39

setuptools_scm/version.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,29 @@ def meta(tag, distance=None, dirty=False, node=None, **kw):
8888

8989

9090
def guess_next_version(tag_version, distance):
91-
version = str(tag_version)
92-
if '.dev' in version:
93-
prefix, tail = version.rsplit('.dev', 1)
94-
assert tail == '0', 'own dev numbers are unsupported'
95-
return '%s.dev%s' % (prefix, distance)
96-
else:
97-
prefix, tail = re.match('(.*?)(\d+)$', version).groups()
98-
return '%s%d.dev%s' % (prefix, int(tail) + 1, distance)
91+
version = _strip_local(str(tag_version))
92+
bumped = _bump_dev(version) or _bump_regex(version)
93+
suffix = '.dev%s' % distance
94+
return bumped + suffix
95+
96+
97+
def _strip_local(version_string):
98+
public, sep, local = version_string.partition('+')
99+
return public
100+
101+
102+
def _bump_dev(version):
103+
if '.dev' not in version:
104+
return
105+
106+
prefix, tail = version.rsplit('.dev', 1)
107+
assert tail == '0', 'own dev numbers are unsupported'
108+
return prefix
109+
110+
111+
def _bump_regex(version):
112+
prefix, tail = re.match('(.*?)(\d+)$', version).groups()
113+
return '%s%d' % (prefix, int(tail) + 1)
99114

100115

101116
def guess_next_dev_version(version):

testing/test_functions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def __format__(self, *k):
1414
('1.1', '1.2.dev0'),
1515
('1.2.dev', '1.2.dev0'),
1616
('1.1a2', '1.1a3.dev0'),
17+
('23.24.post2+deadbeef', '23.24.post3.dev0'),
1718
])
1819
def test_next_tag(tag, expected):
1920
version = pkg_resources.parse_version(tag)

0 commit comments

Comments
 (0)