Patch all module attributes in its namespace #3727
Merged
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 patching module attributes, only those defined in its
__all__
variable were considered by default (only falling back to__dict__
if__all__
was None).However those are only a subset of all the module attributes in its namespace (
__dict__
variable).This PR fixes the problem of modules that have non-None
__all__
variable, but try to access an attribute present in__dict__
(and not in__all__
).For example,
pandas
has attribute__version__
only present in__dict__
.__all__
was None, thus all attributes in__dict__
were patched__all__
is not None, thus attributes in__dict__
not present in__all__
are ignoredFix #3724.
CC: @severo @lvwerra