[3.9] bpo-40895: Update weakref documentation to remove old warnings (GH-20687) #20791
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The doccumentation at https://docs.python.org/3.10/library/weakref.html cautions that the
WeakKeyDictionary
andWeakValueDictionary
are susceptible to the problem of dictionary mutation during iteration.These notes present the user with a problem that has no easy solution.
I dug into the implementation and found that fortunately, Antoine Pitrou already addressed this challenge (10 years ago!) by introducing an
_IterationGuard
context manager to the implementation, which delays mutation while an iteration is in progress.I asked for confirmation and @pitrou agreed that these notes could be removed:
c1baa601e2b558deb690edfdf334fceee3b03327GH-commitcomment-39514438
(cherry picked from commit 1642c0e)
Co-authored-by: Daniel Fortunov [email protected]
https://bugs.python.org/issue40895