mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-07 01:41:17 +00:00
* autogenerate credentials model * revert to to_dict * black * mypy * ruff * ignore mypy * degiro secret to replace me * add safeguard for people not flashing keys * ruff * split local and hub keys * warn if writing to .env * warn if sending to hub * update user on what's going on... * update fixture * rewrite expected * rewrite cassettes * rewrite controller cassettes * too much changes, let's revert here * rever env handler * rewrite std output * patch usermodel and rewrite cassettes * delete unecessary cassettes and std out records * remove controller cassettes * ruff * add exception for inconclusive api tests opening controller * fix twitter key and env handler prints * fix twitter test --------- Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import dataclasses as dc
|
|
from typing import Any, Optional
|
|
|
|
from pydantic.dataclasses import dataclass
|
|
|
|
# pylint: disable=too-many-instance-attributes, disable=no-member
|
|
|
|
|
|
@dataclass
|
|
class BaseModel:
|
|
def __repr__(self) -> str:
|
|
"""Return string representation of model."""
|
|
dataclass_repr = ""
|
|
for key, value in self.__dict__.items():
|
|
if key.startswith("_"):
|
|
continue
|
|
dataclass_repr += f" {key}='{value}', \n"
|
|
|
|
return f"{self.__class__.__name__}(\n{dataclass_repr[:-2]}\n)"
|
|
|
|
@classmethod
|
|
def get_fields(cls) -> dict[str, Any]:
|
|
"""Get dict of fields."""
|
|
return cls.__dataclass_fields__ # type: ignore
|
|
|
|
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
|