Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/rest_framework/utils/json.py: 75%

20 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1""" 

2Wrapper for the builtin json module that ensures compliance with the JSON spec. 

3 

4REST framework should always import this wrapper module in order to maintain 

5spec-compliant encoding/decoding. Support for non-standard features should be 

6handled by users at the renderer and parser layer. 

7""" 

8import functools 

9import json # noqa 

10 

11 

12def strict_constant(o): 

13 raise ValueError('Out of range float values are not JSON compliant: ' + repr(o)) 

14 

15 

16@functools.wraps(json.dump) 

17def dump(*args, **kwargs): 

18 kwargs.setdefault('allow_nan', False) 

19 return json.dump(*args, **kwargs) 

20 

21 

22@functools.wraps(json.dumps) 

23def dumps(*args, **kwargs): 

24 kwargs.setdefault('allow_nan', False) 

25 return json.dumps(*args, **kwargs) 

26 

27 

28@functools.wraps(json.load) 

29def load(*args, **kwargs): 

30 kwargs.setdefault('parse_constant', strict_constant) 

31 return json.load(*args, **kwargs) 

32 

33 

34@functools.wraps(json.loads) 

35def loads(*args, **kwargs): 

36 kwargs.setdefault('parse_constant', strict_constant) 

37 return json.loads(*args, **kwargs)