summaryrefslogtreecommitdiff
path: root/setuptools/_vendor/packaging/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/_vendor/packaging/utils.py')
-rw-r--r--setuptools/_vendor/packaging/utils.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/setuptools/_vendor/packaging/utils.py b/setuptools/_vendor/packaging/utils.py
index bab11b80..33c613b7 100644
--- a/setuptools/_vendor/packaging/utils.py
+++ b/setuptools/_vendor/packaging/utils.py
@@ -35,7 +35,9 @@ def canonicalize_name(name: str) -> NormalizedName:
return cast(NormalizedName, value)
-def canonicalize_version(version: Union[Version, str]) -> str:
+def canonicalize_version(
+ version: Union[Version, str], *, strip_trailing_zero: bool = True
+) -> str:
"""
This is very similar to Version.__str__, but has one subtle difference
with the way it handles the release segment.
@@ -56,8 +58,11 @@ def canonicalize_version(version: Union[Version, str]) -> str:
parts.append(f"{parsed.epoch}!")
# Release segment
- # NB: This strips trailing '.0's to normalize
- parts.append(re.sub(r"(\.0)+$", "", ".".join(str(x) for x in parsed.release)))
+ release_segment = ".".join(str(x) for x in parsed.release)
+ if strip_trailing_zero:
+ # NB: This strips trailing '.0's to normalize
+ release_segment = re.sub(r"(\.0)+$", "", release_segment)
+ parts.append(release_segment)
# Pre-release
if parsed.pre is not None: