summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Unterwaditzer <markus@unterwaditzer.net>2017-05-29 21:41:58 +0200
committerMarkus Unterwaditzer <markus@unterwaditzer.net>2017-05-29 21:41:59 +0200
commit588e8f7f640f774e71d61b53ccb34d310172e0ad (patch)
treec58e1827abbe513aec50f549c6bb4ebb862fe0f8
parent593cd18202e972874605f0bdda0bf8d7c284207d (diff)
downloadpython-requests-588e8f7f640f774e71d61b53ccb34d310172e0ad.tar.gz
Preserve identity of unbundled deps
Fix #4102
-rw-r--r--requests/packages.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/requests/packages.py b/requests/packages.py
index 0ec4f5bb..1fc3a742 100644
--- a/requests/packages.py
+++ b/requests/packages.py
@@ -3,13 +3,12 @@ import sys
# This code exists for backwards compatibility reasons.
# I don't like it either. Just look the other way. :)
-import urllib3
-sys.modules['requests.packages.urllib3'] = urllib3
-
-import idna
-sys.modules['requests.packages.idna'] = idna
-
-import chardet
-sys.modules['requests.packages.chardet'] = chardet
-
-# Kinda cool, though, right? \ No newline at end of file
+for package in ('urllib3', 'idna', 'chardet'):
+ __import__(package)
+ # This traversal is apparently necessary such that the identities are
+ # preserved (requests.packages.urllib3.* is urllib3.*)
+ for mod in list(sys.modules):
+ if mod == package or mod.startswith(package + '.'):
+ sys.modules['requests.packages.' + mod] = sys.modules[mod]
+
+# Kinda cool, though, right?