some random stuff. caelestia incoming

This commit is contained in:
voidarclabs
2025-08-21 17:40:48 +01:00
parent 12df9a0b6e
commit 1cc414a96a
1308 changed files with 217219 additions and 8 deletions

View File

@@ -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)