some random stuff. caelestia incoming
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import json
|
||||
from collections.abc import Callable
|
||||
from typing import Any, Type, TypeVar, Union
|
||||
|
||||
from mashumaro.mixins.dict import DataClassDictMixin
|
||||
|
||||
T = TypeVar("T", bound="DataClassJSONMixin")
|
||||
|
||||
|
||||
EncodedData = Union[str, bytes, bytearray]
|
||||
Encoder = Callable[[Any], EncodedData]
|
||||
Decoder = Callable[[EncodedData], dict[Any, Any]]
|
||||
|
||||
|
||||
class DataClassJSONMixin(DataClassDictMixin):
|
||||
__slots__ = ()
|
||||
|
||||
def to_json(
|
||||
self: T,
|
||||
encoder: Encoder = json.dumps,
|
||||
**to_dict_kwargs: Any,
|
||||
) -> EncodedData:
|
||||
return encoder(self.to_dict(**to_dict_kwargs))
|
||||
|
||||
@classmethod
|
||||
def from_json(
|
||||
cls: Type[T],
|
||||
data: EncodedData,
|
||||
decoder: Decoder = json.loads,
|
||||
**from_dict_kwargs: Any,
|
||||
) -> T:
|
||||
return cls.from_dict(decoder(data), **from_dict_kwargs)
|
||||
Reference in New Issue
Block a user