Repository navigation
Description
Feature or enhancement
Proposal:
Currently, built-in modules (i.e. sys) are not autocompleted in the new REPL. For instance, typing import sy<tab> does not offer sys as a completion possibility.
This is because we use pkgutil.iter_modules under the hood. Since built-in modules have no underlying .py file, they don't show up.
It would be great if the autocomplete could still work with these modules. One possibility would be looking at sys.builtin_module_names and combining it with the results of pkgutil.iter_modules.
The relevant code is in this class:
cpython/Lib/_pyrepl/_module_completer.py
Lines 24 to 26 in cc9add6
| class ModuleCompleter: | |
| """A completer for Python import statements. | |
Here's how I think we can implement it:
- Find built-in modules by looking at
sys.builtin_module_names - Merge the results with
ModuleCompleter.global_cache(might need changing how we represent the modules)
IIUC we only have built-in top-level modules, not submodules, so that should simplify the implementation.
Please don't pick up this issue, I'd like to reserve it for someone at the PyConUS sprints :)
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Activity
gpshead commentedon May 19, 2025
has anyone claimed this? I'm in the new sprinters room and would be happy to hand it to someone.
newbery commentedon May 19, 2025
@gpshead, I wouldn't say I've claimed this yet but I'm looking at it. I'm in the same room. :)
tomasr8 commentedon May 19, 2025
@newbery I'm in 316, let me know if you need help 🙂
tommix626 commentedon May 19, 2025
@newbery I'm also looking into this, any updates now? Can I help along? I'm in 315.
hyoung3 commentedon May 19, 2025
I have a fix. Trying to go through post steps of adding test cases, etc.
tommix626 commentedon May 19, 2025
Also have a fix! @hyoung3 want to meet and sync up? Hope to learn from you on the contribution process. (Are you at Pycon?)
hyoung3 commentedon May 19, 2025
Hi @tommix626, yes. I'm in the beginners room.
newbery commentedon May 19, 2025
@tommix626 , @hyoung3
Cool. I walked away for a bit. Back now. You two need any more assist?
hyoung3 commentedon May 19, 2025
@newbery we are trying to figure out a test now as one doesn't explicitly test the method we updated. If you have some ideas we'd be interested to hear.
tommix626 commentedon May 19, 2025
Update: me and @hyoung3 present @tomasr8 a solution that seems to work and are currently working together on writing tests for it.
hyoung3 commentedon May 19, 2025
@tomasr8 we are having a "pulling our hair out" issue. You have a second to stop by?
gh-134235: Import Autocomplete for Builtin Modules (GH-134277)
pythongh-134235: Import Autocomplete for Builtin Modules (pythonGH-13…
gpshead commentedon May 19, 2025
thanks everyone! this is featurey but i feel like this was intended for 3.14 with the autcomplete feature so i went ahead with the backport. if others or the release manager disagree, they can undo it in the 3.14 branch. :)
tomasr8 commentedon May 19, 2025
Thank you! I wasn't sure whether to mark this as a bug or a feature, but it makes sense to backport this :)
[3.14] gh-134235: Import Autocomplete for Builtin Modules (GH-134277) (…
pythongh-134235: Import Autocomplete for Builtin Modules (pythonGH-13…
pythongh-134235: Import Autocomplete for Builtin Modules (pythonGH-13…