Add new rule that flags any module that defines public names but doesn't define __all__#24664
Draft
rp-hue wants to merge 1 commit intoastral-sh:mainfrom
Draft
Add new rule that flags any module that defines public names but doesn't define __all__#24664rp-hue wants to merge 1 commit intoastral-sh:mainfrom
rp-hue wants to merge 1 commit intoastral-sh:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The PR adds a new rule which checks for modules that export public names without defining
__all__, potentially causing namespace polution fromfrom module import *.Examples that now trigger the rule:
from .connected import *
from ..sibling import *
from . import *
This applies only to init.py.
A key distinction is that absolute wildcard imports are intentionally excluded, as they are already covered by F403.
Does this pull request include references to any relevant issues?
Could not find any issues referencing this, this work was done as part of an internal request.
Test Plan
Tests the aforementioned scenario and additional tests that skips nonwildcard relative exports, absolute imports and if the import has
__all__