Skip to content

Commit 8370c6c

Browse files
resuffle version formatting, remove distance knowlege from guessing of the next version
1 parent 3f9ebaf commit 8370c6c

File tree

2 files changed

+26
-19
lines changed

2 files changed

+26
-19
lines changed

setuptools_scm/version.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
from distutils import log
1212
from pkg_resources import parse_version
1313

14+
SEMVER_MINOR = 2
15+
SEMVER_PATCH = 3
16+
SEMVER_LEN = 3
17+
1418

1519
def _pad(iterable, size, padding=None):
1620
padded = chain(iterable, repeat(padding))
@@ -106,6 +110,10 @@ def format_choice(self, clean_format, dirty_format, **kw):
106110
return self.format_with(
107111
dirty_format if self.dirty else clean_format, **kw)
108112

113+
def format_next_version(self, guess_next, fmt="{guessed}.dev{distance}", **kw):
114+
guessed = guess_next(self.tag, **kw)
115+
return self.format_with(fmt, guessed=guessed)
116+
109117

110118
def _parse_tag(tag, preformatted):
111119
if preformatted:
@@ -122,11 +130,9 @@ def meta(tag, distance=None, dirty=False, node=None, preformatted=False, **kw):
122130
return ScmVersion(tag, distance, node, dirty, preformatted, **kw)
123131

124132

125-
def guess_next_version(tag_version, distance):
133+
def guess_next_version(tag_version):
126134
version = _strip_local(str(tag_version))
127-
bumped = _bump_dev(version) or _bump_regex(version)
128-
suffix = '.dev%s' % distance
129-
return bumped + suffix
135+
return _bump_dev(version) or _bump_regex(version)
130136

131137

132138
def _strip_local(version_string):
@@ -152,28 +158,29 @@ def guess_next_dev_version(version):
152158
if version.exact:
153159
return version.format_with("{tag}")
154160
else:
155-
return guess_next_version(version.tag, version.distance)
161+
return version.format_next_version(guess_next_version)
156162

157163

158-
def guess_next_simple_semver(version, distance, retain, increment=True):
164+
def guess_next_simple_semver(version, retain, increment=True):
159165
parts = map(int, str(version).split('.'))
160-
parts = _pad(parts, size=retain, padding=0)
166+
parts = _pad(parts, retain, 0)
161167
if increment:
162168
parts[-1] += 1
163-
parts = _pad(parts, 3, 0)
164-
if distance:
165-
parts.append("dev" + str(distance))
169+
parts = _pad(parts, SEMVER_LEN, 0)
166170
return '.'.join(map(str, parts))
167171

168172

169173
def simplified_semver_version(version):
170174
if version.exact:
171-
return guess_next_simple_semver(version.tag, 0, 3, increment=False)
175+
return guess_next_simple_semver(
176+
version.tag, retain=SEMVER_LEN, increment=False)
172177
else:
173178
if version.branch is not None and 'feature' in version.branch:
174-
return guess_next_simple_semver(version.tag, version.distance, retain=2)
179+
return version.format_next_version(
180+
guess_next_simple_semver, retain=SEMVER_MINOR)
175181
else:
176-
return guess_next_simple_semver(version.tag, version.distance, retain=3)
182+
return version.format_next_version(
183+
guess_next_simple_semver, retain=SEMVER_PATCH)
177184

178185

179186
def _format_local_with_time(version, time_format):

testing/test_functions.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ def __format__(self, *k):
1414

1515

1616
@pytest.mark.parametrize('tag, expected', [
17-
('1.1', '1.2.dev0'),
18-
('1.2.dev', '1.2.dev0'),
19-
('1.1a2', '1.1a3.dev0'),
20-
('23.24.post2+deadbeef', '23.24.post3.dev0'),
21-
])
17+
('1.1', '1.2'),
18+
('1.2.dev', '1.2'),
19+
('1.1a2', '1.1a3'),
20+
('23.24.post2+deadbeef', '23.24.post3'),
21+
])
2222
def test_next_tag(tag, expected):
2323
version = pkg_resources.parse_version(tag)
24-
assert guess_next_version(version, 0) == expected
24+
assert guess_next_version(version) == expected
2525

2626

2727
VERSIONS = {

0 commit comments

Comments
 (0)