Source code for aws_resource_search.base_model
# -*- coding: utf-8 -*-
"""
See :class:`BaseModel`.
"""
import typing as T
import dataclasses
[docs]@dataclasses.dataclass
class BaseModel:
"""
The base class for all AWS Resource Search data model.
.. note::
I intentionally don't use ``better_dataclasses.DataClass`` as the base class
here. Because the AWS Resource data container is so heavily used in the
search and performance does really matter. The ``better_dataclasses.DataClass``
provides additional features like auto-serialization and deserialization
when using nested dataclass. But it will slow down the performance.
"""
[docs] @classmethod
def from_dict(cls, data: T.Dict[str, T.Any]):
"""
Create a new instance from a dict.
"""
return cls(**data)
[docs] def to_dict(self) -> T.Dict[str, T.Any]:
"""
Convert the instance to a dict.
"""
return dataclasses.asdict(self)