fix: cleaner IPython import completion for Python 3.7+ #179
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.
I’ve used Python 3.7 module-level
__getattr__
for a while now to allow mistyping hist.axis import as hist.axes to show a warning but work anyway. However, I completely missed a fantastic usage for Python 3.7 module-level__dir__
: you can “fix” IPython’s tab completion to just show the items in__all__
! Wow! One of the main things that bugged me about importing and defining unrelated things in modules, and one reason that boost-histogram has an_internal
module. It was almost a parenthetical comment on the classic article here: https://snarky.ca/lazy-importing-in-python-3-7/