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