Skip to content

Commit

Permalink
Upgrade some vendored dependencies (#4638)
Browse files Browse the repository at this point in the history
  • Loading branch information
pradyunsg authored and dstufft committed Aug 2, 2017
1 parent 3de4464 commit 281061f
Show file tree
Hide file tree
Showing 10 changed files with 558 additions and 543 deletions.
2 changes: 1 addition & 1 deletion news/setuptools.vendor
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Upgraded pkg_resources (via setuptools) to 35.0.2.
Upgraded pkg_resources (via setuptools) to 36.2.6.
44 changes: 28 additions & 16 deletions pip/_vendor/pkg_resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import tempfile
import textwrap
import itertools
import inspect
from pkgutil import get_importer

try:
Expand Down Expand Up @@ -67,13 +68,15 @@
except ImportError:
importlib_machinery = None

from . import py31compat
from pip._vendor import appdirs
from pip._vendor import packaging
__import__('pip._vendor.packaging.version')
__import__('pip._vendor.packaging.specifiers')
__import__('pip._vendor.packaging.requirements')
__import__('pip._vendor.packaging.markers')


if (3, 0) < sys.version_info < (3, 3):
raise RuntimeError("Python 3.3 or later is required")

Expand Down Expand Up @@ -1550,7 +1553,7 @@ def _setup_prefix(self):
path = self.module_path
old = None
while path != old:
if _is_unpacked_egg(path):
if _is_egg_path(path):
self.egg_name = os.path.basename(path)
self.egg_info = os.path.join(path, 'EGG-INFO')
self.egg_root = path
Expand Down Expand Up @@ -1953,7 +1956,7 @@ def find_eggs_in_zip(importer, path_item, only=False):
# don't yield nested distros
return
for subitem in metadata.resource_listdir('/'):
if _is_unpacked_egg(subitem):
if _is_egg_path(subitem):
subpath = os.path.join(path_item, subitem)
for dist in find_eggs_in_zip(zipimport.zipimporter(subpath), subpath):
yield dist
Expand Down Expand Up @@ -2030,7 +2033,7 @@ def find_on_path(importer, path_item, only=False):
yield Distribution.from_location(
path_item, entry, metadata, precedence=DEVELOP_DIST
)
elif not only and _is_unpacked_egg(entry):
elif not only and _is_egg_path(entry):
dists = find_distributions(os.path.join(path_item, entry))
for dist in dists:
yield dist
Expand Down Expand Up @@ -2218,12 +2221,22 @@ def _normalize_cached(filename, _cache={}):
return result


def _is_egg_path(path):
"""
Determine if given path appears to be an egg.
"""
return (
path.lower().endswith('.egg')
)


def _is_unpacked_egg(path):
"""
Determine if given path appears to be an unpacked egg.
"""
return (
path.lower().endswith('.egg')
_is_egg_path(path) and
os.path.isfile(os.path.join(path, 'EGG-INFO', 'PKG-INFO'))
)


Expand Down Expand Up @@ -2937,29 +2950,28 @@ def parse(s):
return req


def _get_mro(cls):
"""Get an mro for a type or classic class"""
if not isinstance(cls, type):

class cls(cls, object):
pass

return cls.__mro__[1:]
return cls.__mro__
def _always_object(classes):
"""
Ensure object appears in the mro even
for old-style classes.
"""
if object not in classes:
return classes + (object,)
return classes


def _find_adapter(registry, ob):
"""Return an adapter factory for `ob` from `registry`"""
for t in _get_mro(getattr(ob, '__class__', type(ob))):
types = _always_object(inspect.getmro(getattr(ob, '__class__', type(ob))))
for t in types:
if t in registry:
return registry[t]


def ensure_directory(path):
"""Ensure that the parent directory of `path` exists"""
dirname = os.path.dirname(path)
if not os.path.isdir(dirname):
os.makedirs(dirname)
py31compat.makedirs(dirname, exist_ok=True)


def _bypass_ensure_directory(path):
Expand Down
22 changes: 22 additions & 0 deletions pip/_vendor/pkg_resources/py31compat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import os
import errno
import sys


def _makedirs_31(path, exist_ok=False):
try:
os.makedirs(path)
except OSError as exc:
if not exist_ok or exc.errno != errno.EEXIST:
raise


# rely on compatibility behavior until mode considerations
# and exists_ok considerations are disentangled.
# See https://github.com/pypa/setuptools/pull/1083#issuecomment-315168663
needs_makedirs = (
sys.version_info < (3, 2, 5) or
(3, 3) <= sys.version_info < (3, 3, 6) or
(3, 4) <= sys.version_info < (3, 4, 1)
)
makedirs = _makedirs_31 if needs_makedirs else os.makedirs
6 changes: 3 additions & 3 deletions pip/_vendor/pytoml/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .core import TomlError
from .parser import load, loads
from .writer import dump, dumps
from .core import TomlError
from .parser import load, loads
from .writer import dump, dumps
26 changes: 13 additions & 13 deletions pip/_vendor/pytoml/core.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
class TomlError(RuntimeError):
def __init__(self, message, line, col, filename):
RuntimeError.__init__(self, message, line, col, filename)
self.message = message
self.line = line
self.col = col
self.filename = filename

def __str__(self):
return '{}({}, {}): {}'.format(self.filename, self.line, self.col, self.message)

def __repr__(self):
return 'TomlError({!r}, {!r}, {!r}, {!r})'.format(self.message, self.line, self.col, self.filename)
class TomlError(RuntimeError):
def __init__(self, message, line, col, filename):
RuntimeError.__init__(self, message, line, col, filename)
self.message = message
self.line = line
self.col = col
self.filename = filename

def __str__(self):
return '{}({}, {}): {}'.format(self.filename, self.line, self.col, self.message)

def __repr__(self):
return 'TomlError({!r}, {!r}, {!r}, {!r})'.format(self.message, self.line, self.col, self.filename)

0 comments on commit 281061f

Please sign in to comment.