From cd97f5ebe937b892f0582fc3440d43a38b625b18 Mon Sep 17 00:00:00 2001 From: Tom Kooij Date: Sat, 25 May 2019 19:02:45 +0200 Subject: [PATCH] Cast cache to list: cache changes during iteration Cache items are changed while looping over the cache items, this causes an `Dictionary keys changed during iteration` error in python>=3.8. Cast the cache to a list first and iterate over the list to prevent the error. --- tables/file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tables/file.py b/tables/file.py index ac9d6accc..d924e3626 100644 --- a/tables/file.py +++ b/tables/file.py @@ -2849,7 +2849,7 @@ def _update_node_locations(self, oldpath, newpath): # Update alive and dead descendents. for cache in [self._node_manager.cache, self._node_manager.registry]: - for nodepath in cache: + for nodepath in list(cache): if nodepath.startswith(oldprefix) and nodepath != oldprefix: nodesuffix = nodepath[oldprefix_len:] newnodepath = join_path(newpath, nodesuffix)