diff options
author | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-06-26 14:08:38 -0700 |
---|---|---|
committer | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-06-26 14:08:38 -0700 |
commit | 975fa5d6ecf5a61bc36dd17233afbd01a7f049e8 (patch) | |
tree | bb8086e7a3cd5dd12ab70fd487cdcbf759f4f6d8 | |
parent | a0538d398c7704f64b338d59d08e999f961851a4 (diff) |
container cleanup
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() |