Source code for cattrs.preconf.ujson
"""Preconfigured converters for ujson."""
from base64 import b85decode, b85encode
from datetime import datetime
from typing import Any, AnyStr, Type, TypeVar
from ujson import dumps, loads
from cattrs._compat import AbstractSet
from ..converters import BaseConverter, Converter
T = TypeVar("T")
[docs]class UjsonConverter(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: AnyStr, cl: Type[T], **kwargs) -> T:
return self.structure(loads(data, **kwargs), cl)
[docs]def make_converter(*args, **kwargs) -> UjsonConverter:
kwargs["unstruct_collection_overrides"] = {
**kwargs.get("unstruct_collection_overrides", {}),
AbstractSet: list,
}
res = UjsonConverter(*args, **kwargs)
configure_converter(res)
return res