class VendorAlias(object):
- def __init__(self, package_name):
- self._package_name = package_name
+ def __init__(self, package_names):
+ self._package_names = package_names
self._vendor_name = __name__
- self._vendor_pkg = self._vendor_name + "." + self._package_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):
)
)
+ 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 module
-sys.meta_path.extend([VendorAlias("urllib3"), VendorAlias("chardet")])
+sys.meta_path.append(VendorAlias(["urllib3", "chardet"]))