diff options
-rw-r--r-- | Lib/test/test_zipimport.py | 3 | ||||
-rw-r--r-- | Lib/zipimport.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-09-17-15-58-53.bpo-45183.Vv_vch.rst | 3 | ||||
-rw-r--r-- | Python/importlib_zipimport.h | 2 |
4 files changed, 7 insertions, 3 deletions
diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py index f6f5ca4..8acfeef 100644 --- a/Lib/test/test_zipimport.py +++ b/Lib/test/test_zipimport.py @@ -547,8 +547,9 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase): # Check that the cached data is removed if the file is deleted os.remove(TEMP_ZIP) zi.invalidate_caches() - self.assertIsNone(zi._files) + self.assertFalse(zi._files) self.assertIsNone(zipimport._zip_directory_cache.get(zi.archive)) + self.assertIsNone(zi.find_spec("name_does_not_matter")) def testZipImporterMethodsInSubDirectory(self): packdir = TESTPACK + os.sep diff --git a/Lib/zipimport.py b/Lib/zipimport.py index c55fec6..25eaee9 100644 --- a/Lib/zipimport.py +++ b/Lib/zipimport.py @@ -334,7 +334,7 @@ class zipimporter(_bootstrap_external._LoaderBasics): _zip_directory_cache[self.archive] = self._files except ZipImportError: _zip_directory_cache.pop(self.archive, None) - self._files = None + self._files = {} def __repr__(self): diff --git a/Misc/NEWS.d/next/Library/2021-09-17-15-58-53.bpo-45183.Vv_vch.rst b/Misc/NEWS.d/next/Library/2021-09-17-15-58-53.bpo-45183.Vv_vch.rst new file mode 100644 index 0000000..f3194b3 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-09-17-15-58-53.bpo-45183.Vv_vch.rst @@ -0,0 +1,3 @@ +Have zipimport.zipimporter.find_spec() not raise an exception when the underlying zip +file has been deleted and the internal cache has been reset via +invalidate_cache(). diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index af01711..bb870c3 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -548,7 +548,7 @@ const unsigned char _Py_M__zipimport[] = { 0,106,1,131,1,124,0,95,2,124,0,106,2,116,3,124, 0,106,1,60,0,87,0,100,1,83,0,4,0,116,4,121, 35,1,0,1,0,1,0,116,3,160,5,124,0,106,1,100, - 1,161,2,1,0,100,1,124,0,95,2,89,0,100,1,83, + 1,161,2,1,0,105,0,124,0,95,2,89,0,100,1,83, 0,119,0,41,2,122,41,82,101,108,111,97,100,32,116,104, 101,32,102,105,108,101,32,100,97,116,97,32,111,102,32,116, 104,101,32,97,114,99,104,105,118,101,32,112,97,116,104,46, |