diff options
Diffstat (limited to 'openbb_terminal/core/models/base_model.py')
-rw-r--r-- | openbb_terminal/core/models/base_model.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/openbb_terminal/core/models/base_model.py b/openbb_terminal/core/models/base_model.py index 588ac7baf5a..2c2ca1edd9b 100644 --- a/openbb_terminal/core/models/base_model.py +++ b/openbb_terminal/core/models/base_model.py @@ -1,4 +1,5 @@ -from typing import Any, Optional +import dataclasses as dc +from typing import Any, Dict, Optional from pydantic.dataclasses import dataclass @@ -10,7 +11,7 @@ class BaseModel: def __repr__(self) -> str: """Return string representation of model.""" dataclass_repr = "" - for key, value in self.__dict__.items(): + for key, value in sorted(self.__dict__.items()): if key.startswith("_"): continue dataclass_repr += f" {key}='{value}', \n" @@ -18,12 +19,22 @@ class BaseModel: return f"{self.__class__.__name__}(\n{dataclass_repr[:-2]}\n)" @classmethod - def get_fields(cls) -> dict[str, Any]: + def get_fields(cls) -> Dict[str, Any]: """Get dict of fields.""" return cls.__dataclass_fields__ # type: ignore - def get_field_value(self, field: str) -> Optional[str]: + def get_value(self, field: str) -> Optional[Any]: """Get field value.""" if hasattr(self, field): return getattr(self, field) return None + + def to_dict(self) -> Dict[str, Any]: + """Convert model to dict.""" + return dc.asdict(self) # type: ignore + + def get_default(self, field: str) -> Optional[Any]: + """Get default field value.""" + if hasattr(self, field): + return self.get_fields()[field].default + return None |