From 4c0b223e7b98482de0fb06d1c1e77f3ac9782d1e Mon Sep 17 00:00:00 2001 From: Evgeny Date: Tue, 10 Dec 2024 13:26:12 +0700 Subject: [PATCH] Allow non-integer exit codes (#5721) * Allow non-integer exit codes justl like in Python proper * doc: add news item * Update fr-exit-str.rst --------- Co-authored-by: Andy Kipp --- news/fr-exit-str.rst | 23 +++++++++++++++++++++++ xonsh/main.py | 9 ++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 news/fr-exit-str.rst diff --git a/news/fr-exit-str.rst b/news/fr-exit-str.rst new file mode 100644 index 000000000..450a46c15 --- /dev/null +++ b/news/fr-exit-str.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* Fixed non-int sys.exit codes raising ValueError. + +**Security:** + +* diff --git a/xonsh/main.py b/xonsh/main.py index c833e1456..17ce7ac8c 100644 --- a/xonsh/main.py +++ b/xonsh/main.py @@ -606,7 +606,14 @@ def main_xonsh(args): err_type, err, _ = exc_info if err_type is SystemExit: code = getattr(exc_info[1], "code", 0) - exit_code = int(code) if code is not None else 0 + if code is None: + exit_code = 0 + else: + exit_code = code + try: + exit_code = int(code) + except ValueError: + pass XSH.exit = exit_code else: exit_code = 1