Skip to content

Commit 5deee62

Browse files
committed
[IMP] support other JSON libraries
Currently only `orjson` is supported. closes #153 Related: odoo/upgrade#6628 Signed-off-by: Christophe Simonis (chs) <[email protected]>
1 parent 4400cd3 commit 5deee62

File tree

5 files changed

+30
-4
lines changed

5 files changed

+30
-4
lines changed

src/testing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import functools
22
import inspect
3-
import json
43
import logging
54
import os
65
import re
@@ -18,6 +17,7 @@
1817
from mock import patch
1918

2019
from . import util
20+
from .util import json
2121

2222
_logger = logging.getLogger(__name__)
2323

src/util/fields.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
"""
1010

1111
import base64
12-
import json
1312
import logging
1413
import re
1514
import warnings
@@ -42,6 +41,7 @@ def make_index_name(table_name, column_name):
4241
return "%s_%s_index" % (table_name, column_name)
4342

4443

44+
from . import json
4545
from .const import ENVIRON
4646
from .domains import _adapt_one_domain, _replace_path, _valid_path_to, adapt_domains
4747
from .exceptions import SleepyDeveloperError

src/util/json.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
__all__ = ["dumps", "loads", "load"]
2+
3+
try:
4+
import orjson
5+
except ImportError:
6+
import json
7+
8+
def dumps(value, sort_keys=False):
9+
return json.dumps(value, sort_keys=sort_keys)
10+
11+
def loads(value):
12+
return json.loads(value)
13+
14+
def load(fp):
15+
return json.load(fp)
16+
else:
17+
18+
def dumps(value, sort_keys=False):
19+
option = orjson.OPT_SORT_KEYS if sort_keys else None
20+
return orjson.dumps(value, option=option).decode()
21+
22+
def loads(value):
23+
return orjson.loads(value)
24+
25+
def load(fp):
26+
return orjson.loads(fp.read())

src/util/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
Model operations are best done in `pre-` script of the involved modules.
66
"""
77

8-
import json
98
import logging
109
import re
1110

11+
from . import json
1212
from .const import ENVIRON
1313
from .fields import IMD_FIELD_PATTERN, remove_field
1414
from .helpers import _ir_values_value, _validate_model, model_of_table, table_of_model

src/util/spreadsheet/misc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import json
1+
from .. import json
22

33

44
def iter_commands(cr, like_all=(), like_any=()):

0 commit comments

Comments
 (0)