123456789101112131415161718192021222324252627282930313233343536 |
- '''
- 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
|