Skip to content

Commit 03292a3

Browse files
authored
Merge pull request #142 from pitrou/list_sys_modules
Followup to #141: use list(sys.modules) to avoid concurrent modifications
2 parents e19ed38 + 0e860b9 commit 03292a3

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

cloudpickle/cloudpickle.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,15 +436,14 @@ def _save_subimports(self, code, top_level_dependencies):
436436
prefix = x.__name__ + '.'
437437
# A concurrent thread could mutate sys.modules,
438438
# make sure we iterate over a copy to avoid exceptions
439-
modules = sys.modules.copy()
440-
for name, module in modules.items():
439+
for name in list(sys.modules):
441440
# Older versions of pytest will add a "None" module to sys.modules.
442441
if name is not None and name.startswith(prefix):
443442
# check whether the function can address the sub-module
444443
tokens = set(name[len(prefix):].split('.'))
445444
if not tokens - set(code.co_names):
446445
# ensure unpickler executes this import
447-
self.save(module)
446+
self.save(sys.modules[name])
448447
# then discards the reference to it
449448
self.write(pickle.POP)
450449

0 commit comments

Comments
 (0)