(original) (raw)
changeset: 100279:9f1e680896ef branch: 3.5 parent: 100277:e523efd47418 user: Brett Cannon brett@python.org date: Sat Feb 20 18:35:41 2016 -0800 files: Lib/importlib/abc.py Lib/importlib/util.py Lib/test/test_importlib/test_lazy.py Misc/NEWS description: Issue #26186: Remove an invalid type check in 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. diff -r e523efd47418 -r 9f1e680896ef Lib/importlib/abc.py --- a/Lib/importlib/abc.py Sat Feb 20 12:52:06 2016 -0800 +++ b/Lib/importlib/abc.py Sat Feb 20 18:35:41 2016 -0800 @@ -4,7 +4,6 @@ from . import machinery try: import _frozen_importlib -# import _frozen_importlib_external except ImportError as exc: if exc.name != '_frozen_importlib': raise diff -r e523efd47418 -r 9f1e680896ef Lib/importlib/util.py --- a/Lib/importlib/util.py Sat Feb 20 12:52:06 2016 -0800 +++ b/Lib/importlib/util.py Sat Feb 20 18:35:41 2016 -0800 @@ -263,11 +263,6 @@ 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): diff -r e523efd47418 -r 9f1e680896ef Lib/test/test_importlib/test_lazy.py --- a/Lib/test/test_importlib/test_lazy.py Sat Feb 20 12:52:06 2016 -0800 +++ b/Lib/test/test_importlib/test_lazy.py Sat Feb 20 18:35:41 2016 -0800 @@ -54,6 +54,7 @@ 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): diff -r e523efd47418 -r 9f1e680896ef Misc/NEWS --- a/Misc/NEWS Sat Feb 20 12:52:06 2016 -0800 +++ b/Misc/NEWS Sat Feb 20 18:35:41 2016 -0800 @@ -76,6 +76,8 @@ 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. /brett@python.org