Coverage for .nox/test-3-9/lib/python3.9/site-packages/nskit/common/io/json.py: 100%
10 statements
« prev ^ index » next coverage.py v7.4.2, created at 2024-02-25 17:38 +0000
« prev ^ index » next coverage.py v7.4.2, created at 2024-02-25 17:38 +0000
1"""Provide a JSON Load/Dump API consistent with stdlib JSON."""
2from typing import Any, Optional, TextIO
4import orjson
6# orjson is significantly faster than standard JSON library
9def loads(s: str, **kwargs):
10 """Load JSON from string."""
11 return orjson.loads(s, **kwargs)
14def dumps(data: Any, /, default: Optional[Any] = None, option: Optional[int] = None, **kwargs):
15 """Dump JSON to string."""
16 return orjson.dumps(data, default=default, option=option, **kwargs).decode()
19def load(fp: TextIO, **kwargs):
20 """Load JSON from file."""
21 return loads(fp.read(), **kwargs)
24def dump(data: Any, f: TextIO, /, default: Optional[Any] = None, option: Optional[int] = None, **kwargs):
25 """Dump JSON to file."""
26 f.write(dumps(data, default=default, option=option, **kwargs))