aboutsummaryrefslogtreecommitdiffstats
path: root/pkg_resources.py
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 /pkg_resources.py
parenta9541756f6a12c91704feffec4ddfee859f12c30 (diff)
downloadexternal_python_setuptools-7d9c21a893431798ba77edd62b5490ff4ce47ecf.tar.gz
external_python_setuptools-7d9c21a893431798ba77edd62b5490ff4ce47ecf.tar.bz2
external_python_setuptools-7d9c21a893431798ba77edd62b5490ff4ce47ecf.zip
Prefer packaging library if available.
Diffstat (limited to 'pkg_resources.py')
-rw-r--r--pkg_resources.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/pkg_resources.py b/pkg_resources.py
index f2e8b850..6f21b0bf 100644
--- a/pkg_resources.py
+++ b/pkg_resources.py
@@ -14,6 +14,8 @@ The package resource API is designed to work with normal filesystem packages,
method.
"""
+from __future__ import absolute_import
+
import sys
import os
import io
@@ -73,13 +75,15 @@ try:
except ImportError:
pass
-# Import packaging.version.parse as parse_version for a compat shim with the
-# old parse_version that used to be defined in this file.
-from setuptools._vendor.packaging.version import parse as parse_version
+try:
+ import packaging.version
+except ImportError:
+ # fallback to vendored version
+ import setuptools._vendor.packaging.version
+ packaging = setuptools._vendor.packaging
-from setuptools._vendor.packaging.version import (
- Version, InvalidVersion, Specifier,
-)
+# For compatibility, expose packaging.version.parse as parse_version
+parse_version = packaging.version.parse
_state_vars = {}
@@ -1156,8 +1160,8 @@ def safe_version(version):
"""
try:
# normalize the version
- return str(Version(version))
- except InvalidVersion:
+ return str(packaging.version.Version(version))
+ except packaging.version.InvalidVersion:
version = version.replace(' ','.')
return re.sub('[^A-Za-z0-9.]+', '-', version)
@@ -2395,7 +2399,7 @@ class Distribution(object):
def as_requirement(self):
"""Return a ``Requirement`` that matches this distribution exactly"""
- if isinstance(self.parsed_version, Version):
+ if isinstance(self.parsed_version, packaging.version.Version):
spec = "%s==%s" % (self.project_name, self.parsed_version)
else:
spec = "%s===%s" % (self.project_name, self.parsed_version)
@@ -2661,7 +2665,7 @@ class Requirement:
"""DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
self.unsafe_name, project_name = project_name, safe_name(project_name)
self.project_name, self.key = project_name, project_name.lower()
- self.specifier = Specifier(
+ self.specifier = packaging.version.Specifier(
",".join(["".join([x, y]) for x, y in specs])
)
self.specs = specs