mirror of
https://github.com/python/cpython.git
synced 2025-08-27 12:16:04 +00:00
gh-93461: Invalidate sys.path_importer_cache entries with relative paths (GH-93653)
This commit is contained in:
parent
cf730b595e
commit
09243b898a
5 changed files with 36 additions and 14 deletions
|
@ -1399,7 +1399,9 @@ class PathFinder:
|
|||
"""Call the invalidate_caches() method on all path entry finders
|
||||
stored in sys.path_importer_caches (where implemented)."""
|
||||
for name, finder in list(sys.path_importer_cache.items()):
|
||||
if finder is None:
|
||||
# Drop entry if finder name is a relative path. The current
|
||||
# working directory may have changed.
|
||||
if finder is None or not _path_isabs(name):
|
||||
del sys.path_importer_cache[name]
|
||||
elif hasattr(finder, 'invalidate_caches'):
|
||||
finder.invalidate_caches()
|
||||
|
@ -1567,9 +1569,12 @@ class FileFinder:
|
|||
loaders.extend((suffix, loader) for suffix in suffixes)
|
||||
self._loaders = loaders
|
||||
# Base (directory) path
|
||||
self.path = path or '.'
|
||||
if not _path_isabs(self.path):
|
||||
self.path = _path_join(_os.getcwd(), self.path)
|
||||
if not path or path == '.':
|
||||
self.path = _os.getcwd()
|
||||
elif not _path_isabs(path):
|
||||
self.path = _path_join(_os.getcwd(), path)
|
||||
else:
|
||||
self.path = path
|
||||
self._path_mtime = -1
|
||||
self._path_cache = set()
|
||||
self._relaxed_path_cache = set()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue