diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2020-03-15 15:31:09 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2020-03-15 15:31:09 -0400 |
| commit | a323a4962eef39b6af7c5d07cdeb88bb0c307ce4 (patch) | |
| tree | 6b32398f9e7e30e3119b2dcfe1720ffd1a60c27f /setuptools/dist.py | |
| parent | 24fa288a98a14e6ec57b996b151a48203322c936 (diff) | |
| download | python-setuptools-git-a323a4962eef39b6af7c5d07cdeb88bb0c307ce4.tar.gz | |
Extract method for normalization, allowing for bypass when the version is wrapped in 'sic'. Fixes #308.
Diffstat (limited to 'setuptools/dist.py')
| -rw-r--r-- | setuptools/dist.py | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index 0f71dd98..a2f8ea0d 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -30,6 +30,7 @@ from setuptools.extern.six.moves import map, filter, filterfalse from . import SetuptoolsDeprecationWarning +import setuptools from setuptools import windows_support from setuptools.monkey import get_unpatched from setuptools.config import parse_configuration @@ -438,10 +439,23 @@ class Distribution(_Distribution): value = default() if default else None setattr(self.metadata, option, value) - self.metadata.version = self._validate_version(self.metadata.version) + self.metadata.version = self._normalize_version( + self._validate_version(self.metadata.version)) self._finalize_requires() @staticmethod + def _normalize_version(version): + if isinstance(version, setuptools.sic) or version is None: + return version + + normalized = str(packaging.version.Version(version)) + if version != normalized: + tmpl = "Normalizing '{version}' to '{normalized}'" + warnings.warn(tmpl.format(**locals())) + return normalized + return version + + @staticmethod def _validate_version(version): if isinstance(version, numbers.Number): # Some people apparently take "version number" too literally :) @@ -449,16 +463,7 @@ class Distribution(_Distribution): if version is not None: try: - ver = packaging.version.Version(version) - normalized_version = str(ver) - if version != normalized_version: - warnings.warn( - "Normalizing '%s' to '%s'" % ( - version, - normalized_version, - ) - ) - version = normalized_version + packaging.version.Version(version) except (packaging.version.InvalidVersion, TypeError): warnings.warn( "The version specified (%r) is an invalid version, this " @@ -466,6 +471,7 @@ class Distribution(_Distribution): "setuptools, pip, and PyPI. Please see PEP 440 for more " "details." % version ) + return setuptools.sic(version) return version def _finalize_requires(self): |
