diff options
Diffstat (limited to 'src/hydrilla/versions.py')
-rw-r--r-- | src/hydrilla/versions.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/hydrilla/versions.py b/src/hydrilla/versions.py index a7a9f29..7474d98 100644 --- a/src/hydrilla/versions.py +++ b/src/hydrilla/versions.py @@ -34,14 +34,16 @@ from __future__ import annotations import typing as t -def normalize_version(ver: t.Sequence[int]) -> tuple[int, ...]: - """Strip right-most zeroes from 'ver'. The original list is not modified.""" +VerTuple = t.NewType('VerTuple', 'tuple[int, ...]') + +def normalize_version(ver: t.Sequence[int]) -> VerTuple: + """Strip rightmost zeroes from 'ver'.""" new_len = 0 for i, num in enumerate(ver): if num != 0: new_len = i + 1 - return tuple(ver[:new_len]) + return VerTuple(tuple(ver[:new_len])) def parse_version(ver_str: str) -> tuple[int, ...]: """ @@ -50,10 +52,16 @@ def parse_version(ver_str: str) -> tuple[int, ...]: """ return tuple(int(num) for num in ver_str.split('.')) -def version_string(ver: t.Sequence[int], rev: t.Optional[int] = None) -> str: +def parse_normalize_version(ver_str: str) -> VerTuple: + """ + Convert 'ver_str' into a VerTuple representation, e.g. for + ver_str="4.6.13.0" return (4, 6, 13). + """ + return normalize_version(parse_version(ver_str)) + +def version_string(ver: VerTuple, rev: t.Optional[int] = None) -> str: """ Produce version's string representation (optionally with revision), like: 1.2.3-5 - No version normalization is performed. """ return '.'.join(str(n) for n in ver) + ('' if rev is None else f'-{rev}') |