Uh oh!
There was an error while loading. Please reload this page.
gh-140870: PyREPL auto-complete module attributes in import statements - #140871
Conversation
tomasr8
commented
Dec 28, 2025
Could you extract those into a separate PR? I think those are nice to have in any case and we can merge it quickly :) |
Sure, #143244 |
tomasr8
commented
Dec 28, 2025
Quick initial question, can we disable the prompt for stdlib modules? I don't think there should be any concerns with auto-importing from the stdlib |
loic-simon
commented
Dec 28, 2025
We could, yes. I don't think we can decide to auto-import solely on module name (to take care of potential shadowing by first/third-party modules), so we would need to look the module spec location, but since we already have (I'll won't be to get my hands on the code until early January tho) |
tomasr8
commented
Dec 29, 2025
Yup, we definitely need to look at the module location, not just the name |
The new test is quite platform-dependant (I just fixed an iOS + Andoid only fail), it may be a good idea to trigger buildbots on this PR! |
Uh oh!
There was an error while loading. Please reload this page.
StanFromIreland
commented
Jan 11, 2026
Thanks!
I can run the buildbots, do you want them now? |
loic-simon
commented
Jan 11, 2026
Yes please! I don't plan any more change on my side. |
bedevere-bot
commented
Jan 11, 2026
🤖 New build scheduled with the buildbot fleet by @StanFromIreland for commit 9c80367 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F140871%2Fmerge If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Okay that was useful, buildbot failures analysis:
DetailsMissing compression.ztsd: AMD64 Debian root PR AMD64 RHEL8 FIPS Only Blake2 Builtin Hash PR AMD64 RHEL8 LTO + PGO PR AMD64 RHEL8 LTO PR AMD64 RHEL8 PR AMD64 RHEL8 Refleaks PR AMD64 Ubuntu Shared PR ARM64 MacOS M1 NoGIL PR ARM64 MacOS M1 Refleaks NoGIL PR ARM64 Raspbian Debug PR ARM64 Raspbian PR PPC64LE RHEL8 LTO + PGO PR PPC64LE RHEL8 LTO PR PPC64LE RHEL8 PR PPC64LE RHEL8 Refleaks PR s390x Fedora Stable Clang Installed PR s390x Fedora Stable Clang PR s390x Fedora Stable LTO + PGO PR s390x Fedora Stable LTO PR s390x Fedora Stable PR s390x Fedora Stable Refleaks PR s390x RHEL8 LTO + PGO PR s390x RHEL8 LTO PR s390x RHEL8 PR s390x RHEL8 Refleaks PR s390x RHEL9 LTO + PGO PR s390x RHEL9 LTO PR s390x RHEL9 PR s390x RHEL9 Refleaks PR x86-64 MacOS Intel ASAN NoGIL PR x86-64 MacOS Intel NoGIL PR Missing collections.abc.Buffer: Missing AMD64 CentOS9 NoGIL Refleaks PR AMD64 FreeBSD Refleaks PR AMD64 RHEL8 Refleaks PR ARM64 MacOS M1 Refleaks NoGIL PR PPC64LE RHEL8 Refleaks PR s390x Fedora Stable Refleaks PR s390x RHEL8 Refleaks PR s390x RHEL9 Refleaks PR A lot of fails: iOS ARM64 Simulator PR |
loic-simon
commented
Jan 24, 2026
@StanFromIreland if you could trigger a builbots run again, that would be great! Thanks |
bedevere-bot
commented
Jan 24, 2026
🤖 New build scheduled with the buildbot fleet by @StanFromIreland for commit da6cf7f 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F140871%2Fmerge If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
Ok, good news: iOS Siumlator is green! Bad news: all Refleaks builds now fail ~all attribute completion tests 😞 Good news: I reproduced in local ( |
loic-simon
commented
Jan 24, 2026
That check fail doesn't look related to this PR ( Refleak tests pass locally, may I ask for a last run with |
StanFromIreland
commented
Jan 24, 2026
However, it is. You need to update the branch, the current version is incompatible with our CI. |
Tighten the pyrepl completer around a few import-completion edge cases. Relative imports now share one resolver, find_spec failures no longer bubble out, failed-import tracking resets when sys.path changes, and double-tab import actions are cleared once consumed. The patch also keeps empty message lines intact in reader output and updates the targeted tests and comments to match the intended behavior.
a7116a1 to
d57de37Comparepablogsal
commented
Apr 5, 2026
Thanks a lot @loic-simon! I made a small commit fixing a bunch of small things and adding fixes for edge cases and related test cleanups. I also rebased the branch onto the latest main and reran the relevant smoke/tests locally. With this I am happy to land :) |
loic-simon
commented
Apr 5, 2026
Thanks a lot Pablo! If don't want to abuse your time, but while you have PyREPL import suggestions in mind, I have this one-line bugfix PR that could use a merge too 😄 |
pablogsal
commented
Apr 5, 2026
Landed! Thank you for your time :) |
loic-simon
commented
Apr 5, 2026
Heh, of course these two would conflict 😅 fixing it |
Uh oh!
There was an error while loading. Please reload this page.
pablogsal
commented
Apr 5, 2026
Thanks a lot for your contribution @loic-simon 🚀 |
…tements (python#140871) Co-authored-by: Pablo Galindo Salgado <pablogsal@gmail.com>
Add the ability for
_pyrepl._module_completer.ModuleCompleterto suggest attributes, in addition to modules.If the module to import from is not imported yet, ask the user if they want to import it.
This is done by adding the notion of completion action to
_pyrepl.completing_reader.CompletingReader:get_completionscan return a completion action, in addtion to the suggestions listget_completionsis called again, so it can propose new results (here, module attributes)Other changes:
Some unrelated tests to get the coverage rate of-> gh-140870: Full coverage for _pyrepl._module_completer #143244_module_completerto 100% (in a separate commit, I can remove it if needed)Interactive WebAssembly demo (up to date): https://pyrepl-attributes-import-completion.pages.dev
Possible improvement: make modules printing stuff when imported not mess with the prompt ; see this Discourse message