Skip to content

Commit 91e8889

Browse files
bpo-14916: use specified tokenizer fd for file input (GH-31006)
@pablogsal, sorry i failed to rebase to main, so i recreated https://github.com/python/cpython/pull/22190GH-issuecomment-1024633392 > PyRun_InteractiveOne\*() functions allow to explicitily set fd instead of stdin. but stdin was hardcoded in readline call. > This patch does not fix target file for prompt unlike original bpo one : prompt fd is unrelated to tokenizer source which could be read only. It is more of a bugfix regarding the docs : actual documentation say "prompt the user" so one would expect prompt to go on stdout not a file for both PyRun_InteractiveOne\*() and PyRun_InteractiveLoop\*(). Automerge-Triggered-By: GH:pablogsal (cherry picked from commit 89b1304) Co-authored-by: Paul m. p. P <[email protected]>
1 parent 4f76b36 commit 91e8889

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed bug in the tokenizer that prevented ``PyRun_InteractiveOne`` from parsing from the provided FD.

Parser/tokenizer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ tok_underflow_interactive(struct tok_state *tok) {
854854
tok->done = E_INTERACT_STOP;
855855
return 1;
856856
}
857-
char *newtok = PyOS_Readline(stdin, stdout, tok->prompt);
857+
char *newtok = PyOS_Readline(tok->fp ? tok->fp : stdin, stdout, tok->prompt);
858858
if (newtok != NULL) {
859859
char *translated = translate_newlines(newtok, 0, tok);
860860
PyMem_Free(newtok);

0 commit comments

Comments
 (0)