aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Unterwaditzer <markus@unterwaditzer.net>2015-04-24 12:05:18 +0200
committerSVN-Git Migration <python-modules-team@lists.alioth.debian.org>2015-10-08 13:41:44 -0700
commitbf94fe6ca734a95614c33473cad145323d3495d3 (patch)
treed2010dac1dd9dc4f85637af81a85d840b628666c
parent063c9ec0a3d27a0ca437c0b8dba5ea17e2a032ef (diff)
downloadpython-requests-bf94fe6ca734a95614c33473cad145323d3495d3.tar
python-requests-bf94fe6ca734a95614c33473cad145323d3495d3.tar.gz
Import aliases for Debian
Alternative to #2375 Patch-Name: 05_upstream_devendorize.patch
-rw-r--r--requests/packages/__init__.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/requests/packages/__init__.py b/requests/packages/__init__.py
index d62c4b7..971c2ad 100644
--- a/requests/packages/__init__.py
+++ b/requests/packages/__init__.py
@@ -1,3 +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
-from . import urllib3
+try:
+ from . import chardet
+except ImportError:
+ import chardet
+ sys.modules['%s.chardet' % __name__] = chardet