summaryrefslogtreecommitdiffstats
path: root/openbb_terminal/core/models/base_model.py
diff options
context:
space:
mode:
Diffstat (limited to 'openbb_terminal/core/models/base_model.py')
-rw-r--r--openbb_terminal/core/models/base_model.py19
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