importlib.util.LazyLoader.
The class was checking its argument as to whether its implementation
of create_module() came directly from importlib.abc.Loader. The
problem is that the classes coming from imoprtlib.machinery do not
directly inherit from the ABC as they come from _frozen_importlib.
Because the documentation has always said that create_module() was
ignored, the check has simply been removed.
from . import machinery
try:
import _frozen_importlib
-# import _frozen_importlib_external
except ImportError as exc:
if exc.name != '_frozen_importlib':
raise
def __check_eager_loader(loader):
if not hasattr(loader, 'exec_module'):
raise TypeError('loader must define exec_module()')
- elif hasattr(loader.__class__, 'create_module'):
- if abc.Loader.create_module != loader.__class__.create_module:
- # Only care if create_module() is overridden in a subclass of
- # importlib.abc.Loader.
- raise TypeError('loader cannot define create_module()')
@classmethod
def factory(cls, loader):
def test_init(self):
with self.assertRaises(TypeError):
+ # Classes that dono't define exec_module() trigger TypeError.
util.LazyLoader(object)
def new_module(self, source_code=None):
Library
-------
+- Issue #26186: Remove an invalid type check in importlib.util.LazyLoader.
+
- Issue #26367: importlib.__init__() raises RuntimeError like
builtins.__import__() when ``level`` is specified but without an accompanying
package specified.