chore(tags): limit dir / tab-completion in REPL#1011
Merged
Conversation
d78fbc3 to
9a27e01
Compare
Member
Tab completion by whom? |
Contributor
Author
|
Python's old and new REPL and IPython's REPL (at least), are based on |
Contributor
Author
9a27e01 to
496e3ba
Compare
Member
|
#1062 has highlighted a real world use case of wanting to more clearly define our Public API, so I'm +1 on using I've not seen this manipulation of |
notatallshaw
approved these changes
Jan 15, 2026
Contributor
Author
|
Thanks! I'll keep this open till after 26.0 settles down. :) |
Signed-off-by: Henry Schreiner <[email protected]>
Signed-off-by: Henry Schreiner <[email protected]>
496e3ba to
299db62
Compare
Contributor
Author
|
pylance does respect |
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.



This adds
__all__and__dir__to the tags module. This exports just the public names; type checkers respect__all__, REPL tab completion respects__dir__. It does not stop someone from using an unexported name at runtime. This is much better than trying to use underscores on things like standard imports or deleting things, and it also works for re-exporting. See https://learn.scientific-python.org/development/patterns/exports for details.Before:
After:
I've skipped exporting, becausemac_platforms,ios_platform, andandroid_platforms_linux_platformsis hidden, but maybe those are public? Ah, nevermind, I do see them in the documentation. Interesting, I'll add them. I could list_linux_platformshere too if we want to, but it's not documented.If this looks good, I'll work on the other modules.