diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -763,14 +763,11 @@ path=path) @classmethod - def _path_importer_cache(cls, path, default=None): + def _path_importer_cache(cls, path): """Get the finder for the path from sys.path_importer_cache. If the path is not in the cache, find the appropriate finder and cache - it. If None is cached, get the default finder and cache that - (if applicable). - - Because of NullImporter, some finder should be returned. The only + it. Because of NullImporter, some finder should be returned. The only explicit fail case is if None is cached but the path cannot be used for the default hook, for which ImportError is raised. @@ -783,10 +780,9 @@ finder = cls._path_hooks(path) sys.path_importer_cache[path] = finder else: - if finder is None and default: - # Raises ImportError on failure. - finder = default(path) - sys.path_importer_cache[path] = finder + if finder is None: + raise ImportError('no path hook found for {}'.format(path), + path=path) return finder @classmethod @@ -924,29 +920,6 @@ # Import itself ############################################################### -_DEFAULT_PATH_HOOK = None # Set in _setup() - -class _DefaultPathFinder(PathFinder): - - """Subclass of PathFinder that implements implicit semantics for - __import__.""" - - @classmethod - def _path_hooks(cls, path): - """Search sys.path_hooks as well as implicit path hooks.""" - try: - return super()._path_hooks(path) - except ImportError: - implicit_hooks = [_DEFAULT_PATH_HOOK, _imp.NullImporter] - return super()._path_hooks(path, implicit_hooks) - - @classmethod - def _path_importer_cache(cls, path): - """Use the default path hook when None is stored in - sys.path_importer_cache.""" - return super()._path_importer_cache(path, _DEFAULT_PATH_HOOK) - - class _ImportLockContext: """Context manager for the import lock.""" @@ -1001,7 +974,7 @@ raise ValueError("Empty module name") -_IMPLICIT_META_PATH = [BuiltinImporter, FrozenImporter, _DefaultPathFinder] +_IMPLICIT_META_PATH = [BuiltinImporter, FrozenImporter, PathFinder] _ERR_MSG = 'No module named {!r}' @@ -1196,12 +1169,6 @@ if builtin_os == 'nt': SOURCE_SUFFIXES.append('.pyw') - supported_loaders = [(ExtensionFileLoader, _suffix_list(3), False), - (SourceFileLoader, _suffix_list(1), True), - (_SourcelessFileLoader, _suffix_list(2), True)] - setattr(self_module, '_DEFAULT_PATH_HOOK', - FileFinder.path_hook(*supported_loaders)) - def _install(sys_module, _imp_module): """Install importlib as the implementation of import. @@ -1211,6 +1178,8 @@ """ _setup(sys_module, _imp_module) - orig_import = builtins.__import__ - builtins.__import__ = __import__ - builtins.__original_import__ = orig_import + supported_loaders = [(ExtensionFileLoader, _suffix_list(3), False), + (SourceFileLoader, _suffix_list(1), True), + (_SourcelessFileLoader, _suffix_list(2), True)] + sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders), + _imp.NullImporter]) diff --git a/Lib/importlib/test/import_/test_path.py b/Lib/importlib/test/import_/test_path.py --- a/Lib/importlib/test/import_/test_path.py +++ b/Lib/importlib/test/import_/test_path.py @@ -94,57 +94,9 @@ self.assertIn(os.curdir, sys.path_importer_cache) -class DefaultPathFinderTests(unittest.TestCase): - - """Test _bootstrap._DefaultPathFinder.""" - - def test_implicit_hooks(self): - # Test that the implicit path hooks are used. - bad_path = '' - module = '' - assert not os.path.exists(bad_path) - existing_path = tempfile.mkdtemp() - try: - with util.import_state(): - nothing = _bootstrap._DefaultPathFinder.find_module(module, - path=[existing_path]) - self.assertTrue(nothing is None) - self.assertTrue(existing_path in sys.path_importer_cache) - result = isinstance(sys.path_importer_cache[existing_path], - imp.NullImporter) - self.assertFalse(result) - nothing = _bootstrap._DefaultPathFinder.find_module(module, - path=[bad_path]) - self.assertTrue(nothing is None) - self.assertTrue(bad_path in sys.path_importer_cache) - self.assertTrue(isinstance(sys.path_importer_cache[bad_path], - imp.NullImporter)) - finally: - os.rmdir(existing_path) - - - def test_path_importer_cache_has_None(self): - # Test that the default hook is used when sys.path_importer_cache - # contains None for a path. - module = '' - importer = util.mock_modules(module) - path = '' - # XXX Not blackbox. - original_hook = _bootstrap._DEFAULT_PATH_HOOK - mock_hook = import_util.mock_path_hook(path, importer=importer) - _bootstrap._DEFAULT_PATH_HOOK = mock_hook - try: - with util.import_state(path_importer_cache={path: None}): - loader = _bootstrap._DefaultPathFinder.find_module(module, - path=[path]) - self.assertTrue(loader is importer) - finally: - _bootstrap._DEFAULT_PATH_HOOK = original_hook - - def test_main(): from test.support import run_unittest - run_unittest(FinderTests, DefaultPathFinderTests) + run_unittest(FinderTests) if __name__ == '__main__': test_main() diff --git a/Python/import.c b/Python/import.c --- a/Python/import.c +++ b/Python/import.c @@ -268,8 +268,8 @@ "# can't import zipimport.zipimporter\n"); } else { - /* sys.path_hooks.append(zipimporter) */ - err = PyList_Append(path_hooks, zipimporter); + /* sys.path_hooks.insert(0, zipimporter) */ + err = PyList_Insert(path_hooks, 0, zipimporter); Py_DECREF(zipimporter); if (err < 0) { goto error; diff --git a/Python/importlib.h b/Python/importlib.h index bc4c0d9638e4f8f252a80b871ad40a9fa85bf97e..402cc9f81361a99e9ef1551a95b2dbd5f5de9c26 GIT binary patch literal 169198 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