_importlib.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import sys
  2. def disable_importlib_metadata_finder(metadata):
  3. """
  4. Ensure importlib_metadata doesn't provide older, incompatible
  5. Distributions.
  6. Workaround for #3102.
  7. """
  8. try:
  9. import importlib_metadata
  10. except ImportError:
  11. return
  12. except AttributeError:
  13. from .warnings import SetuptoolsWarning
  14. SetuptoolsWarning.emit(
  15. "Incompatibility problem.",
  16. """
  17. `importlib-metadata` version is incompatible with `setuptools`.
  18. This problem is likely to be solved by installing an updated version of
  19. `importlib-metadata`.
  20. """,
  21. see_url="https://github.com/python/importlib_metadata/issues/396",
  22. ) # Ensure a descriptive message is shown.
  23. raise # This exception can be suppressed by _distutils_hack
  24. if importlib_metadata is metadata:
  25. return
  26. to_remove = [
  27. ob
  28. for ob in sys.meta_path
  29. if isinstance(ob, importlib_metadata.MetadataPathFinder)
  30. ]
  31. for item in to_remove:
  32. sys.meta_path.remove(item)
  33. if sys.version_info < (3, 10):
  34. from setuptools.extern import importlib_metadata as metadata
  35. disable_importlib_metadata_finder(metadata)
  36. else:
  37. import importlib.metadata as metadata # noqa: F401
  38. if sys.version_info < (3, 9):
  39. from setuptools.extern import importlib_resources as resources
  40. else:
  41. import importlib.resources as resources # noqa: F401