cpython/Programs
Victor Stinner 3d9a42049e
[3.13] gh-152132: Fix Py_RunMain() to return an exit code (#153446) (#153455) (#153458)
[3.14] gh-152132: Fix Py_RunMain() to return an exit code (#153446) (#153455)

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 fac72f1ee9)
(cherry picked from commit 62c34a62c2)
2026-07-09 22:50:58 +02:00
..
_bootstrap_python.c
_freeze_module.c [3.13] gh-123919: Fix null handling in _freeze_module.c (GH-123920) (#123948) 2024-09-29 18:22:15 -07:00
_freeze_module.py bpo-45949: Pure Python freeze module for cross builds (GH-29899) 2021-12-13 20:48:46 +01:00
_testembed.c [3.13] gh-152132: Fix Py_RunMain() to return an exit code (#153446) (#153455) (#153458) 2026-07-09 22:50:58 +02:00
freeze_test_frozenmain.py bpo-44131: Test Py_FrozenMain() (GH-26126) 2021-05-17 23:48:35 +02:00
python.c
README
test_frozenmain.h [3.13] gh-93691: fix too broad source locations of for statement iterators (GH-120330) (#120399) 2024-06-12 12:18:43 +00:00
test_frozenmain.py bpo-44131: Py_FrozenMain() uses PyConfig_SetBytesArgv() (GH-26201) 2021-05-20 12:08:05 +02:00

Source files for binary executables (as opposed to shared modules)