python / cpython

The Python programming language
https://www.python.org/
Other
60.77k stars 29.34k forks source link

Use new REPL for the "code" module #119512

Open treyhunner opened 1 month ago

treyhunner commented 1 month ago

Feature or enhancement

Proposal:

When installing Django in a Python 3.13 virtual environment and using Django's shell command, the old REPL is used.

It would be great if the code module supported the new REPL. From @ambv's reply in https://github.com/python/cpython/issues/119433#issuecomment-2130060062 it looks like this will be considered in Python 3.14.


I would also like to know what projects should do in the meantime. For example, I found a way to modify Django's shell command in one's own project to use the new REPL, by using this within a try-except block:

from _pyrepl.simple_interact import run_multiline_interactive_console
run_multiline_interactive_console()

Is this an acceptable workaround before Python 3.14 is released? Or should this function not be relied on, seeing as it's in an undocumented module?

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

https://github.com/python/cpython/pull/119433#pullrequestreview-2074755660

ambv commented 1 month ago

Is this an acceptable workaround before Python 3.14 is released?

It's unsupported as the underscore in the module name suggests. External projects will do as they please.