fix: prevent deletion of Local values from messing with other ctxs #523
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.
85d2445#r161477713 changed the
ContextVar
to be a dict ofContextVars
While that does work in preventing the contexts to leak, removing a value with
del local.value
completely removes theContextVar
, literally unsetting it from all other contexts.As we discussed here, using
.copy()
is simpler and should have no downsides compared to the current solution, especially since it is a shallow copy onlyThis PR reverts the mentioned change and instead uses a
.copy()
for both__setattr__
and__delattr__
. The added tests there still pass for this solution, and I also added a new test that would have caught this issue.Fixes #522
Fixes #485