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 except AttributeError: import warnings msg = ( "`importlib-metadata` version is incompatible with `setuptools`.\n" "This problem is likely to be solved by installing an updated version of " "`importlib-metadata`." ) warnings.warn(msg) # Ensure a descriptive message is shown. raise # This exception can be suppressed by _distutils_hack 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 if sys.version_info < (3, 9): from setuptools.extern import importlib_resources as resources else: import importlib.resources as resources # noqa: F401