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

1"""Provide a JSON Load/Dump API consistent with stdlib JSON.""" 

2from typing import Any, Optional, TextIO 

3 

4import orjson 

5 

6# orjson is significantly faster than standard JSON library 

7 

8 

9def loads(s: str, **kwargs): 

10 """Load JSON from string.""" 

11 return orjson.loads(s, **kwargs) 

12 

13 

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

17 

18 

19def load(fp: TextIO, **kwargs): 

20 """Load JSON from file.""" 

21 return loads(fp.read(), **kwargs) 

22 

23 

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