diff options
Diffstat (limited to 'openbb_platform/core/openbb_core/app/model/defaults.py')
-rw-r--r-- | openbb_platform/core/openbb_core/app/model/defaults.py | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/openbb_platform/core/openbb_core/app/model/defaults.py b/openbb_platform/core/openbb_core/app/model/defaults.py index 52007edf5de..1f4a176674f 100644 --- a/openbb_platform/core/openbb_core/app/model/defaults.py +++ b/openbb_platform/core/openbb_core/app/model/defaults.py @@ -1,19 +1,46 @@ """Defaults model.""" -from typing import Dict, Optional +from typing import Dict, List, Optional +from warnings import warn -from pydantic import BaseModel, ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field, model_validator + +from openbb_core.app.model.abstract.warning import OpenBBWarning class Defaults(BaseModel): """Defaults.""" - model_config = ConfigDict(validate_assignment=True) + model_config = ConfigDict(validate_assignment=True, populate_by_name=True) - routes: Dict[str, Dict[str, Optional[str]]] = Field(default_factory=dict) + commands: Dict[str, Dict[str, Optional[List[str]]]] = Field( + default_factory=dict, + alias="routes", + ) def __repr__(self) -> str: """Return string representation.""" return f"{self.__class__.__name__}\n\n" + "\n".join( f"{k}: {v}" for k, v in self.model_dump().items() ) + + @model_validator(mode="before") + @classmethod + def validate_before(cls, values: dict) -> dict: + """Validate model (before).""" + key = "commands" + if "routes" in values: + warn( + message="'routes' is deprecated. Use 'commands' instead.", + category=OpenBBWarning, + ) + key = "routes" + + new_values: Dict[str, Dict[str, Optional[List[str]]]] = {"commands": {}} + for k, v in values.get(key, {}).items(): + clean_k = k.strip("/").replace("/", ".") + provider = v.get("provider") if v else None + if isinstance(provider, str): + v["provider"] = [provider] + new_values["commands"][clean_k] = v + return new_values |