chore(di): guard against mutable module container #10841
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.
When disovering functions on module import, we look at the module as a container of function-like objects. If the module is partially loaded, its
__dict__
might mutate. We ensure to iterate over a copy of the module's__dict__
when iterating over it. We expect the original module to mutate dynamically at runtime, so by the time we make a copy of its underlying lookup dict, we are able to detected at the very least everything that corresponds to the actual source code.Checklist
Reviewer Checklist