diff options
Diffstat (limited to 'setuptools/_importlib.py')
-rw-r--r-- | setuptools/_importlib.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/setuptools/_importlib.py b/setuptools/_importlib.py index 819bf5d3..d1970bdc 100644 --- a/setuptools/_importlib.py +++ b/setuptools/_importlib.py @@ -34,11 +34,38 @@ def disable_importlib_metadata_finder(metadata): sys.meta_path.remove(item) +def check_old_importlib_metadata(metadata): + """ + Warn the user if an old importlib_metadata is present and might + cause problems. + + Workaround for #3452. Remove this check after 2022-12-31. + """ + try: + version = metadata.version('importlib_metadata') + parsed = tuple(map(int, version.split('.'))) + except Exception: + return + + if parsed > (4, 3): + return + + msg = ( + "`importlib_metadata` version is incompatible with the stdlib " + "importlib.metadata and may cause problems if plugins import " + "importlib_metadata. See pypa/setuptools#3452 for details. " + "Consider updating to importlib_metadata 4.3 or later." + ) + import warnings + warnings.warn(msg) + + 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 + check_old_importlib_metadata(metadata) if sys.version_info < (3, 9): |