Skip to content

Commit f21230a

Browse files
committed
partial deps upgrade (no functional changes) to semver lib 3.x
1 parent 770dc0e commit f21230a

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,2 +1,2 @@
11
toml
2-
semver
2+
semver~=3

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")
@@ -131,9 +144,9 @@ def test_custom_field_set(self):
131144

132145
class TestUtils(unittest.TestCase):
133146
def test_is_release(self):
134-
self.assertTrue(utils.is_release(semver.parse_version_info("1.2.3")))
135-
self.assertFalse(utils.is_release(semver.parse_version_info("1.2.3-RC.1")))
136-
self.assertFalse(utils.is_release(semver.parse_version_info("1.2.3+abc")))
147+
self.assertTrue(utils.is_release(semver.Version.parse("1.2.3")))
148+
self.assertFalse(utils.is_release(semver.Version.parse("1.2.3-RC.1")))
149+
self.assertFalse(utils.is_release(semver.Version.parse("1.2.3+abc")))
137150

138151
def test_sigfig_max(self):
139152
self.assertEqual("minor", utils.max_sigfig(["minor", "patch"]))
@@ -155,20 +168,19 @@ def test_semver_diff(self):
155168
self.assertEqual(
156169
"minor",
157170
utils.semver_diff(
158-
semver.parse_version_info("1.2.3"), semver.parse_version_info("1.3.5")
171+
semver.Version.parse("1.2.3"), semver.Version.parse("1.3.5")
159172
),
160173
)
161174
self.assertEqual(
162175
"patch",
163176
utils.semver_diff(
164-
semver.parse_version_info("1.2.3"),
165-
semver.parse_version_info("1.2.4-RC.1"),
177+
semver.Version.parse("1.2.3"), semver.Version.parse("1.2.4-RC.1")
166178
),
167179
)
168180
self.assertEqual(
169181
None,
170182
utils.semver_diff(
171-
semver.parse_version_info("1.2.3"), semver.parse_version_info("1.2.3")
183+
semver.Version.parse("1.2.3"), semver.Version.parse("1.2.3")
172184
),
173185
)
174186

@@ -182,14 +194,10 @@ def setUpClass(cls):
182194
auto_version_tool.load_config(os.path.join(test_dir, "example.toml"))
183195

184196
def check(self, previous, current, bumps, expect):
185-
previous = semver.parse_version_info(previous) if previous else None
197+
previous = semver.Version.parse(previous) if previous else None
186198
self.assertEqual(
187199
expect,
188-
str(
189-
utils.make_new_semver(
190-
semver.parse_version_info(current), previous, bumps
191-
)
192-
),
200+
str(utils.make_new_semver(semver.Version.parse(current), previous, bumps)),
193201
)
194202

195203
def test_release_bump(self):
@@ -256,7 +264,7 @@ def test_from_ancestor_version(self):
256264
{
257265
"VERSION": bumped,
258266
"VERSION_AGAIN": bumped,
259-
"STRICT_VERSION": semver.finalize_version(bumped),
267+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
260268
},
261269
)
262270

@@ -270,7 +278,7 @@ def test_from_ancestor_release(self):
270278
{
271279
"VERSION": bumped,
272280
"VERSION_AGAIN": bumped,
273-
"STRICT_VERSION": semver.finalize_version(bumped),
281+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
274282
},
275283
)
276284

@@ -282,7 +290,7 @@ def test_from_latest_of_all_time(self):
282290
{
283291
"VERSION": bumped,
284292
"VERSION_AGAIN": bumped,
285-
"STRICT_VERSION": semver.finalize_version(bumped),
293+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
286294
},
287295
)
288296

@@ -294,7 +302,7 @@ def test_from_latest_of_all_time_release(self):
294302
{
295303
"VERSION": bumped,
296304
"VERSION_AGAIN": bumped,
297-
"STRICT_VERSION": semver.finalize_version(bumped),
305+
"STRICT_VERSION": str(semver.Version.parse(bumped).finalize_version()),
298306
},
299307
)
300308

@@ -315,12 +323,12 @@ def test_to_tag(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
version = auto_version_tool.get_dvcs_repo_latest_version_semver()
322330
self.assertEqual(
323-
dict(version._asdict()),
331+
dict(version.to_dict()),
324332
dict(major=5, minor=0, patch=0, build=None, prerelease="dev.1"),
325333
)
326334

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)