-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
gh-130698: Add safe methods to get prompts for new REPL #131110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
sergey-miryanov
wants to merge
12
commits into
python:main
Choose a base branch
from
sergey-miryanov:gh-130698-pyrepl-ps1-exception
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
7e633d7
gh-130698: Add safe methods to get prompts for new REPL
sergey-miryanov 707bd38
Fix missing types
sergey-miryanov ab84ee6
Fix handling of arg prompt and add tests for it
sergey-miryanov 5d91db7
Make mypy happy again
sergey-miryanov e0b474b
Add news entry
sergey-miryanov 02e7e84
Update Misc/NEWS.d/next/Library/2025-03-13-00-39-54.gh-issue-130698.o…
sergey-miryanov c68a695
Merge branch 'main' into gh-130698-pyrepl-ps1-exception
sergey-miryanov 5293313
Merge branch 'gh-130698-pyrepl-ps1-exception' of github.com:sergey-mi…
sergey-miryanov 4fc6853
Simplify tests for reader with buggy prompt
sergey-miryanov ba8633b
Fix DEFAULT_PS2 string
sergey-miryanov cac161d
Make __get_prompt_str less stricter
sergey-miryanov 60c189f
Update docstring for __get_prompt_str
sergey-miryanov File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
1 change: 1 addition & 0 deletions
1
Misc/NEWS.d/next/Library/2025-03-13-00-39-54.gh-issue-130698.o2aU3e.rst
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Avoid exiting the new REPL when prompt object raises an exception. |
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See https://docs.python.org/3/library/sys.html#sys.ps1
Maybe here the
DEFAULT_PS*
shall be used, too? Are there more places?cpython/Lib/_pyrepl/simple_interact.py
Lines 134 to 135 in 246ed23
IMHO, the comment in
reader.py
is wrong(or at least confusing):cpython/Lib/_pyrepl/reader.py
Lines 171 to 178 in 246ed23
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As @tomasr8 pointed above
cpython/Lib/_pyrepl/reader.py
Lines 196 to 199 in 95800fe
there are different defaults too. So IDK what is really default :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but I'm not sure that usage of DEFAULT_PS* approved overall.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IDK either, but IMHO we should stick with what is documented and the status quo, i.e.
DEFAULT_PS2 = "... "
.The reason why
cpython/Lib/_pyrepl/reader.py
Lines 196 to 199 in 95800fe
is not in effect:
cpython/Lib/_pyrepl/main.py
Lines 49 to 54 in 95800fe
and then later
cpython/Lib/_pyrepl/simple_interact.py
Lines 134 to 139 in 246ed23
and then
cpython/Lib/_pyrepl/readline.py
Lines 375 to 387 in 95800fe
So IMHO we should consistently use
DEFAULT_PS1
andDEFAULT_PS2
in those code parts above, but let @pablogsal decide on it.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moreover, this part
IMHO explains this confusion
cpython/Lib/_pyrepl/reader.py
Lines 171 to 178 in 246ed23
ISTM, this is an implementation detail, and
ps2=ps1
, etc, maps to what we are used to in the cPython REPL.Most probably, because the new PYREPL comes from PyPy?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I saw this and this is a reason that I changed DEFAULT_PS2 yesterday.
I'm not familiar with PyPy, so 🤷♂️