Skip to content

Commit cbbb345

Browse files
committed
refactor: do not use object oriented style
1 parent ea6c127 commit cbbb345

File tree

5 files changed

+41
-43
lines changed

5 files changed

+41
-43
lines changed

python/private/py_wheel.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
load(":py_info.bzl", "PyInfo")
1818
load(":py_package.bzl", "py_package_lib")
1919
load(":stamp.bzl", "is_stamping_enabled")
20-
load(":version.bzl", "normalize_pep440")
20+
load(":version.bzl", "version")
2121

2222
PyWheelInfo = provider(
2323
doc = "Information about a wheel produced by `py_wheel`",
@@ -310,7 +310,7 @@ def _py_wheel_impl(ctx):
310310

311311
filename_segments = [
312312
_escape_filename_distribution_name(ctx.attr.distribution),
313-
normalize_pep440(version),
313+
version.normalize(version),
314314
_escape_filename_segment(python_tag),
315315
_escape_filename_segment(abi),
316316
_escape_filename_segment(ctx.attr.platform),

python/private/pypi/pep508_evaluate.bzl

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -345,31 +345,30 @@ def _env_expr(left, op, right):
345345

346346
def _version_expr(left, op, right):
347347
"""Evaluate a version comparison expression"""
348-
_left = version(left)
349-
_right = version(right)
348+
_left = version.parse(left)
349+
_right = version.parse(right)
350350
if _left == None or _right == None:
351351
# Per spec, if either can't be normalized to a version, then
352352
# fallback to simple string comparison. Usually this is `platform_version`
353353
# or `platform_release`, which vary depending on platform.
354354
return _env_expr(left, op, right)
355355

356356
if op == "===":
357-
return _left.eqq(_right)
357+
return version.is_eeq(_left, _right)
358358
elif op == "!=":
359-
return _left.ne(_right)
359+
return version.is_ne(_left, _right)
360360
elif op == "==":
361-
# Matching of major, minor, patch only
362-
return _left.eq(_right)
361+
return version.is_eq(_left, _right)
363362
elif op == "<":
364-
return _left.lt(_right)
363+
return version.is_lt(_left, _right)
365364
elif op == ">":
366-
return _left.gt(_right)
365+
return version.is_gt(_left, _right)
367366
elif op == "<=":
368-
return _left.le(_right)
367+
return version.is_le(_left, _right)
369368
elif op == ">=":
370-
return _left.ge(_right)
369+
return version.is_ge(_left, _right)
371370
elif op == "~=":
372-
return _left.compatible(_right)
371+
return version.is_compatible(_left, _right)
373372
else:
374373
return False # Let's just ignore the invalid ops
375374

python/private/version.bzl

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ def _parse(version_str, strict = True):
563563

564564
return parts
565565

566-
def version(version_str, strict = False):
566+
def parse(version_str, strict = False):
567567
"""Parse a PEP4408 compliant version
568568
569569
See https://packaging.python.org/en/latest/specifications/binary-distribution-format/#escaping-and-unicode
@@ -581,7 +581,7 @@ def version(version_str, strict = False):
581581
if not parts:
582582
return None
583583

584-
return _new_version(
584+
return struct(
585585
epoch = _parse_epoch(parts["epoch"]),
586586
release = _parse_release(parts["release"]),
587587
pre = _parse_pre(parts["pre"]),
@@ -644,25 +644,6 @@ def _parse_post(value):
644644
# it. Use `ord` and `chr` functions to find a good value.
645645
return ("~", post)
646646

647-
def _new_version(**kwargs):
648-
self = struct(**kwargs)
649-
650-
return struct(
651-
# methods, keep sorted
652-
compatible = mkmethod(self, _version_compatible),
653-
eq = mkmethod(self, _version_eq),
654-
eqq = mkmethod(self, _version_eqq),
655-
ge = mkmethod(self, _version_ge),
656-
gt = mkmethod(self, _version_gt),
657-
key = mkmethod(self, _version_key),
658-
le = mkmethod(self, _version_le),
659-
lt = mkmethod(self, _version_lt),
660-
ne = mkmethod(self, _version_ne),
661-
662-
# attrs are the same as self
663-
**kwargs
664-
)
665-
666647
def _pad_zeros(release, n):
667648
padding = n - len(release)
668649
if padding <= 0:
@@ -846,3 +827,18 @@ def _version_key(self, *, local = True):
846827
# PEP440 - post release ordering: .devN, <no suffix>
847828
self.dev or release_key,
848829
)
830+
831+
version = struct(
832+
normalize = normalize_pep440,
833+
parse = parse,
834+
# methods, keep sorted
835+
key = _version_key,
836+
is_compatible = _version_compatible,
837+
is_eq = _version_eq,
838+
is_eeq = _version_eqq,
839+
is_ge = _version_ge,
840+
is_gt = _version_gt,
841+
is_le = _version_le,
842+
is_lt = _version_lt,
843+
is_ne = _version_ne,
844+
)

tests/py_wheel/py_wheel_tests.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite")
1717
load("@rules_testing//lib:truth.bzl", "matching")
1818
load("@rules_testing//lib:util.bzl", rt_util = "util")
1919
load("//python:packaging.bzl", "py_wheel")
20-
load("//python/private:version.bzl", "normalize_pep440") # buildifier: disable=bzl-visibility
20+
load("//python/private:version.bzl", "version") # buildifier: disable=bzl-visibility
2121

2222
_basic_tests = []
2323
_tests = []
@@ -257,7 +257,7 @@ def _test_pep440_normalization(env):
257257
prefix = prefixes[i % len(prefixes)]
258258
postfix = postfixes[(i // len(prefixes)) % len(postfixes)]
259259
env.expect.that_str(
260-
normalize_pep440(
260+
version.normalize(
261261
prefix + iepoch + irelease + iprepost +
262262
idev + ilocal + postfix,
263263
),

tests/pypi/pep508/evaluate_tests.bzl

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -341,15 +341,18 @@ def _test_ordering(env):
341341
]
342342

343343
for lower, higher in zip(want[:-1], want[1:]):
344-
lower = version(lower, strict = True)
345-
higher = version(higher, strict = True)
344+
lower = version.parse(lower, strict = True)
345+
higher = version.parse(higher, strict = True)
346346

347-
if not lower.key() < higher.key():
347+
lower_key = version.key(lower)
348+
higher_key = version.key(higher)
349+
350+
if not lower_key < higher_key:
348351
env.fail("Expected '{}'.key() to be smaller than '{}'.key(), but got otherwise: {} > {}".format(
349-
lower.str(),
350-
higher.str(),
351-
lower.key(),
352-
higher.key(),
352+
lower.string,
353+
higher.string,
354+
lower_key,
355+
higher_key,
353356
))
354357

355358
_tests.append(_test_ordering)

0 commit comments

Comments
 (0)