Index: third_party/google-endpoints/requests/packages/__init__.py |
diff --git a/third_party/google-endpoints/requests/packages/__init__.py b/third_party/google-endpoints/requests/packages/__init__.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..971c2ad024d24b8425bad8eef7bb08a8e935fe1c |
--- /dev/null |
+++ b/third_party/google-endpoints/requests/packages/__init__.py |
@@ -0,0 +1,36 @@ |
+''' |
+Debian and other distributions "unbundle" requests' vendored dependencies, and |
+rewrite all imports to use the global versions of ``urllib3`` and ``chardet``. |
+The problem with this is that not only requests itself imports those |
+dependencies, but third-party code outside of the distros' control too. |
+ |
+In reaction to these problems, the distro maintainers replaced |
+``requests.packages`` with a magical "stub module" that imports the correct |
+modules. The implementations were varying in quality and all had severe |
+problems. For example, a symlink (or hardlink) that links the correct modules |
+into place introduces problems regarding object identity, since you now have |
+two modules in `sys.modules` with the same API, but different identities:: |
+ |
+ requests.packages.urllib3 is not urllib3 |
+ |
+With version ``2.5.2``, requests started to maintain its own stub, so that |
+distro-specific breakage would be reduced to a minimum, even though the whole |
+issue is not requests' fault in the first place. See |
+https://github.com/kennethreitz/requests/pull/2375 for the corresponding pull |
+request. |
+''' |
+ |
+from __future__ import absolute_import |
+import sys |
+ |
+try: |
+ from . import urllib3 |
+except ImportError: |
+ import urllib3 |
+ sys.modules['%s.urllib3' % __name__] = urllib3 |
+ |
+try: |
+ from . import chardet |
+except ImportError: |
+ import chardet |
+ sys.modules['%s.chardet' % __name__] = chardet |