Merge pull request #2466 from sigmavirus24/bug/2465

Only add VendorAliases for vendored dependencies
This commit is contained in:
Ian Cordasco
2015-03-04 07:49:12 -06:00
2 changed files with 21 additions and 2 deletions
+14 -2
View File
@@ -27,9 +27,13 @@ import sys
class VendorAlias(object):
def __init__(self):
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):
@@ -44,6 +48,14 @@ class VendorAlias(object):
)
)
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:
@@ -92,4 +104,4 @@ class VendorAlias(object):
return module
sys.meta_path.append(VendorAlias())
sys.meta_path.append(VendorAlias(["urllib3", "chardet"]))
+7
View File
@@ -1611,5 +1611,12 @@ def test_urllib3_retries():
with pytest.raises(RetryError):
s.get(httpbin('status/500'))
def test_vendor_aliases():
from requests.packages import urllib3
from requests.packages import chardet
with pytest.raises(ImportError):
from requests.packages import webbrowser
if __name__ == '__main__':
unittest.main()