bpo-14678: Update zipimport to support importlib.invalidate_caches() (GH-24159)



Added an invalidate_caches() method to the zipimport.zipimporter class based on the implementation of importlib.FileFinder.invalidate_caches(). This was done by adding a get_files() method and an _archive_mtime attribute to zipimport.zipimporter to check for updates or cache invalidation whenever the cache of files and toc entry information in the zipimporter is accessed.
diff --git a/Lib/zipimport.py b/Lib/zipimport.py
index ce3e00e..e88d7a2 100644
--- a/Lib/zipimport.py
+++ b/Lib/zipimport.py
@@ -321,6 +321,16 @@ def get_resource_reader(self, fullname):
         return ZipReader(self, fullname)
 
 
+    def invalidate_caches(self):
+        """Reload the file data of the archive path."""
+        try:
+            self._files = _read_directory(self.archive)
+            _zip_directory_cache[self.archive] = self._files
+        except ZipImportError:
+            _zip_directory_cache.pop(self.archive, None)
+            self._files = None
+
+
     def __repr__(self):
         return f'<zipimporter object "{self.archive}{path_sep}{self.prefix}">'