From 56f07842690ecd55c46eab945c33ea78fcf6c41a Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Sun, 30 Mar 2025 19:53:41 +0500 Subject: [PATCH 1/3] Handle top level exceptions in new pyrepl and prevent of closing it --- Lib/_pyrepl/simple_interact.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/_pyrepl/simple_interact.py b/Lib/_pyrepl/simple_interact.py index a08546a9319824..3f200ed789341c 100644 --- a/Lib/_pyrepl/simple_interact.py +++ b/Lib/_pyrepl/simple_interact.py @@ -158,3 +158,8 @@ def maybe_run_command(statement: str) -> bool: except MemoryError: console.write("\nMemoryError\n") console.resetbuffer() + except SystemExit: + break + except: + console.showtraceback() + console.resetbuffer() From e380a24436694b7885469488f6b88e0de1cc589e Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Sun, 30 Mar 2025 19:58:25 +0500 Subject: [PATCH 2/3] Add news entry --- .../2025-03-30-19-58-14.gh-issue-131878.uxM26H.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-03-30-19-58-14.gh-issue-131878.uxM26H.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-03-30-19-58-14.gh-issue-131878.uxM26H.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-03-30-19-58-14.gh-issue-131878.uxM26H.rst new file mode 100644 index 00000000000000..79b23db6d0b79e --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-03-30-19-58-14.gh-issue-131878.uxM26H.rst @@ -0,0 +1 @@ +Handle uncaught exceptions in the main input loop for the new REPL. From ccc08061e8f1abe3137bf700da9df90ee8751129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Langa?= Date: Mon, 5 May 2025 16:17:55 +0200 Subject: [PATCH 3/3] Don't swallow process exit codes --- Lib/_pyrepl/simple_interact.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/_pyrepl/simple_interact.py b/Lib/_pyrepl/simple_interact.py index 3f200ed789341c..40b912d3aab140 100644 --- a/Lib/_pyrepl/simple_interact.py +++ b/Lib/_pyrepl/simple_interact.py @@ -159,7 +159,7 @@ def maybe_run_command(statement: str) -> bool: console.write("\nMemoryError\n") console.resetbuffer() except SystemExit: - break + raise except: console.showtraceback() console.resetbuffer()