diff --git a/src/semver/version.py b/src/semver/version.py index 29309ab..e3b9229 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -32,6 +32,7 @@ Comparator = Callable[["Version", Comparable], bool] T = TypeVar("T", bound="Version") +T_cmp = TypeVar("T_cmp", tuple, str, int) def _comparator(operator: Comparator) -> Comparator: @@ -53,7 +54,7 @@ def wrapper(self: "Version", other: Comparable) -> bool: return wrapper -def _cmp(a, b): # TODO: type hints +def _cmp(a: T_cmp, b: T_cmp) -> int: """Return negative if ab.""" return (a > b) - (a < b) @@ -137,7 +138,7 @@ def __init__( self._build = None if build is None else str(build) @classmethod - def _nat_cmp(cls, a, b): # TODO: type hints + def _nat_cmp(cls, a: Optional[str], b: Optional[str]) -> int: def cmp_prerelease_tag(a, b): if isinstance(a, int) and isinstance(b, int): return _cmp(a, b) @@ -150,9 +151,10 @@ def cmp_prerelease_tag(a, b): a, b = a or "", b or "" a_parts, b_parts = a.split("."), b.split(".") - a_parts = [int(x) if re.match(r"^\d+$", x) else x for x in a_parts] - b_parts = [int(x) if re.match(r"^\d+$", x) else x for x in b_parts] - for sub_a, sub_b in zip(a_parts, b_parts): + re_digits = re.compile(r"^\d+$") + parts_a = [int(x) if re_digits.match(x) else x for x in a_parts] + parts_b = [int(x) if re_digits.match(x) else x for x in b_parts] + for sub_a, sub_b in zip(parts_a, parts_b): cmp_result = cmp_prerelease_tag(sub_a, sub_b) if cmp_result != 0: return cmp_result pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy