From 153d7cb7a34d0de61de1e56c6ede23f3be007f72 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 1 Jun 2024 14:56:26 +0200 Subject: [PATCH] feat: support reraising with error cause --- frappe/utils/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py index 0f34461139..23bce60805 100644 --- a/frappe/utils/__init__.py +++ b/frappe/utils/__init__.py @@ -296,16 +296,18 @@ def get_traceback(with_context=False) -> str: """Return the traceback of the Exception.""" from traceback_with_variables import iter_exc_lines - exc_type, exc_value, exc_tb = sys.exc_info() - - if not any([exc_type, exc_value, exc_tb]): + exc = sys.exception() + if not exc: return "" + if exc.__cause__: + exc = exc.__cause__ + if with_context: - trace_list = iter_exc_lines(fmt=_get_traceback_sanitizer()) + trace_list = iter_exc_lines(exc, fmt=_get_traceback_sanitizer()) tb = "\n".join(trace_list) else: - trace_list = traceback.format_exception(exc_type, exc_value, exc_tb) + trace_list = traceback.format_exception(exc) tb = "".join(cstr(t) for t in trace_list) bench_path = get_bench_path() + "/"