deps: replaced simplejson with much faster orjson implementation

This commit is contained in:
RhodeCode Admin 2023-03-20 20:33:56 +01:00
parent bfdcb17dff
commit 7556b374d5
2 changed files with 25 additions and 7 deletions

View file

@ -145,13 +145,12 @@ nbconvert==7.2.9
tinycss2==1.2.1
webencodings==0.5.1
traitlets==5.9.0
orjson==3.8.7
pastescript==3.3.0
paste==3.5.2
six==1.16.0
pastedeploy==3.0.1
six==1.16.0
pathlib2==2.3.7.post1
six==1.16.0
premailer==3.10.0
cachetools==5.3.0
cssselect==1.2.0

View file

@ -1,10 +1,15 @@
import datetime
import decimal
import functools
# we keep simplejson for having dump functionality still
# orjson doesn't support it
import orjson
import simplejson
import orjson as json
import simplejson as json
from rhodecode.lib.datelib import is_aware
from rhodecode.lib.str_utils import safe_str
try:
import rhodecode.translation
@ -57,8 +62,22 @@ def _obj_dump(obj):
raise TypeError(repr(obj) + " is not JSON serializable")
json.dumps = functools.partial(json.dumps, default=_obj_dump, use_decimal=False)
json.dump = functools.partial(json.dump, default=_obj_dump, use_decimal=False)
json.dumps = functools.partial(json.dumps, default=_obj_dump, option=orjson.OPT_NON_STR_KEYS)
json.dump = functools.partial(simplejson.dump, default=_obj_dump)
# alias for formatted json
formatted_json = functools.partial(json.dumps, indent=4, sort_keys=True)
def formatted_json(*args, **kwargs):
# alias for formatted json
opts = orjson.OPT_NON_STR_KEYS | orjson.OPT_INDENT_2 | orjson.OPT_SORT_KEYS
return functools.partial(json.dumps, option=opts)(*args, **kwargs)
def formatted_str_json(*args, **kwargs):
opts = orjson.OPT_NON_STR_KEYS | orjson.OPT_INDENT_2 | orjson.OPT_SORT_KEYS
closure = functools.partial(json.dumps, option=opts)
return safe_str(closure(*args, **kwargs))
def str_json(*args, **kwargs):
closure = functools.partial(json.dumps)
return safe_str(closure(*args, **kwargs))