diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2022-02-14 19:03:50 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2022-02-14 19:13:21 -0500 |
commit | 48196907ea789225269c52a898b3edcb76feb28f (patch) | |
tree | e1a74bca74829264afb0c71dbec6bed35ddc4312 /setuptools/_importlib.py | |
parent | abbaacc62aa26c611d68b935363765af702c0861 (diff) | |
download | python-setuptools-git-48196907ea789225269c52a898b3edcb76feb28f.tar.gz |
Prevent vendored importlib_metadata from loading distributions from older importlib_metadata. Fixes #3102.
Diffstat (limited to 'setuptools/_importlib.py')
-rw-r--r-- | setuptools/_importlib.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/setuptools/_importlib.py b/setuptools/_importlib.py index c529ccd3..c1ac137e 100644 --- a/setuptools/_importlib.py +++ b/setuptools/_importlib.py @@ -1,8 +1,31 @@ import sys +def disable_importlib_metadata_finder(metadata): + """ + Ensure importlib_metadata doesn't provide older, incompatible + Distributions. + + Workaround for #3102. + """ + try: + import importlib_metadata + except ImportError: + return + if importlib_metadata is metadata: + return + to_remove = [ + ob + for ob in sys.meta_path + if isinstance(ob, importlib_metadata.MetadataPathFinder) + ] + for item in to_remove: + sys.meta_path.remove(item) + + if sys.version_info < (3, 10): from setuptools.extern import importlib_metadata as metadata + disable_importlib_metadata_finder(metadata) else: import importlib.metadata as metadata # noqa: F401 |