packages.py 1.0 KB

12345678910111213141516171819202122232425
  1. import sys
  2. from .compat import chardet
  3. # This code exists for backwards compatibility reasons.
  4. # I don't like it either. Just look the other way. :)
  5. for package in ("urllib3", "idna"):
  6. vendored_package = "pip._vendor." + package
  7. locals()[package] = __import__(vendored_package)
  8. # This traversal is apparently necessary such that the identities are
  9. # preserved (requests.packages.urllib3.* is urllib3.*)
  10. for mod in list(sys.modules):
  11. if mod == vendored_package or mod.startswith(vendored_package + '.'):
  12. unprefixed_mod = mod[len("pip._vendor."):]
  13. sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod]
  14. if chardet is not None:
  15. target = chardet.__name__
  16. for mod in list(sys.modules):
  17. if mod == target or mod.startswith(f"{target}."):
  18. imported_mod = sys.modules[mod]
  19. sys.modules[f"requests.packages.{mod}"] = imported_mod
  20. mod = mod.replace(target, "chardet")
  21. sys.modules[f"requests.packages.{mod}"] = imported_mod