From 7d8202fc8a815b0bb7fbf61fbe7370b37a41f126 Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:07:42 -0800 Subject: [PATCH] [BugFix] Handle ValidationError Better (#6955) * handle validation error * distinguish data model --- .../app/static/utils/decorators.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/openbb_platform/core/openbb_core/app/static/utils/decorators.py b/openbb_platform/core/openbb_core/app/static/utils/decorators.py index 9afac5077d7..94856a1ac16 100644 --- a/openbb_platform/core/openbb_core/app/static/utils/decorators.py +++ b/openbb_platform/core/openbb_core/app/static/utils/decorators.py @@ -58,8 +58,8 @@ def exception_handler(func: Callable[P, R]) -> Callable[P, R]: while tb.tb_next is not None: tb = tb.tb_next - if isinstance(e, ValidationError) and "Data" not in e.title: - error_list = [] + if isinstance(e, ValidationError): + error_list: list = [] validation_error = f"{e.error_count()} validations error(s)" for err in e.errors(include_url=False): loc = ".".join( @@ -80,25 +80,26 @@ def exception_handler(func: Callable[P, R]) -> Callable[P, R]: if msg == "Missing required argument" else err.get("input", "") ) - error_list.append(f"[Arg] {loc} -> input: {_input} -> {msg}") + prefix = f"[Data Model] {e.title}\n" if "Data" in e.title else "" + error_list.append( + f"{prefix}[Arg] {loc} -> input: {_input} -> {msg}" + ) error_list.insert(0, validation_error) error_str = "\n".join(error_list) raise OpenBBError(f"\n[Error] -> {error_str}").with_traceback( tb ) from None if isinstance(e, UnauthorizedError): - raise UnauthorizedError(f"\n[Error] -> {str(e)}").with_traceback( + raise UnauthorizedError(f"\n[Error] -> {e}").with_traceback( tb ) from None if isinstance(e, EmptyDataError): - raise EmptyDataError(f"\n[Empty] -> {str(e)}").with_traceback( - tb - ) from None + raise EmptyDataError(f"\n[Empty] -> {e}").with_traceback(tb) from None if isinstance(e, OpenBBError): - raise OpenBBError(f"\n[Error] -> {str(e)}").with_traceback(tb) from None + raise OpenBBError(f"\n[Error] -> {e}").with_traceback(tb) from None if isinstance(e, Exception): raise OpenBBError( - f"\n[Unexpected Error] -> {e.__class__.__name__} -> {str(e.args[0] or e.args)}" + f"\n[Unexpected Error] -> {e.__class__.__name__} -> {e}" ).with_traceback(tb) from None return None