(original) (raw)

changeset: 90807:1adc8eb362f0 parent: 90805:b2c5d0cba5fd parent: 90806:660c82192c69 user: Brett Cannon brett@python.org date: Fri May 23 12:32:30 2014 -0400 files: Misc/NEWS description: Merge for issue #14710 diff -r b2c5d0cba5fd -r 1adc8eb362f0 Lib/pkgutil.py --- a/Lib/pkgutil.py Fri May 23 16:15:06 2014 +0300 +++ b/Lib/pkgutil.py Fri May 23 12:32:30 2014 -0400 @@ -456,6 +456,8 @@ """ if module_or_name in sys.modules: module_or_name = sys.modules[module_or_name] + if module_or_name is None: + return None if isinstance(module_or_name, ModuleType): module = module_or_name loader = getattr(module, '__loader__', None) @@ -487,7 +489,7 @@ # pkgutil previously raised ImportError msg = "Error while finding loader for {!r} ({}: {})" raise ImportError(msg.format(fullname, type(ex), ex)) from ex - return spec.loader + return spec.loader if spec is not None else None def extend_path(path, name): diff -r b2c5d0cba5fd -r 1adc8eb362f0 Lib/test/test_pkgutil.py --- a/Lib/test/test_pkgutil.py Fri May 23 16:15:06 2014 +0300 +++ b/Lib/test/test_pkgutil.py Fri May 23 12:32:30 2014 -0400 @@ -363,6 +363,20 @@ loader = pkgutil.get_loader(name) self.assertIsNone(loader) + def test_get_loader_None_in_sys_modules(self): + name = 'totally bogus' + sys.modules[name] = None + try: + loader = pkgutil.get_loader(name) + finally: + del sys.modules[name] + self.assertIsNone(loader) + + def test_find_loader_missing_module(self): + name = 'totally bogus' + loader = pkgutil.find_loader(name) + self.assertIsNone(loader) + def test_find_loader_avoids_emulation(self): with check_warnings() as w: self.assertIsNotNone(pkgutil.find_loader("sys")) /brett@python.org