From 3452701ed21981d6057339f4e219a7c26a4b7836 Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Mon, 14 Jan 2019 10:33:58 +0900 Subject: [PATCH] Imported Upstream version 36.2.4 --- CHANGES.rst | 6 ++++++ pkg_resources/__init__.py | 21 +++++++++++---------- setup.cfg | 2 +- setup.py | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 9af6001..8412557 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,9 @@ +v36.2.4 +------- + +* #1092: ``pkg_resources`` now uses ``inspect.getmro`` to + resolve classes in method resolution order. + v36.2.3 ------- diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 51b4749..f666696 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -37,6 +37,7 @@ import email.parser import tempfile import textwrap import itertools +import inspect from pkgutil import get_importer try: @@ -2939,20 +2940,20 @@ class Requirement(packaging.requirements.Requirement): 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] diff --git a/setup.cfg b/setup.cfg index 5633027..ae2f2d2 100755 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 36.2.3 +current_version = 36.2.4 commit = True tag = True diff --git a/setup.py b/setup.py index 8c21a37..bb465f2 100755 --- a/setup.py +++ b/setup.py @@ -89,7 +89,7 @@ def pypi_link(pkg_filename): setup_params = dict( name="setuptools", - version="36.2.3", + version="36.2.4", description="Easily download, build, install, upgrade, and uninstall " "Python packages", author="Python Packaging Authority", -- 2.7.4