Show More
@@ -1,12 +1,20 b'' | |||||
1 | import datetime |
|
1 | import datetime | |
2 | import decimal |
|
2 | import decimal | |
3 | import functools |
|
3 | import functools | |
|
4 | import json as stdlib_json | |||
|
5 | ||||
|
6 | try: | |||
4 | # we keep simplejson for having dump functionality still |
|
7 | # we keep simplejson for having dump functionality still | |
5 | # orjson doesn't support it |
|
8 | # orjson doesn't support it | |
6 | import simplejson as sjson |
|
9 | import simplejson as sjson | |
|
10 | except ImportError: | |||
|
11 | sjson = stdlib_json | |||
7 |
|
12 | |||
|
13 | try: | |||
8 | import orjson |
|
14 | import orjson | |
9 | import orjson as json |
|
15 | import orjson as json | |
|
16 | except ImportError: | |||
|
17 | json = stdlib_json | |||
10 |
|
18 | |||
11 |
|
19 | |||
12 | from rhodecode.lib.datelib import is_aware |
|
20 | from rhodecode.lib.datelib import is_aware | |
@@ -27,10 +35,11 b' def _obj_dump(obj):' | |||||
27 |
|
35 | |||
28 | :param obj: |
|
36 | :param obj: | |
29 | """ |
|
37 | """ | |
|
38 | ||||
|
39 | if isinstance(obj, set): | |||
|
40 | return list(obj) | |||
30 | # See "Date Time String Format" in the ECMA-262 specification. |
|
41 | # See "Date Time String Format" in the ECMA-262 specification. | |
31 | # some code borrowed from django 1.4 |
|
42 | # some code borrowed from django 1.4 | |
32 | if isinstance(obj, set): |
|
|||
33 | return list(obj) |
|
|||
34 | elif isinstance(obj, datetime.datetime): |
|
43 | elif isinstance(obj, datetime.datetime): | |
35 | r = obj.isoformat() |
|
44 | r = obj.isoformat() | |
36 | if isinstance(obj.microsecond, int): |
|
45 | if isinstance(obj.microsecond, int): | |
@@ -40,6 +49,8 b' def _obj_dump(obj):' | |||||
40 | return r |
|
49 | return r | |
41 | elif isinstance(obj, datetime.date): |
|
50 | elif isinstance(obj, datetime.date): | |
42 | return obj.isoformat() |
|
51 | return obj.isoformat() | |
|
52 | elif isinstance(obj, decimal.Decimal): | |||
|
53 | return str(obj) | |||
43 | elif isinstance(obj, datetime.time): |
|
54 | elif isinstance(obj, datetime.time): | |
44 | if is_aware(obj): |
|
55 | if is_aware(obj): | |
45 | raise TypeError("Time-zone aware times are not JSON serializable") |
|
56 | raise TypeError("Time-zone aware times are not JSON serializable") | |
@@ -52,8 +63,6 b' def _obj_dump(obj):' | |||||
52 | return obj.__json__() |
|
63 | return obj.__json__() | |
53 | else: |
|
64 | else: | |
54 | return obj.__json__ |
|
65 | return obj.__json__ | |
55 | elif isinstance(obj, decimal.Decimal): |
|
|||
56 | return str(obj) |
|
|||
57 | elif isinstance(obj, complex): |
|
66 | elif isinstance(obj, complex): | |
58 | return [obj.real, obj.imag] |
|
67 | return [obj.real, obj.imag] | |
59 | elif rhodecode and isinstance(obj, rhodecode.translation._LazyString): |
|
68 | elif rhodecode and isinstance(obj, rhodecode.translation._LazyString): |
General Comments 0
You need to be logged in to leave comments.
Login now