diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2017-04-27 15:28:54 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-27 15:28:54 -0400 |
commit | 8219fe5211aebbc8de8da9c988cc2a2b85b92829 (patch) | |
tree | 384ada980c228ab172ad71f0412f9f1e7d2b9f3c /setuptools/monkey.py | |
parent | b1cb67c743de2581f9393315b23777011c22ecf7 (diff) | |
download | external_python_setuptools-8219fe5211aebbc8de8da9c988cc2a2b85b92829.tar.gz external_python_setuptools-8219fe5211aebbc8de8da9c988cc2a2b85b92829.tar.bz2 external_python_setuptools-8219fe5211aebbc8de8da9c988cc2a2b85b92829.zip |
Make _get_mro private; Swap logic to put preferred behavior at top level; Update docstring to reference issue.
Diffstat (limited to 'setuptools/monkey.py')
-rw-r--r-- | setuptools/monkey.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/setuptools/monkey.py b/setuptools/monkey.py index 97ba159d..acd0a4f4 100644 --- a/setuptools/monkey.py +++ b/setuptools/monkey.py @@ -21,17 +21,18 @@ if you think you need this functionality. """ -def get_mro(cls): - """Returns the bases classes for cls sorted by the MRO. +def _get_mro(cls): + """ + Returns the bases classes for cls sorted by the MRO. Works around an issue on Jython where inspect.getmro will not return all base classes if multiple classes share the same name. Instead, this function will return a tuple containing the class itself, and the contents - of cls.__bases__ . + of cls.__bases__. See https://github.com/pypa/setuptools/issues/1024. """ - if platform.python_implementation() != "Jython": - return inspect.getmro(cls) - return (cls,) + cls.__bases__ + if platform.python_implementation() == "Jython": + return (cls,) + cls.__bases__ + return inspect.getmro(cls) def get_unpatched(item): @@ -51,7 +52,7 @@ def get_unpatched_class(cls): """ external_bases = ( cls - for cls in get_mro(cls) + for cls in _get_mro(cls) if not cls.__module__.startswith('setuptools') ) base = next(external_bases) |