diff --git a/openbb_sdk/openbb/__init__.py b/openbb_sdk/openbb/__init__.py index b53202aa0d4..2c4d7d901bc 100644 --- a/openbb_sdk/openbb/__init__.py +++ b/openbb_sdk/openbb/__init__.py @@ -1,4 +1,4 @@ # flake8: noqa -from openbb_sdk.openbb_sdk_core.openbb_sdk_core.app.static.command_runner_wrapper import app - -account = app.account +from openbb_sdk.openbb_sdk_core.openbb_sdk_core.app.static.command_runner_wrapper import ( + app, +) diff --git a/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/static/package_builder.py b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/static/package_builder.py index c29a3baa754..d824cf01383 100644 --- a/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/static/package_builder.py +++ b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/static/package_builder.py @@ -148,7 +148,7 @@ class ImportDefinition: code += "\nimport pydantic" code += "\nfrom typing import List, Dict, Union, Optional, Literal" code += "\nimport warnings" - code += "\nfrom builtin_extensions.common.utils import from_dataframe" + code += "\nfrom openbb_sdk_core.app.utils import to_dataframe" code += "\nfrom openbb_sdk_core.app.model.abstract.warning import OpenBBWarning" module_list = [hint_type.__module__ for hint_type in hint_type_list] diff --git a/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py new file mode 100644 index 00000000000..a2ab3a9ec23 --- /dev/null +++ b/openbb_sdk/openbb_sdk_core/openbb_sdk_core/app/utils.py @@ -0,0 +1,40 @@ +from typing import List, Optional, Union + +import pandas as pd +from pydantic import BaseModel + + +def to_dataframe(data: List[BaseModel], index: Optional[str] = None) -> pd.DataFrame: + """Convert to a Pandas DataFrame.""" + df = pd.DataFrame([d.dict() for d in data]) + if index and index in df.columns: + df = df.set_index(index) + return df + + +def from_dataframe( + df: Union[pd.DataFrame, pd.Series], index: bool = False +) -> List[BaseModel]: + """Convert from a Pandas DataFrame.""" + if index: + df = df.reset_index() + if isinstance(df, pd.Series): + df = df.to_frame() + return [BaseModel(**d) for d in df.to_dict(orient="records")] + + +def get_target_column(df: pd.DataFrame, target: str) -> pd.Series: + """Get target column from time series data.""" + if target not in df.columns: + choices = ", ".join(df.columns) + raise ValueError( + f"Target column '{target}' not found in data. Choose from {choices}" + ) + return df[target] + + +def get_target_columns(df: pd.DataFrame, target_columns: List[str]) -> pd.DataFrame: + df_result = pd.DataFrame() + for target in target_columns: + df_result[target] = get_target_column(df, target).to_frame() + return df_result