Skip to content

Commit

Permalink
pythongh-116811: Ensure MetadataPathFinder.invalidate_caches is reach…
Browse files Browse the repository at this point in the history
…able when delegated through PathFinder. (python#116812)

* Make MetadataPathFinder a proper classmethod.

* In PathFinder.invalidate_caches, also invoke MetadataPathFinder.invalidate_caches.

* Add blurb
  • Loading branch information
jaraco authored Mar 14, 2024
1 parent be59aaf commit 5f52d20
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Lib/importlib/_bootstrap_external.py
Original file line number Diff line number Diff line change
Expand Up @@ -1470,6 +1470,9 @@ def invalidate_caches():
# https://bugs.python.org/issue45703
_NamespacePath._epoch += 1

from importlib.metadata import MetadataPathFinder
MetadataPathFinder.invalidate_caches()

@staticmethod
def _path_hooks(path):
"""Search sys.path_hooks for a finder for 'path'."""
Expand Down
1 change: 1 addition & 0 deletions Lib/importlib/metadata/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,7 @@ def _search_paths(cls, name, paths):
path.search(prepared) for path in map(FastPath, paths)
)

@classmethod
def invalidate_caches(cls) -> None:
FastPath.__new__.cache_clear()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
In ``PathFinder.invalidate_caches``, delegate to
``MetadataPathFinder.invalidate_caches``.

0 comments on commit 5f52d20

Please sign in to comment.