Blob Blame History Raw
diff --git a/requests/__init__.py b/requests/__init__.py
index 8257b61..68443da 100644
--- a/requests/__init__.py
+++ b/requests/__init__.py
@@ -64,6 +64,7 @@ from .exceptions import (
     RequestException, Timeout, URLRequired,
     TooManyRedirects, HTTPError, ConnectionError
 )
+from . import packages
 
 # Set default logging handler to avoid "No handler found" warnings.
 import logging
diff --git a/requests/packages/__init__.py b/requests/packages/__init__.py
index 4dcf870..385581e 100644
--- a/requests/packages/__init__.py
+++ b/requests/packages/__init__.py
@@ -1,107 +1,35 @@
-"""
-Copyright (c) Donald Stufft, pip, and individual contributors
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""
-from __future__ import absolute_import
-
 import sys
 
-
-class VendorAlias(object):
-
-    def __init__(self, package_names):
-        self._package_names = package_names
-        self._vendor_name = __name__
-        self._vendor_pkg = self._vendor_name + "."
-        self._vendor_pkgs = [
-            self._vendor_pkg + name for name in self._package_names
-        ]
-
-    def find_module(self, fullname, path=None):
-        if fullname.startswith(self._vendor_pkg):
-            return self
-
-    def load_module(self, name):
-        # Ensure that this only works for the vendored name
-        if not name.startswith(self._vendor_pkg):
-            raise ImportError(
-                "Cannot import %s, must be a subpackage of '%s'." % (
-                    name, self._vendor_name,
-                )
-            )
-
-        if not (name == self._vendor_name or
-                any(name.startswith(pkg) for pkg in self._vendor_pkgs)):
-            raise ImportError(
-                "Cannot import %s, must be one of %s." % (
-                    name, self._vendor_pkgs
-                )
-            )
-
-        # Check to see if we already have this item in sys.modules, if we do
-        # then simply return that.
-        if name in sys.modules:
-            return sys.modules[name]
-
-        # Check to see if we can import the vendor name
-        try:
-            # We do this dance here because we want to try and import this
-            # module without hitting a recursion error because of a bunch of
-            # VendorAlias instances on sys.meta_path
-            real_meta_path = sys.meta_path[:]
-            try:
-                sys.meta_path = [
-                    m for m in sys.meta_path
-                    if not isinstance(m, VendorAlias)
-                ]
-                __import__(name)
-                module = sys.modules[name]
-            finally:
-                # Re-add any additions to sys.meta_path that were made while
-                # during the import we just did, otherwise things like
-                # requests.packages.urllib3.poolmanager will fail.
-                for m in sys.meta_path:
-                    if m not in real_meta_path:
-                        real_meta_path.append(m)
-
-                # Restore sys.meta_path with any new items.
-                sys.meta_path = real_meta_path
-        except ImportError:
-            # We can't import the vendor name, so we'll try to import the
-            # "real" name.
-            real_name = name[len(self._vendor_pkg):]
-            try:
-                __import__(real_name)
-                module = sys.modules[real_name]
-            except ImportError:
-                raise ImportError("No module named '%s'" % (name,))
-
-        # If we've gotten here we've found the module we're looking for, either
-        # as part of our vendored package, or as the real name, so we'll add
-        # it to sys.modules as the vendored name so that we don't have to do
-        # the lookup again.
-        sys.modules[name] = module
-
-        # Finally, return the loaded module
-        return module
-
-
-sys.meta_path.append(VendorAlias(["urllib3", "chardet"]))
+# This code exists for backwards compatibility reasons.
+
+modules_list = [
+     'urllib3', 'chardet', 'chardet.big5prober', 'chardet.chardetect',
+     'chardet.chardistribution', 'chardet.charsetgroupprober', 'chardet.charsetprober',
+     'chardet.codingstatemachine', 'chardet.compat', 'chardet.constants',
+     'chardet.cp949prober', 'chardet.escprober', 'chardet.escsm', 'chardet.eucjpprober',
+     'chardet.euckrfreq', 'chardet.euckrprober', 'chardet.euctwfreq', 'chardet.euctwprober',
+     'chardet.gb2312freq', 'chardet.gb2312prober', 'chardet.hebrewprober',
+     'chardet.jisfreq', 'chardet.jpcntx', 'chardet.langbulgarianmodel',
+     'chardet.langcyrillicmodel', 'chardet.langgreekmodel', 'chardet.langhebrewmodel',
+     'chardet.langhungarianmodel', 'chardet.langthaimodel', 'chardet.latin1prober',
+     'chardet.mbcharsetprober', 'chardet.mbcsgroupprober', 'chardet.mbcssm',
+     'chardet.sbcharsetprober', 'chardet.sbcsgroupprober', 'chardet.sjisprober',
+     'chardet.universaldetector', 'chardet.utf8prober', 'urllib3._collections',
+     'urllib3.connectionpool', 'urllib3.connection', 'urllib3.contrib', 'urllib3.exceptions',
+     'urllib3.fields', 'urllib3.filepost', 'urllib3.packages', 'urllib3.poolmanager',
+     'urllib3.request', 'urllib3.response', 'urllib3.util', 'urllib3.contrib.ntlmpool',
+     'urllib3.contrib.pyopenssl', 'urllib3.util.connection', 'urllib3.util.request',
+     'urllib3.util.response', 'urllib3.util.retry', 'urllib3.util.ssl_', 'urllib3.util.timeout',
+     'urllib3.util.url', 'urllib3.packages.ordered_dict', 'urllib3.packages.six',
+     'urllib3.packages.ssl_match_hostname', 'urllib3.packages.ssl_match_hostname.implementation'
+     ]
+
+
+for package in modules_list:
+    try:
+        __import__(package)
+    except ImportError:
+        pass
+    else:
+        sys.modules['requests.packages.' + package] = sys.modules[package]
+        globals()[package] = sys.modules[package]