2022-01-24 04:07:52 +00:00
|
|
|
import json as _json
|
|
|
|
import typing as _t
|
|
|
|
from types import ModuleType
|
2019-12-02 21:46:54 +00:00
|
|
|
|
|
|
|
|
2022-01-24 04:07:52 +00:00
|
|
|
class _CompactJSON:
|
2019-12-02 21:46:54 +00:00
|
|
|
"""Wrapper around json module that strips whitespace."""
|
|
|
|
|
|
|
|
@staticmethod
|
2022-01-24 04:07:52 +00:00
|
|
|
def loads(payload: _t.Union[str, bytes]) -> _t.Any:
|
|
|
|
return _json.loads(payload)
|
2019-12-02 21:46:54 +00:00
|
|
|
|
|
|
|
@staticmethod
|
2022-01-24 04:07:52 +00:00
|
|
|
def dumps(obj: _t.Any, **kwargs: _t.Any) -> str:
|
2019-12-02 21:46:54 +00:00
|
|
|
kwargs.setdefault("ensure_ascii", False)
|
|
|
|
kwargs.setdefault("separators", (",", ":"))
|
2022-01-24 04:07:52 +00:00
|
|
|
return _json.dumps(obj, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
class DeprecatedJSON(ModuleType):
|
|
|
|
def __getattribute__(self, item: str) -> _t.Any:
|
|
|
|
import warnings
|
|
|
|
|
|
|
|
warnings.warn(
|
|
|
|
"Importing 'itsdangerous.json' is deprecated and will be"
|
|
|
|
" removed in ItsDangerous 2.1. Use Python's 'json' module"
|
|
|
|
" instead.",
|
|
|
|
DeprecationWarning,
|
|
|
|
stacklevel=2,
|
|
|
|
)
|
|
|
|
return getattr(_json, item)
|
|
|
|
|
|
|
|
|
|
|
|
json = DeprecatedJSON("json")
|