aboutsummaryrefslogtreecommitdiff
path: root/requests/packages/__init__.py
diff options
context:
space:
mode:
authorDaniele Tricoli <eriol@mornie.org>2015-10-14 19:04:18 +0200
committerDaniele Tricoli <eriol@mornie.org>2015-10-14 19:04:18 +0200
commitcb40ec082506c0d9eb05978839bed2f12541af35 (patch)
tree0fe8938e38767200c05ba3e8071bfe6777f75a3e /requests/packages/__init__.py
parentb4a5af4fcbf4e5d0f741aaf9978c728235b11a56 (diff)
downloadpython-requests-cb40ec082506c0d9eb05978839bed2f12541af35.tar
python-requests-cb40ec082506c0d9eb05978839bed2f12541af35.tar.gz
Import requests_2.8.1.orig.tar.gz
Diffstat (limited to 'requests/packages/__init__.py')
-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