From 99882a1c5ab360ebd035aed72e1a952cabde1987 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 29 Nov 2023 13:49:27 +0000 Subject: [PATCH] warn loading error by default (#5818) --- .../core/openbb_core/app/model/credentials.py | 13 +++++++++++-- openbb_platform/core/openbb_core/app/router.py | 11 +++++++---- .../core/openbb_core/provider/registry.py | 18 ++++++++++++++---- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/openbb_platform/core/openbb_core/app/model/credentials.py b/openbb_platform/core/openbb_core/app/model/credentials.py index 880de382399..9e1de94b860 100644 --- a/openbb_platform/core/openbb_core/app/model/credentials.py +++ b/openbb_platform/core/openbb_core/app/model/credentials.py @@ -1,4 +1,5 @@ import traceback +import warnings from typing import Dict, Optional, Set, Tuple from importlib_metadata import entry_points @@ -12,8 +13,10 @@ from pydantic import ( from pydantic.functional_serializers import PlainSerializer from typing_extensions import Annotated +from openbb_core.app.model.abstract.warning import OpenBBWarning from openbb_core.app.model.extension import Extension from openbb_core.app.provider_interface import ProviderInterface +from openbb_core.env import Env class LoadingError(Exception): @@ -64,8 +67,14 @@ class CredentialsLoader: for c in entry.credentials: self.credentials["obbject"].add(c) except Exception as e: - traceback.print_exception(type(e), e, e.__traceback__) - raise LoadingError(f"Invalid extension '{entry_point.name}'") from e + msg = f"Error loading extension: {entry_point.name}\n" + if Env().DEBUG_MODE: + traceback.print_exception(type(e), e, e.__traceback__) + raise LoadingError(msg + f"\033[91m{e}\033[0m") from e + warnings.warn( + message=msg, + category=OpenBBWarning, + ) def from_providers(self) -> None: """Load credentials from providers""" diff --git a/openbb_platform/core/openbb_core/app/router.py b/openbb_platform/core/openbb_core/app/router.py index 0a65a26a764..ca385ea434c 100644 --- a/openbb_platform/core/openbb_core/app/router.py +++ b/openbb_platform/core/openbb_core/app/router.py @@ -565,10 +565,13 @@ class RouterLoader: if isinstance(entry, Router): router.include_router(router=entry, prefix=f"/{entry_point.name}") except Exception as e: - traceback.print_exception(type(e), e, e.__traceback__) - raise LoadingError( - f"Error loading extension: {entry_point.name}\n" - f"\033[91m{e}\033[0m" + msg = f"Error loading extension: {entry_point.name}\n" + if Env().DEBUG_MODE: + traceback.print_exception(type(e), e, e.__traceback__) + raise LoadingError(msg + f"\033[91m{e}\033[0m") from e + warnings.warn( + message=msg, + category=OpenBBWarning, ) return router diff --git a/openbb_platform/core/openbb_core/provider/registry.py b/openbb_platform/core/openbb_core/provider/registry.py index dc024dc0abd..5c41d7ab6d0 100644 --- a/openbb_platform/core/openbb_core/provider/registry.py +++ b/openbb_platform/core/openbb_core/provider/registry.py @@ -1,11 +1,14 @@ """Provider Registry Module.""" import traceback +import warnings from functools import lru_cache from typing import Dict from importlib_metadata import entry_points +from openbb_core.app.model.abstract.warning import OpenBBWarning +from openbb_core.env import Env from openbb_core.provider.abstract.provider import Provider @@ -40,9 +43,16 @@ class RegistryLoader: registry = Registry() for entry_point in sorted(entry_points(group="openbb_provider_extension")): try: - registry.include_provider(provider=entry_point.load()) + entry = entry_point.load() + if isinstance(entry, Provider): + registry.include_provider(provider=entry) except Exception as e: - traceback.print_exception(type(e), e, e.__traceback__) - raise LoadingError(f"Invalid provider '{entry_point.name}': {e}") from e - + msg = f"Error loading extension: {entry_point.name}\n" + if Env().DEBUG_MODE: + traceback.print_exception(type(e), e, e.__traceback__) + raise LoadingError(msg + f"\033[91m{e}\033[0m") from e + warnings.warn( + message=msg, + category=OpenBBWarning, + ) return registry