diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2014-09-27 16:13:48 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2014-09-27 16:13:48 -0400 |
commit | 7d9c21a893431798ba77edd62b5490ff4ce47ecf (patch) | |
tree | 7dd192c676041fafe6f31425d5fe2d018895e704 /pkg_resources.py | |
parent | a9541756f6a12c91704feffec4ddfee859f12c30 (diff) | |
download | external_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.py | 24 |
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 |