Skip to content

Commit 51a5a01

Browse files
committed
partial deps upgrade (no functional changes) to semver lib 3.x
1 parent 2d6cce1 commit 51a5a01

File tree

6 files changed

+64
-46
lines changed

6 files changed

+64
-46
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
toml
2-
semver~=2.13
2+
semver==3.0.0.dev2
33
six

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
2-
from setuptools import setup
2+
33
from setuptools import find_packages
4+
from setuptools import setup
45

56
repository_dir = os.path.dirname(__file__)
67

src/auto_version/auto_version_tool.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ def main(
449449
if set_to:
450450
_LOG.debug("setting version directly: %s", set_to)
451451
# parse it - validation failure will raise a ValueError
452-
new_version = semver.parse_version_info(set_to)
452+
new_version = semver.Version.parse(set_to)
453453
if not lock:
454454
warnings.warn(
455455
"After setting version manually, does it need locking for a CI flow, to avoid an extraneous increment?",
@@ -463,8 +463,8 @@ def main(
463463
current_semver, last_release_semver, triggers, **overrides
464464
)
465465

466-
release_string = semver.finalize_version(str(new_version))
467-
release_version = semver.parse_version_info(release_string)
466+
release_version = new_version.finalize_version()
467+
release_string = str(release_version)
468468
if release:
469469
new_version = release_version
470470
updates[Constants.RELEASE_FIELD] = config.RELEASED_VALUE
@@ -475,7 +475,7 @@ def main(
475475
updates[Constants.VERSION_STRICT_FIELD] = release_string
476476

477477
# write out the individual parts of the version
478-
updates.update(new_version._asdict())
478+
updates.update(new_version.to_dict())
479479

480480
# only rewrite a field that the user has specified in the configuration
481481
source_file_updates = {

src/auto_version/replacement_handler.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ def __call__(self, match):
2323
"""
2424
original = match.string
2525
key = match.group(Constants.KEY_GROUP)
26-
replacement = self.params[key] # if there's nothing in the lookup, raise KeyError
26+
replacement = self.params[
27+
key
28+
] # if there's nothing in the lookup, raise KeyError
2729
start, end = match.span(Constants.VALUE_GROUP)
2830
if start < 0:
2931
# when there's a match but zero-length for the value group, we insert it at the end

src/auto_version/tests/test_autoversion.py

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import contextlib
22
import functools
3-
import imp
43
import os
54
import re
65
import shlex
76
import subprocess
7+
import textwrap
88
import unittest
99

1010
import semver
@@ -115,8 +115,21 @@ def test_increment_existing_prerelease(self):
115115
def test_end_to_end(self):
116116
self.call(bump="major")
117117
filepath = os.path.join(os.path.dirname(__file__), "example.py")
118-
example = imp.load_source("example", filepath)
119-
self.assertEqual(example.VERSION, "20.0.0-dev.1")
118+
with open(filepath) as fh:
119+
content = fh.read()
120+
self.assertEqual(
121+
content,
122+
textwrap.dedent(
123+
"""
124+
LOCK = False
125+
RELEASE = True
126+
VERSION = "20.0.0-dev.1"
127+
VERSION_AGAIN = "20.0.0-dev.1"
128+
STRICT_VERSION = "20.0.0"
129+
UNRELATED_STRING = "apple"
130+
"""
131+
).lstrip(),
132+
)
120133

121134
def test_simple_config_bump(self):
122135
old, new, updates = self.call(config_path="simple.toml", bump="minor")
@@ -164,9 +177,9 @@ def test_bump_patch(self):
164177

165178
class TestUtils(unittest.TestCase):
166179
def test_is_release(self):
167-
self.assertTrue(utils.is_release(semver.parse_version_info("1.2.3")))
168-
self.assertFalse(utils.is_release(semver.parse_version_info("1.2.3-RC.1")))
169-
self.assertFalse(utils.is_release(semver.parse_version_info("1.2.3+abc")))
180+
self.assertTrue(utils.is_release(semver.Version.parse("1.2.3")))
181+
self.assertFalse(utils.is_release(semver.Version.parse("1.2.3-RC.1")))
182+
self.assertFalse(utils.is_release(semver.Version.parse("1.2.3+abc")))
170183

171184
def test_sigfig_max(self):
172185
self.assertEqual("minor", utils.max_sigfig(["minor", "patch"]))
@@ -188,20 +201,19 @@ def test_semver_diff(self):
188201
self.assertEqual(
189202
"minor",
190203
utils.semver_diff(
191-
semver.parse_version_info("1.2.3"), semver.parse_version_info("1.3.5")
204+
semver.Version.parse("1.2.3"), semver.Version.parse("1.3.5")
192205
),
193206
)
194207
self.assertEqual(
195208
"patch",
196209
utils.semver_diff(
197-
semver.parse_version_info("1.2.3"),
198-
semver.parse_version_info("1.2.4-RC.1"),
210+
semver.Version.parse("1.2.3"), semver.Version.parse("1.2.4-RC.1")
199211
),
200212
)
201213
self.assertEqual(
202214
None,
203215
utils.semver_diff(
204-
semver.parse_version_info("1.2.3"), semver.parse_version_info("1.2.3")
216+
semver.Version.parse("1.2.3"), semver.Version.parse("1.2.3")
205217
),
206218
)
207219

@@ -215,14 +227,10 @@ def setUpClass(cls):
215227
auto_version_tool.load_config(os.path.join(test_dir, "example.toml"))
216228

217229
def check(self, previous, current, bumps, expect):
218-
previous = semver.parse_version_info(previous) if previous else None
230+
previous = semver.Version.parse(previous) if previous else None
219231
self.assertEqual(
220232
expect,
221-
str(
222-
utils.make_new_semver(
223-
semver.parse_version_info(current), previous, bumps
224-
)
225-
),
233+
str(utils.make_new_semver(semver.Version.parse(current), previous, bumps)),
226234
)
227235

228236
def test_release_bump(self):
@@ -289,7 +297,7 @@ def test_from_ancestor_version(self):
289297
{
290298
"VERSION": bumped,
291299
"VERSION_AGAIN": bumped,
292-
"STRICT_VERSION": semver.finalize_version(bumped),
300+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
293301
},
294302
)
295303

@@ -303,7 +311,7 @@ def test_from_ancestor_release(self):
303311
{
304312
"VERSION": bumped,
305313
"VERSION_AGAIN": bumped,
306-
"STRICT_VERSION": semver.finalize_version(bumped),
314+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
307315
},
308316
)
309317

@@ -315,7 +323,7 @@ def test_from_latest_of_all_time(self):
315323
{
316324
"VERSION": bumped,
317325
"VERSION_AGAIN": bumped,
318-
"STRICT_VERSION": semver.finalize_version(bumped),
326+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
319327
},
320328
)
321329

@@ -327,7 +335,7 @@ def test_from_latest_of_all_time_release(self):
327335
{
328336
"VERSION": bumped,
329337
"VERSION_AGAIN": bumped,
330-
"STRICT_VERSION": semver.finalize_version(bumped),
338+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
331339
},
332340
)
333341

@@ -348,12 +356,12 @@ def test_to_tag(self):
348356
{
349357
"VERSION": bumped,
350358
"VERSION_AGAIN": bumped,
351-
"STRICT_VERSION": semver.finalize_version(bumped),
359+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
352360
},
353361
)
354362
version = auto_version_tool.get_dvcs_repo_latest_version_semver()
355363
self.assertEqual(
356-
dict(version._asdict()),
364+
dict(version.to_dict()),
357365
dict(major=5, minor=0, patch=0, build=None, prerelease="dev.1"),
358366
)
359367

src/auto_version/utils.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def from_text_or_none(text):
1616
"""
1717
if text is not None:
1818
try:
19-
return semver.parse_version_info(text)
19+
return semver.Version.parse(text)
2020
except ValueError:
2121
_LOG.debug("version string is not semver-compatible: %r", text)
2222
pass
@@ -46,24 +46,28 @@ def get_semver_from_source(data):
4646
# we didn't have enough components
4747
pass
4848

49-
versions = [potential for potential in potentials if from_text_or_none(potential)]
50-
release_versions = {semver.finalize_version(version) for version in versions}
49+
actual_versions = []
50+
for potential in potentials:
51+
version = from_text_or_none(potential)
52+
if version:
53+
actual_versions.append(version)
54+
release_versions = {version.finalize_version() for version in actual_versions}
5155

5256
if len(release_versions) > 1:
5357
raise ValueError(
5458
"conflicting versions within project: %s\nkeys were: %r"
5559
% (release_versions, known)
5660
)
5761

58-
if not versions:
62+
if not actual_versions:
5963
_LOG.debug("key pairs found: \n%r", known)
6064
raise ValueError("could not find existing semver")
6165

6266
result = None
63-
if versions:
64-
result = versions[0]
67+
if actual_versions:
68+
result = actual_versions[0]
6569
_LOG.info("latest version found in source: %r", result)
66-
return semver.parse_version_info(result)
70+
return result
6771

6872

6973
def get_token_args(sig_fig):
@@ -84,7 +88,9 @@ def max_sigfig(sigfigs):
8488

8589
def min_sigfig(sigfigs):
8690
"""Given a list of significant figures, return the smallest"""
87-
for sig_fig in reversed(SemVerSigFig): # iterate sig figs in order of least significance
91+
for sig_fig in reversed(
92+
SemVerSigFig
93+
): # iterate sig figs in order of least significance
8894
if sig_fig in sigfigs:
8995
return sig_fig
9096

@@ -120,13 +126,15 @@ def make_new_semver(current_semver, last_release_semver, all_triggers, **overrid
120126
:param overrides: explicit values for some or all of the sigfigs
121127
:return:
122128
"""
123-
version_string = str(current_semver)
129+
proposed_version = current_semver
124130

125131
# if the current version isn't a full release
126132
if not is_release(current_semver) and last_release_semver:
127133
# we check to see how important the changes are
128134
# in the triggers, compared to the changes made between the current version and previous release
129-
if sigfig_gt(max_sigfig(all_triggers), semver_diff(current_semver, last_release_semver)):
135+
if sigfig_gt(
136+
max_sigfig(all_triggers), semver_diff(current_semver, last_release_semver)
137+
):
130138
# here, the changes are more significant than the original RC bump, so we re-bump
131139
pass
132140
else:
@@ -142,23 +150,22 @@ def make_new_semver(current_semver, last_release_semver, all_triggers, **overrid
142150

143151
if bump_sigfig:
144152
# perform an increment using the most-significant trigger
145-
version_string = getattr(semver, "bump_" + bump_sigfig)(
146-
str(current_semver), **get_token_args(bump_sigfig)
153+
proposed_version = getattr(current_semver, "bump_" + bump_sigfig)(
154+
**get_token_args(bump_sigfig)
147155
)
148156

149157
if sigfig_gt(bump_sigfig, SemVerSigFig.prerelease):
150158
# if we *didnt* increment sub-patch already, then we should do so
151159
# this provides the "devmode template" as previously
152160
# and ensures a simple 'bump' doesn't look like a full release
153-
version_string = semver.bump_prerelease(
154-
version_string, token=config.PRERELEASE_TOKEN
161+
proposed_version = proposed_version.bump_prerelease(
162+
token=config.PRERELEASE_TOKEN
155163
)
156164

157165
# perform any explicit setting of sigfigs
158-
version_info = semver.parse_version_info(version_string)
159166
for k, v in overrides.items():
160167
token_args = get_token_args(k)
161168
prefix = list(token_args.values()).pop() + "." if token_args else ""
162-
setattr(version_info, "_" + k, prefix + str(v))
169+
setattr(proposed_version, "_" + k, prefix + str(v))
163170

164-
return version_info
171+
return proposed_version

0 commit comments

Comments
 (0)