mirror of
https://github.com/kennethreitz/requests.git
synced 2026-06-05 22:50:18 +00:00
Only alias the imports for vendored dependencies
While discussion the issue, Donald Stufft (@dstufft) and I realized the
simplest solution is to simply add an alias per vendored dependency. The
resulting changes are simple and effective. It prevents the issue in
2.5.2 and 2.5.3 where the following would work:
from requests.packages import webbrowser
This now appropriately raises an ImportError.
Closes #2465
This commit is contained in:
@@ -27,9 +27,10 @@ import sys
|
||||
|
||||
class VendorAlias(object):
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self, package_name):
|
||||
self._package_name = package_name
|
||||
self._vendor_name = __name__
|
||||
self._vendor_pkg = self._vendor_name + "."
|
||||
self._vendor_pkg = self._vendor_name + "." + self._package_name
|
||||
|
||||
def find_module(self, fullname, path=None):
|
||||
if fullname.startswith(self._vendor_pkg):
|
||||
@@ -92,4 +93,4 @@ class VendorAlias(object):
|
||||
return module
|
||||
|
||||
|
||||
sys.meta_path.append(VendorAlias())
|
||||
sys.meta_path.extend([VendorAlias("urllib3"), VendorAlias("chardet")])
|
||||
|
||||
Reference in New Issue
Block a user