From 5a62a097aa5b593522123c50173eb2d641f36074 Mon Sep 17 00:00:00 2001 From: hjoaquim Date: Wed, 24 Jan 2024 10:58:54 +0000 Subject: [PATCH] removing access to extra/metadata and use designated private attrs instead --- .../core/openbb_core/app/command_runner.py | 4 ++++ .../core/openbb_core/app/model/obbject.py | 16 +++++++++++----- .../charting/openbb_charting/__init__.py | 16 ++++++---------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/openbb_platform/core/openbb_core/app/command_runner.py b/openbb_platform/core/openbb_core/app/command_runner.py index 8b544a78047..f6db3574e3a 100644 --- a/openbb_platform/core/openbb_core/app/command_runner.py +++ b/openbb_platform/core/openbb_core/app/command_runner.py @@ -396,6 +396,10 @@ class StaticCommandRunner: if Env().DEBUG_MODE: raise OpenBBError(e) from e + # pylint: disable=protected-access + obbject._route = route + obbject._standard_params = kwargs.get("standard_params", None) + return obbject diff --git a/openbb_platform/core/openbb_core/app/model/obbject.py b/openbb_platform/core/openbb_core/app/model/obbject.py index 4f5c2da7d06..30ca0ffca4a 100644 --- a/openbb_platform/core/openbb_core/app/model/obbject.py +++ b/openbb_platform/core/openbb_core/app/model/obbject.py @@ -17,7 +17,7 @@ from typing import ( import pandas as pd from numpy import ndarray -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, PrivateAttr from openbb_core.app.model.abstract.error import OpenBBError from openbb_core.app.model.abstract.tagged import Tagged @@ -40,6 +40,10 @@ T = TypeVar("T") class OBBject(Tagged, Generic[T]): """OpenBB object.""" + accessors: ClassVar[Set[str]] = set() + _user_settings: ClassVar[Optional[BaseModel]] = None + _system_settings: ClassVar[Optional[BaseModel]] = None + results: Optional[T] = Field( default=None, description="Serializable results.", @@ -60,10 +64,12 @@ class OBBject(Tagged, Generic[T]): default_factory=dict, description="Extra info.", ) - _user_settings: ClassVar[Optional[BaseModel]] = None - _system_settings: ClassVar[Optional[BaseModel]] = None - - accessors: ClassVar[Set[str]] = set() + _route: Optional[str] = PrivateAttr( + default=None, + ) + _standard_params: Optional[Dict[str, Any]] = PrivateAttr( + default_factory=dict, + ) def __repr__(self) -> str: """Human readable representation of the object.""" diff --git a/openbb_platform/obbject_extensions/charting/openbb_charting/__init__.py b/openbb_platform/obbject_extensions/charting/openbb_charting/__init__.py index 3ca1a299e5e..6306cc46425 100644 --- a/openbb_platform/obbject_extensions/charting/openbb_charting/__init__.py +++ b/openbb_platform/obbject_extensions/charting/openbb_charting/__init__.py @@ -62,18 +62,14 @@ class Charting: def show(self, **kwargs): """Display chart and save it to the OBBject.""" - # TODO: in order for this to perform, either metadata can't be a user preference - # or this need to be done differently, perhaps add the params and the route to - # OBBject private attributes at the CommandRunner level. - - route = self._obbject.extra["metadata"].route - standard_params = self._obbject.extra["metadata"].arguments["standard_params"] - - charting_function = self._get_chart_function(route) - + charting_function = self._get_chart_function( + self._obbject._route # pylint: disable=protected-access + ) kwargs["obbject_item"] = self._obbject.results kwargs["charting_settings"] = self._charting_settings - kwargs["standard_params"] = standard_params + kwargs[ + "standard_params" + ] = self._obbject._standard_params # pylint: disable=protected-access fig, content = charting_function(**kwargs) self._obbject.chart = Chart(