Skip to content

Commit

Permalink
Remove custom validation dunder methods
Browse files Browse the repository at this point in the history
  • Loading branch information
seriaati committed Aug 31, 2024
1 parent 41002f9 commit b40f0a1
Showing 1 changed file with 0 additions and 24 deletions.
24 changes: 0 additions & 24 deletions genshin/models/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,30 +24,9 @@
_SENTINEL = object()


def _get_init_fields(cls: typing.Type[APIModel]) -> typing.Tuple[typing.Set[str], typing.Set[str]]:
api_init_fields: typing.Set[str] = set()
model_init_fields: typing.Set[str] = set()

for name, field in cls.__fields__.items():
alias = field.field_info.alias
if alias:
api_init_fields.add(alias)
model_init_fields.add(name)

for name in dir(cls):
obj = getattr(cls, name, None)
if isinstance(obj, property):
model_init_fields.add(name)

return api_init_fields, model_init_fields


class APIModel(pydantic.BaseModel, abc.ABC):
"""Modified pydantic model."""

__api_init_fields__: typing.ClassVar[typing.Set[str]]
__model_init_fields__: typing.ClassVar[typing.Set[str]]

# nasty pydantic bug fixed only on the master branch - waiting for pypi release
if typing.TYPE_CHECKING:
_mi18n: typing.ClassVar[typing.Dict[str, typing.Dict[str, str]]]
Expand Down Expand Up @@ -108,9 +87,6 @@ def __init__(self, _frame: int = 1, **data: typing.Any) -> None:
if self.lang not in genshin_constants.LANGS:
raise Exception(f"Invalid model lang: {self.lang}")

def __init_subclass__(cls) -> None:
cls.__api_init_fields__, cls.__model_init_fields__ = _get_init_fields(cls)

@pydantic.root_validator()
def __parse_timezones(cls, values: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]:
"""Timezones are a pain to deal with so we at least allow a plain hour offset."""
Expand Down

0 comments on commit b40f0a1

Please sign in to comment.