Skip to content

[3.13] gh-152132: Fix Py_RunMain() to return an exit code (#153446) (#153455)#153458

Merged
vstinner merged 1 commit into
python:3.13from
vstinner:pyrun_exc13
Jul 9, 2026
Merged

[3.13] gh-152132: Fix Py_RunMain() to return an exit code (#153446) (#153455)#153458
vstinner merged 1 commit into
python:3.13from
vstinner:pyrun_exc13

Conversation

@vstinner

@vstinner vstinner commented Jul 9, 2026

Copy link
Copy Markdown
Member

gh-152132: Fix Py_RunMain() to return an exit code (#153446)

  • Fix Py_RunMain() to return an exit code, rather than calling Py_Exit(), when running a script, a command, or the REPL.

  • _PyRun_SimpleFile() now logs errors to stderr, for example if setting main.file fails.

  • Add tests on Py_RunMain() exitcode.

  • Rename functions:

    • _PyRun_SimpleStringFlagsWithName() => _PyRun_SimpleString()
    • _PyRun_SimpleFileObject() => _PyRun_SimpleFile()
    • _PyRun_AnyFileObject() => _PyRun_AnyFile()
    • _PyRun_InteractiveLoopObject() => _PyRun_InteractiveLoop()
  • Change _PyRun_SimpleString(), _PyRun_SimpleFile(), _PyRun_AnyFile() and _PyRun_InteractiveLoop() return type to PyObject*.

  • pymain_repl() now displays the error if PySys_Audit() or import _pyrepl failed.

  • PyRun_SimpleFileExFlags() and PyRun_AnyFileExFlags() now log PyUnicode_DecodeFSDefault() error. So these functions can no longer return -1 with an exception set.

(cherry picked from commit fac72f1) (cherry picked from commit 62c34a6)

…on#153446) (python#153455)

pythongh-152132: Fix Py_RunMain() to return an exit code (python#153446)

* Fix Py_RunMain() to return an exit code, rather than calling
  Py_Exit(), when running a script, a command, or the REPL.
* _PyRun_SimpleFile() now logs errors to stderr, for example if setting
  __main__.__file__ fails.
* Add tests on Py_RunMain() exitcode.
* Rename functions:

  * _PyRun_SimpleStringFlagsWithName() => _PyRun_SimpleString()
  * _PyRun_SimpleFileObject() => _PyRun_SimpleFile()
  * _PyRun_AnyFileObject() => _PyRun_AnyFile()
  * _PyRun_InteractiveLoopObject() => _PyRun_InteractiveLoop()

* Change _PyRun_SimpleString(), _PyRun_SimpleFile(), _PyRun_AnyFile() and
  _PyRun_InteractiveLoop() return type to PyObject*.
* pymain_repl() now displays the error if PySys_Audit() or
  import _pyrepl failed.
* PyRun_SimpleFileExFlags() and PyRun_AnyFileExFlags() now log
  PyUnicode_DecodeFSDefault() error. So these functions can no longer
  return -1 with an exception set.

(cherry picked from commit fac72f1)
(cherry picked from commit 62c34a6)
@vstinner vstinner merged commit 3d9a420 into python:3.13 Jul 9, 2026
42 checks passed
@vstinner vstinner deleted the pyrun_exc13 branch July 9, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant