From e9cde4e51a38ae232897aa73b8be5af1a18d46fe Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Fri, 3 Dec 2021 21:56:52 -0500 Subject: Add module for selectively loading importlib modules. --- setuptools/_importlib.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 setuptools/_importlib.py (limited to 'setuptools/_importlib.py') diff --git a/setuptools/_importlib.py b/setuptools/_importlib.py new file mode 100644 index 00000000..c529ccd3 --- /dev/null +++ b/setuptools/_importlib.py @@ -0,0 +1,13 @@ +import sys + + +if sys.version_info < (3, 10): + from setuptools.extern import importlib_metadata as metadata +else: + import importlib.metadata as metadata # noqa: F401 + + +if sys.version_info < (3, 9): + from setuptools.extern import importlib_resources as resources +else: + import importlib.resources as resources # noqa: F401 -- cgit v1.2.1 From 48196907ea789225269c52a898b3edcb76feb28f Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Mon, 14 Feb 2022 19:03:50 -0500 Subject: Prevent vendored importlib_metadata from loading distributions from older importlib_metadata. Fixes #3102. --- setuptools/_importlib.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'setuptools/_importlib.py') 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 -- cgit v1.2.1