summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2014-09-27 16:13:48 -0400
committerJason R. Coombs <jaraco@jaraco.com>2014-09-27 16:13:48 -0400
commit7d9c21a893431798ba77edd62b5490ff4ce47ecf (patch)
tree7dd192c676041fafe6f31425d5fe2d018895e704 /setuptools
parenta9541756f6a12c91704feffec4ddfee859f12c30 (diff)
downloadpython-setuptools-git-7d9c21a893431798ba77edd62b5490ff4ce47ecf.tar.gz
Prefer packaging library if available.
Diffstat (limited to 'setuptools')
-rwxr-xr-xsetuptools/command/egg_info.py11
-rw-r--r--setuptools/dist.py14
-rw-r--r--setuptools/tests/test_resources.py10
3 files changed, 28 insertions, 7 deletions
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index de43bf0c..43df87dc 100755
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -10,12 +10,18 @@ import os
import re
import sys
+try:
+ import packaging.version
+except ImportError:
+ # fallback to vendored version
+ import setuptools._vendor.packaging.version
+ packaging = setuptools._vendor.packaging
+
from setuptools import Command
from setuptools.command.sdist import sdist
from setuptools.compat import basestring, PY3, StringIO
from setuptools import svn_utils
from setuptools.command.sdist import walk_revctrl
-from setuptools._vendor.packaging.version import Version
from pkg_resources import (
parse_requirements, safe_name, parse_version,
safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename)
@@ -72,8 +78,9 @@ class egg_info(Command):
parsed_version = parse_version(self.egg_version)
try:
+ is_version = isinstance(parsed_version, packaging.version.Version)
spec = (
- "%s==%s" if isinstance(parsed_version, Version) else "%s===%s"
+ "%s==%s" if is_version else "%s===%s"
)
list(
parse_requirements(spec % (self.egg_name, self.egg_version))
diff --git a/setuptools/dist.py b/setuptools/dist.py
index ae4ff554..a3a37ee4 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -13,11 +13,18 @@ from distutils.core import Distribution as _Distribution
from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
DistutilsSetupError)
+try:
+ import packaging.version
+except ImportError:
+ # fallback to vendored version
+ import setuptools._vendor.packaging.version
+ packaging = setuptools._vendor.packaging
+
from setuptools.depends import Require
from setuptools.compat import basestring, PY2
-from setuptools._vendor.packaging.version import Version, InvalidVersion
import pkg_resources
+
def _get_unpatched(cls):
"""Protect against re-patching the distutils if reloaded
@@ -271,7 +278,8 @@ class Distribution(_Distribution):
if self.metadata.version is not None:
try:
- normalized_version = str(Version(self.metadata.version))
+ ver = packaging.version.Version(self.metadata.version)
+ normalized_version = str(ver)
if self.metadata.version != normalized_version:
warnings.warn(
"The version specified requires normalization, "
@@ -281,7 +289,7 @@ class Distribution(_Distribution):
)
)
self.metadata.version = normalized_version
- except (InvalidVersion, TypeError):
+ except (packaging.version.InvalidVersion, TypeError):
warnings.warn(
"The version specified (%r) is an invalid version, this "
"may not work as expected with newer versions of "
diff --git a/setuptools/tests/test_resources.py b/setuptools/tests/test_resources.py
index 9051b414..8336a85d 100644
--- a/setuptools/tests/test_resources.py
+++ b/setuptools/tests/test_resources.py
@@ -8,6 +8,13 @@ import tempfile
import shutil
from unittest import TestCase
+try:
+ import packaging.version
+except ImportError:
+ # fallback to vendored version
+ import setuptools._vendor.packaging.version
+ packaging = setuptools._vendor.packaging
+
import pkg_resources
from pkg_resources import (parse_requirements, VersionConflict, parse_version,
Distribution, EntryPoint, Requirement, safe_version, safe_name,
@@ -16,7 +23,6 @@ from pkg_resources import (parse_requirements, VersionConflict, parse_version,
from setuptools.command.easy_install import (get_script_header, is_sh,
nt_quote_arg)
from setuptools.compat import StringIO, iteritems, PY3
-from setuptools._vendor.packaging.version import Specifier
from .py26compat import skipIf
def safe_repr(obj, short=False):
@@ -339,7 +345,7 @@ class RequirementsTests(TestCase):
self.assertEqual(r2.extras, ("bar","foo")) # extras are normalized
self.assertEqual(hash(r1), hash(r2))
self.assertEqual(
- hash(r1), hash(("twisted", Specifier(">=1.2"),
+ hash(r1), hash(("twisted", packaging.version.Specifier(">=1.2"),
frozenset(["foo","bar"])))
)