diff options
author | Brett Cannon <brett@python.org> | 2012-04-27 19:30:58 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-04-27 19:30:58 (GMT) |
commit | aa93642a35ed570ba91a80c583df2c8a383686d6 (patch) | |
tree | ba6049cf83600cb3afe6d9e8d52c0b9480b5b22b /Lib/importlib/_bootstrap.py | |
parent | 9e66ac683cce9f6e4abda7d01836dab70eeefb49 (diff) | |
download | cpython-aa93642a35ed570ba91a80c583df2c8a383686d6.zip cpython-aa93642a35ed570ba91a80c583df2c8a383686d6.tar.gz cpython-aa93642a35ed570ba91a80c583df2c8a383686d6.tar.bz2 |
Issue #14605: Use None in sys.path_importer_cache to represent no
finder instead of using some (now non-existent) implicit finder.
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index b88acc5..2b26003 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -766,17 +766,14 @@ class PathFinder: except ImportError: continue else: - raise ImportError("no path hook found for {0}".format(path), - path=path) + return None @classmethod 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. 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. + it. If no finder is available, store None. """ if path == '': @@ -786,15 +783,6 @@ class PathFinder: except KeyError: finder = cls._path_hooks(path) sys.path_importer_cache[path] = finder - else: - if finder is None: - msg = ("'None' in sys.path_importer_cache[{!r}], so retrying " - "finder search; in future versions of Python 'None' " - "will represent no finder".format(path)) - _warnings.warn(msg, ImportWarning) - del sys.path_importer_cache[path] - finder = cls._path_hooks(path) - sys.path_importer_cache[path] = finder return finder @classmethod @@ -804,11 +792,8 @@ class PathFinder: if path is None: path = sys.path for entry in path: - try: - finder = cls._path_importer_cache(entry) - except ImportError: - continue - if finder: + finder = cls._path_importer_cache(entry) + if finder is not None: loader = finder.find_module(fullname) if loader: return loader @@ -1192,6 +1177,5 @@ def _install(sys_module, _imp_module): 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]) + sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)]) sys.meta_path.extend([BuiltinImporter, FrozenImporter, PathFinder]) |