Files
OpenBB/openbb_terminal/core/models/base_model.py
montezdesousa 291344b9c0 Autogenerate credentials model from json (#4624)
* 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>
2023-04-03 09:12:01 +00:00

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