summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-06-26 14:08:38 -0700
committerDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-06-26 14:08:38 -0700
commit975fa5d6ecf5a61bc36dd17233afbd01a7f049e8 (patch)
treebb8086e7a3cd5dd12ab70fd487cdcbf759f4f6d8
parenta0538d398c7704f64b338d59d08e999f961851a4 (diff)
container cleanup
-rw-r--r--openbb_platform/core/openbb_core/app/command_runner.py58
-rw-r--r--openbb_platform/core/openbb_core/app/model/credentials.py4
-rw-r--r--openbb_platform/core/openbb_core/app/router.py6
-rw-r--r--openbb_platform/core/openbb_core/app/static/container.py12
-rw-r--r--openbb_platform/core/openbb_core/app/static/package_builder.py21
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/equity_historical.py7
6 files changed, 66 insertions, 42 deletions
diff --git a/openbb_platform/core/openbb_core/app/command_runner.py b/openbb_platform/core/openbb_core/app/command_runner.py
index ea0e513c499..fe24524e857 100644
--- a/openbb_platform/core/openbb_core/app/command_runner.py
+++ b/openbb_platform/core/openbb_core/app/command_runner.py
@@ -8,36 +8,34 @@ from datetime import datetime
from inspect import Parameter, signature
from sys import exc_info
from time import perf_counter_ns
-from typing import Any, Callable, Dict, List, Optional, Tuple, Type
+from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Type
from warnings import catch_warnings, showwarning, warn
from pydantic import BaseModel, ConfigDict, create_model
-from openbb_core.app.logs.logging_service import LoggingService
from openbb_core.app.model.abstract.error import OpenBBError
from openbb_core.app.model.abstract.warning import OpenBBWarning, cast_warning
-from openbb_core.app.model.command_context import CommandContext
from openbb_core.app.model.metadata import Metadata
from openbb_core.app.model.obbject import OBBject
-from openbb_core.app.model.system_settings import SystemSettings
-from openbb_core.app.model.user_settings import UserSettings
from openbb_core.app.provider_interface import ExtraParams
-from openbb_core.app.router import CommandMap
-from openbb_core.app.service.system_service import SystemService
-from openbb_core.app.service.user_service import UserService
from openbb_core.env import Env
from openbb_core.provider.utils.helpers import maybe_coroutine, run_async
+if TYPE_CHECKING:
+ from openbb_core.app.model.system_settings import SystemSettings
+ from openbb_core.app.model.user_settings import UserSettings
+ from openbb_core.app.router import CommandMap
+
class ExecutionContext:
"""Execution context."""
def __init__(
self,
- command_map: CommandMap,
+ command_map: "CommandMap",
route: str,
- system_settings: SystemSettings,
- user_settings: UserSettings,
+ system_settings: "SystemSettings",
+ user_settings: "UserSettings",
) -> None:
"""Initialize the execution context."""
self.command_map = command_map
@@ -104,10 +102,13 @@ class ParametersBuilder:
def update_command_context(
func: Callable,
kwargs: Dict[str, Any],
- system_settings: SystemSettings,
- user_settings: UserSettings,
+ system_settings: "SystemSettings",
+ user_settings: "UserSettings",
) -> Dict[str, Any]:
"""Update the command context with the available user and system settings."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.model.command_context import CommandContext
+
argcount = func.__code__.co_argcount
if "cc" in func.__code__.co_varnames[:argcount]:
kwargs["cc"] = CommandContext(
@@ -281,6 +282,9 @@ class StaticCommandRunner:
kwargs: Dict[str, Any],
) -> OBBject:
"""Execute a function and return the output."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.logs.logging_service import LoggingService
+
user_settings = execution_context.user_settings
system_settings = execution_context.system_settings
@@ -403,50 +407,60 @@ class CommandRunner:
def __init__(
self,
- command_map: Optional[CommandMap] = None,
- system_settings: Optional[SystemSettings] = None,
- user_settings: Optional[UserSettings] = None,
+ command_map: Optional["CommandMap"] = None,
+ system_settings: Optional["SystemSettings"] = None,
+ user_settings: Optional["UserSettings"] = None,
) -> None:
"""Initialize the command runner."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.router import CommandMap
+ from openbb_core.app.service.system_service import SystemService
+ from openbb_core.app.service.user_service import UserService
+
self._command_map = command_map or CommandMap()
self._system_settings = system_settings or SystemService().system_settings
self._user_settings = user_settings or UserService.read_from_file()
def init_logging_service(self) -> None:
"""Initialize the logging service."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.logs.logging_service import LoggingService
+
_ = LoggingService(
system_settings=self._system_settings, user_settings=self._user_settings
)
@property
- def command_map(self) -> CommandMap:
+ def command_map(self) -> "CommandMap":
"""Command map."""
return self._command_map
@property
- def system_settings(self) -> SystemSettings:
+ def system_settings(self) -> "SystemSettings":
"""System settings."""
return self._system_settings
@property
- def user_settings(self) -> UserSettings:
+ def user_settings(self) -> "UserSettings":
"""User settings."""
return self._user_settings
@user_settings.setter
- def user_settings(self, user_settings: UserSettings) -> None:
+ def user_settings(self, user_settings: "UserSettings") -> None:
self._user_settings = user_settings
# pylint: disable=W1113
async def run(
self,
route: str,
- user_settings: Optional[UserSettings] = None,
+ user_settings: Optional["UserSettings"] = None,
/,
*args,
**kwargs,
) -> OBBject:
"""Run a command and return the OBBject as output."""
+ # pylint: disable=import-outside-toplevel
+
self._user_settings = user_settings or self._user_settings
execution_context = ExecutionContext(
@@ -462,7 +476,7 @@ class CommandRunner:
def sync_run(
self,
route: str,
- user_settings: Optional[UserSettings] = None,
+ user_settings: Optional["UserSettings"] = None,
/,
*args,
**kwargs,
diff --git a/openbb_platform/core/openbb_core/app/model/credentials.py b/openbb_platform/core/openbb_core/app/model/credentials.py
index f54198e9495..457accd7b70 100644
--- a/openbb_platform/core/openbb_core/app/model/credentials.py
+++ b/openbb_platform/core/openbb_core/app/model/credentials.py
@@ -86,10 +86,10 @@ class CredentialsLoader:
# We load providers first to give them priority choosing credential names
self.from_providers()
self.from_obbject()
- model = create_model( # type: ignore
+ model = create_model(
"Credentials",
__config__=ConfigDict(validate_assignment=True, populate_by_name=True),
- **self.format_credentials(),
+ **self.format_credentials(), # type: ignore
)
model.origins = self.credentials
return model
diff --git a/openbb_platform/core/openbb_core/app/router.py b/openbb_platform/core/openbb_core/app/router.py
index 6185eea74b6..6c43c8d9971 100644
--- a/openbb_platform/core/openbb_core/app/router.py
+++ b/openbb_platform/core/openbb_core/app/router.py
@@ -26,7 +26,6 @@ from typing_extensions import Annotated, ParamSpec, _AnnotatedAlias
from openbb_core.app.deprecation import DeprecationSummary, OpenBBDeprecationWarning
from openbb_core.app.extension_loader import ExtensionLoader
from openbb_core.app.model.abstract.warning import OpenBBWarning
-from openbb_core.app.model.command_context import CommandContext
from openbb_core.app.model.example import filter_list
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.provider_interface import (
@@ -115,6 +114,9 @@ class CommandValidator:
@classmethod
def check_parameters(cls, func: Callable):
"""Check whether or not a parameter is a valid."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.model.command_context import CommandContext
+
sig = signature(func)
parameter_map = sig.parameters
@@ -140,6 +142,8 @@ class CommandValidator:
@classmethod
def check_return(cls, func: Callable):
"""Check whether or not a return type is a valid."""
+ # pylint: disable=import-outside-toplevel
+
sig = signature(func)
return_type = sig.return_annotation
diff --git a/openbb_platform/core/openbb_core/app/static/container.py b/openbb_platform/core/openbb_core/app/static/container.py
index 0ab82da41bc..c958f8fe602 100644
--- a/openbb_platform/core/openbb_core/app/static/container.py
+++ b/openbb_platform/core/openbb_core/app/static/container.py
@@ -1,17 +1,21 @@
"""Container class."""
-from typing import Any, Optional, Tuple
+from typing import TYPE_CHECKING, Any, Optional, Tuple
-from openbb_core.app.command_runner import CommandRunner
from openbb_core.app.model.abstract.error import OpenBBError
-from openbb_core.app.model.obbject import OBBject
+
+if TYPE_CHECKING:
+ from openbb_core.app.command_runner import CommandRunner
class Container:
"""Container class for the command runner session."""
- def __init__(self, command_runner: CommandRunner) -> None:
+ def __init__(self, command_runner: "CommandRunner") -> None:
"""Initialize the container."""
+ # pylint: disable=import-outside-toplevel
+ from openbb_core.app.model.obbject import OBBject
+
self._command_runner = command_runner
OBBject._user_settings = command_runner.user_settings
OBBject._system_settings = command_runner.system_settings
diff --git a/openbb_platform/core/openbb_core/app/static/package_builder.py b/openbb_platform/core/openbb_core/app/static/package_builder.py
index 184edaa725b..916727c467b 100644
--- a/openbb_platform/core/openbb_core/app/static/package_builder.py
+++ b/openbb_platform/core/openbb_core/app/static/package_builder.py
@@ -47,11 +47,12 @@ from openbb_core.app.static.utils.console import Console
from openbb_core.app.static.utils.linters import Linters
from openbb_core.app.version import CORE_VERSION, VERSION
from openbb_core.env import Env
-from openbb_core.provider.abstract.data import Data
if TYPE_CHECKING:
- from numpy import ndarray
- from pandas import DataFrame, Series
+ # pylint: disable=import-outside-toplevel
+ from numpy import ndarray # noqa
+ from pandas import DataFrame, Series # noqa
+ from openbb_core.provider.abstract.data import Data # noqa
try:
from openbb_charting import Charting # type: ignore
@@ -69,7 +70,7 @@ DataProcessingSupportedTypes = TypeVar(
"Series",
List["Series"],
"ndarray",
- Data,
+ "Data",
)
TAB = " "
@@ -362,6 +363,7 @@ class ImportDefinition:
# ruff --fix the resulting code to remove unused imports.
# TODO: Find a better way to handle this. This is a temporary solution.
code += "\nimport openbb_core.provider"
+ code += "\nfrom openbb_core.provider.abstract.data import Data"
code += "\nimport pandas"
code += "\nfrom pandas import DataFrame, Series"
code += "\nimport numpy"
@@ -372,25 +374,21 @@ class ImportDefinition:
code += "\nfrom pydantic import BaseModel"
code += "\nfrom inspect import Parameter"
code += "\nimport typing"
- code += (
- "\nfrom typing import ForwardRef, List, Dict, Union, Optional, Literal, Any"
- )
+ code += "\nfrom typing import TYPE_CHECKING, ForwardRef, List, Dict, Union, Optional, Literal, Any"
code += "\nfrom annotated_types import Ge, Le, Gt, Lt"
code += "\nfrom warnings import warn, simplefilter"
if sys.version_info < (3, 9):
code += "\nimport typing_extensions"
else:
code += "\nfrom typing_extensions import Annotated, deprecated"
- code += "\nfrom openbb_core.app.utils import df_to_basemodel"
+ # code += "\nfrom openbb_core.app.utils import df_to_basemodel"
code += "\nfrom openbb_core.app.static.utils.decorators import exception_handler, validate\n"
code += "\nfrom openbb_core.app.static.utils.filters import filter_inputs\n"
- code += "\nfrom openbb_core.provider.abstract.data import Data"
code += "\nfrom openbb_core.app.deprecation import OpenBBDeprecationWarning\n"
code += "\nfrom openbb_core.app.model.field import OpenBBField"
# if path.startswith("/quantitative"):
# code += "\nfrom openbb_quantitative.models import "
# code += "(CAPMModel,NormalityModel,OmegaModel,SummaryModel,UnitRootModel)"
-
module_list = [hint_type.__module__ for hint_type in hint_type_list]
module_list = list(set(module_list))
module_list.sort()
@@ -712,8 +710,9 @@ class MethodDefinition:
"pandas.core.frame.DataFrame", "pandas.DataFrame"
)
func_params = func_params.replace(
- "openbb_core.provider.abstract.data.Data", "Data"
+ "openbb_core.provider.abstract.data.Data", '"Data"'
)
+ func_params = func_params.replace("ForwardRef('Data')", "Data")
func_params = func_params.replace("ForwardRef('DataFrame')", "DataFrame")
func_params = func_params.replace("ForwardRef('Series')", "Series")
func_params = func_params.replace("ForwardRef('ndarray')", "ndarray")
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/equity_historical.py b/openbb_platform/core/openbb_core/provider/standard_models/equity_historical.py
index baaf36b1fe1..f25728fe99a 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/equity_historical.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/equity_historical.py
@@ -6,7 +6,6 @@ from datetime import (
)
from typing import Optional, Union
-from dateutil import parser
from pydantic import Field, field_validator
from openbb_core.provider.abstract.data import Data
@@ -59,8 +58,12 @@ class EquityHistoricalData(Data):
)
@field_validator("date", mode="before", check_fields=False)
- def date_validate(cls, v): # pylint: disable=E0213
+ @classmethod
+ def date_validate(cls, v):
"""Return formatted datetime."""
+ # pylint: disable=import-outside-toplevel
+ from dateutil import parser
+
if ":" in str(v):
return parser.isoparse(str(v))
return parser.parse(str(v)).date()