Source code for cattrs.preconf.json
"""Preconfigured converters for the stdlib json."""
from base64 import b85decode, b85encode
from datetime import datetime
from json import dumps, loads
from typing import Any, Type, TypeVar, Union
from cattrs._compat import AbstractSet, Counter
from ..converters import BaseConverter, Converter
T = TypeVar("T")
[docs]class JsonConverter(Converter):
[docs] def dumps(self, obj: Any, unstructure_as=None, **kwargs) -> str:
return dumps(self.unstructure(obj, unstructure_as=unstructure_as), **kwargs)
[docs] def loads(self, data: Union[bytes, str], cl: Type[T], **kwargs) -> T:
return self.structure(loads(data, **kwargs), cl)
[docs]def make_converter(*args, **kwargs) -> JsonConverter:
kwargs["unstruct_collection_overrides"] = {
**kwargs.get("unstruct_collection_overrides", {}),
AbstractSet: list,
Counter: dict,
}
res = JsonConverter(*args, **kwargs)
configure_converter(res)
return res