Skip to content

Commit c03287a

Browse files
authored
Merge pull request #3108 from pypa/bugfix/3102-old-metadata-conflict
Workaround for older importlib_metadata.
2 parents e9e2750 + 4819690 commit c03287a

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

changelog.d/3102.misc.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Prevent vendored importlib_metadata from loading distributions from older importlib_metadata.

setuptools/_importlib.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,31 @@
11
import sys
22

33

4+
def disable_importlib_metadata_finder(metadata):
5+
"""
6+
Ensure importlib_metadata doesn't provide older, incompatible
7+
Distributions.
8+
9+
Workaround for #3102.
10+
"""
11+
try:
12+
import importlib_metadata
13+
except ImportError:
14+
return
15+
if importlib_metadata is metadata:
16+
return
17+
to_remove = [
18+
ob
19+
for ob in sys.meta_path
20+
if isinstance(ob, importlib_metadata.MetadataPathFinder)
21+
]
22+
for item in to_remove:
23+
sys.meta_path.remove(item)
24+
25+
426
if sys.version_info < (3, 10):
527
from setuptools.extern import importlib_metadata as metadata
28+
disable_importlib_metadata_finder(metadata)
629
else:
730
import importlib.metadata as metadata # noqa: F401
831

0 commit comments

Comments
 (0)