Files
config/.config/scripts/.venv/lib/python3.12/site-packages/mashumaro/mixins/json.py
2025-08-21 17:40:48 +01:00

33 lines
811 B
Python

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)