Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
ita9naiwa committed Mar 1, 2023
1 parent ba66e77 commit 260b078
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 33 deletions.
11 changes: 7 additions & 4 deletions benchmark/simple_dumps_bench.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
import json, orjson, ujson, pyyjson
import json
import orjson
import ujson
import pyyjson
import time

N = 10000

obj_1 = [[{a:10 * ["하하하하하하하하하", 3.14159, 1341341] for (i, a) in
obj_1 = [[{a: 10 * ["하하하하하하하하하", 3.14159, 1341341] for (i, a) in
enumerate("abcdefghijklfaksdfjasejfasjiccabsbkq")}]]
obj_2 = {"text": [[{str(a):a*a for a in range(1000)}] for _ in range(5)]}
obj_2 = {"text": [[{str(a): a * a for a in range(1000)}] for _ in range(5)]}

str_1 = json.dumps(obj_1)
str_2 = json.dumps(obj_2)
print("simple dumps test")
for lib, name in [(json,"json"), (ujson, "ujson"), (orjson, "orjson"), (pyyjson, "pyyjson")]:
for lib, name in [(json, "json"), (ujson, "ujson"), (orjson, "orjson"), (pyyjson, "pyyjson")]:
prev = time.time()
for i in range(N):
lib.dumps(str_1)
Expand Down
9 changes: 6 additions & 3 deletions benchmark/simple_loads_bench.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import json, orjson, ujson, pyyjson
import json
import orjson
import ujson
import pyyjson
import time

N = 5000

obj_1 = [[{a:10 * ["하하하하하하하하하", 3.14159, 1341341] for (i, a) in
obj_1 = [[{a: 10 * ["하하하하하하하하하", 3.14159, 1341341] for (i, a) in
enumerate("abcdefghijklfaksdfjasejfasjiccabsbkq")}]]
obj_2 = {"text": [[{str(a):a*a for a in range(1000)}] for _ in range(5)]}
obj_2 = {"text": [[{str(a): a * a for a in range(1000)}] for _ in range(5)]}

str_1 = json.dumps(obj_1)
str_2 = json.dumps(obj_2)
Expand Down
10 changes: 6 additions & 4 deletions pyyjson/wrapper.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import enum
from pyyjson.cserde import _loads, _dumps
from inspect import signature
import os


class ReaderFlags(enum.IntFlag):
"""
Expand Down Expand Up @@ -42,14 +42,15 @@ class WriterFlags(enum.IntFlag):
INF_AND_NAN_AS_NULL = 0x10



def loads(doc, flags=0x00):
return _loads(doc, flags)


def load(fp, flags=0x00):
txt = fp.read()
return loads(txt, flags)


def __default(x):
return x

Expand All @@ -61,7 +62,7 @@ def dumps(obj, ensure_ascii=False, default=None, escape_slash=False, flags=0x00)
if escape_slash:
_flags |= WriterFlags.ESCAPE_SLASHES
_flags |= flags
if default == None:
if default is None:
default = __default
else:
if not callable(default):
Expand All @@ -71,6 +72,7 @@ def dumps(obj, ensure_ascii=False, default=None, escape_slash=False, flags=0x00)
raise TypeError("default function must have a single parameter")
return _dumps(obj, default, flags)


def dump(obj, fp, ensure_ascii=False, default=None, escape_slash=False, flags=0x00):
ret_str = _dumps(obj, ensure_ascii=ensure_ascii, default=default, escape_slash=escape_slash, flags=_flags)
ret_str = _dumps(obj, ensure_ascii=ensure_ascii, default=default, escape_slash=escape_slash, flags=flags)
return fp.write(ret_str)
4 changes: 2 additions & 2 deletions tests/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def test3_load_bytes_and_strs():

def test4_unicode_json_compatibility():
for ensure_ascii in [False, True]:
msg = {"김밥":"이는고양이", "오뎅": ["그러면", "누가", "멍멍이지?"]}
msg = {"김밥": "이는고양이", "오뎅": ["그러면", "누가", "멍멍이지?"]}
d = json.dumps(msg, ensure_ascii=ensure_ascii)
assert json.loads(d) == pyyjson.loads(d)
d = pyyjson.dumps(msg, ensure_ascii=ensure_ascii)
Expand All @@ -64,4 +64,4 @@ def default_f(x, y):
pyyjson.dumps(obj_1, default=default_f)
not_callable_default = "it is not a function"
with pytest.raises(TypeError):
pyyjson.dumps(obj_1, default=not_callable_default)
pyyjson.dumps(obj_1, default=not_callable_default)
20 changes: 0 additions & 20 deletions tests/test_mem_usage.py

This file was deleted.

0 comments on commit 260b078

Please sign in to comment.