diff --git a/Cargo.lock b/Cargo.lock index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_Q2FyZ28ubG9jaw==..54f6f13a86196e1e0b70a2757b60892da51d4e22_Q2FyZ28ubG9jaw== 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,5 +44,5 @@ [[package]] name = "encoding_rs" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -48,5 +48,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171" +checksum = "a51b8cf747471cb9499b6d59e59b0444f4c90eba8968c4e44874e92b5b64ace2" dependencies = [ "cfg-if", "packed_simd", @@ -60,5 +60,5 @@ [[package]] name = "instant" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -64,5 +64,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" +checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" +dependencies = [ + "cfg-if", +] [[package]] name = "itoa" @@ -85,5 +88,5 @@ [[package]] name = "libc" -version = "0.2.74" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -89,5 +92,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f02823cf78b754822df5f7f268fb59822e7296276d3e069d8e8cb26a14bd10" +checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" [[package]] name = "lock_api" @@ -100,5 +103,5 @@ [[package]] name = "once_cell" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -104,5 +107,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d" +checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" [[package]] name = "orjson" @@ -159,5 +162,5 @@ [[package]] name = "pyo3" -version = "0.11.1" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -163,5 +166,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca8710ffa8211c9a62a8a3863c4267c710dc42a82a7fd29c97de465d7ea6b7d" +checksum = "b065394f390af20bfe60bad3728d71dfc4d397a5717f46cf9083a40ea468a52c" dependencies = [ "libc", "parking_lot", @@ -193,5 +196,5 @@ [[package]] name = "serde" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -197,5 +200,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" +checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" [[package]] name = "serde_json" @@ -209,5 +212,5 @@ [[package]] name = "smallvec" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -213,5 +216,5 @@ source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3757cb9d89161a2f24e1cf78efa0c1fcff485d18e3f55e0aa3480824ddaa0f3f" +checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" [[package]] name = "static_assertions" diff --git a/Cargo.toml b/Cargo.toml index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_Q2FyZ28udG9tbA==..54f6f13a86196e1e0b70a2757b60892da51d4e22_Q2FyZ28udG9tbA== 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ inlinable_string = { version = "0.1" } itoa = { version = "0.4", default_features = false } once_cell = { version = "1", default_features = false } -pyo3 = { version = "0.11", default_features = false, features = ["extension-module"]} +pyo3 = { version = "0.12", default_features = false, features = ["extension-module"]} ryu = { version = "1" } serde = { version = "1", default_features = false } serde_json = { path = "./json", default_features = false, features = ["std"] } diff --git a/README.md b/README.md index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_UkVBRE1FLm1k..54f6f13a86196e1e0b70a2757b60892da51d4e22_UkVBRE1FLm1k 100644 --- a/README.md +++ b/README.md @@ -1136,7 +1136,7 @@ ``` Problems with the Rust nightly channel may require pinning a version. -`nightly-2020-06-09` is known to be ok. +`nightly-2020-09-14` is known to be ok. orjson is tested for amd64 and aarch64 on Linux, macOS, and Windows. It may not work on 32-bit targets. It should be compiled with diff --git a/ci/azure-pipelines.yml b/ci/azure-pipelines.yml index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_Y2kvYXp1cmUtcGlwZWxpbmVzLnltbA==..54f6f13a86196e1e0b70a2757b60892da51d4e22_Y2kvYXp1cmUtcGlwZWxpbmVzLnltbA== 100644 --- a/ci/azure-pipelines.yml +++ b/ci/azure-pipelines.yml @@ -4,7 +4,7 @@ - '*' variables: - toolchain: nightly-2020-07-01 + toolchain: nightly-2020-09-14 jobs: @@ -156,7 +156,7 @@ pool: vmImage: windows-2019 variables: - interpreter: C:\hostedtoolcache\windows\Python\3.7.8\x64\python.exe + interpreter: C:\hostedtoolcache\windows\Python\3.7.9\x64\python.exe target: x86_64-pc-windows-msvc steps: - task: UsePythonVersion@0 @@ -181,45 +181,3 @@ architecture: 'x64' - checkout: self - template: ./azure-win.yml - -- job: linux_python38_amd64_manylinux1 - pool: - vmImage: ubuntu-20.04 - container: quay.io/pypa/manylinux1_x86_64:latest - variables: - interpreter: python3.8 - manylinux: 1 - path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp38-cp38/bin:/opt/rh/devtoolset-2/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - target: x86_64-unknown-linux-gnu - verifyManylinux: true - steps: - - checkout: self - - template: ./azure-linux-container.yml - -- job: linux_python37_amd64_manylinux1 - pool: - vmImage: ubuntu-20.04 - container: quay.io/pypa/manylinux1_x86_64:latest - variables: - interpreter: python3.7 - manylinux: 1 - path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp37-cp37m/bin:/opt/rh/devtoolset-2/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - target: x86_64-unknown-linux-gnu - verifyManylinux: true - steps: - - checkout: self - - template: ./azure-linux-container.yml - -- job: linux_python36_amd64_manylinux1 - pool: - vmImage: ubuntu-20.04 - container: quay.io/pypa/manylinux1_x86_64:latest - variables: - interpreter: python3.6 - manylinux: 1 - path: /home/vsts_azpcontainer/.local/bin:/home/vsts_azpcontainer/.cargo/bin:/opt/python/cp36-cp36m/bin:/opt/rh/devtoolset-2/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - target: x86_64-unknown-linux-gnu - verifyManylinux: true - steps: - - checkout: self - - template: ./azure-linux-container.yml diff --git a/ci/drone.yml b/ci/drone.yml index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_Y2kvZHJvbmUueW1s..54f6f13a86196e1e0b70a2757b60892da51d4e22_Y2kvZHJvbmUueW1s 100644 --- a/ci/drone.yml +++ b/ci/drone.yml @@ -14,7 +14,7 @@ TWINE_PASSWORD: from_secret: twine_password commands: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-07-01 --profile minimal -y + - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-09-14 --profile minimal -y - python3.9 -m pip install --upgrade pip maturin - maturin build --no-sdist --release --strip --manylinux 2014 --interpreter python3.9 - python3.9 -m pip install target/wheels/orjson*.whl @@ -38,7 +38,7 @@ TWINE_PASSWORD: from_secret: twine_password commands: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-07-01 --profile minimal -y + - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-09-14 --profile minimal -y - python3.8 -m pip install --upgrade pip maturin - maturin build --no-sdist --release --strip --manylinux 2014 --interpreter python3.8 - python3.8 -m pip install target/wheels/orjson*.whl @@ -62,7 +62,7 @@ TWINE_PASSWORD: from_secret: twine_password commands: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-07-01 --profile minimal -y + - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-09-14 --profile minimal -y - python3.7 -m pip install --upgrade pip maturin - maturin build --no-sdist --release --strip --manylinux 2014 --interpreter python3.7 - python3.7 -m pip install target/wheels/orjson*.whl @@ -86,7 +86,7 @@ TWINE_PASSWORD: from_secret: twine_password commands: - - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-07-01 --profile minimal -y + - curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly-2020-09-14 --profile minimal -y - python3.6 -m pip install --upgrade pip maturin - maturin build --no-sdist --release --strip --manylinux 2014 --interpreter python3.6 - python3.6 -m pip install target/wheels/orjson*.whl diff --git a/integration/requirements.txt b/integration/requirements.txt index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_aW50ZWdyYXRpb24vcmVxdWlyZW1lbnRzLnR4dA==..54f6f13a86196e1e0b70a2757b60892da51d4e22_aW50ZWdyYXRpb24vcmVxdWlyZW1lbnRzLnR4dA== 100644 --- a/integration/requirements.txt +++ b/integration/requirements.txt @@ -1,3 +1,3 @@ flask;sys_platform!="win" gunicorn;sys_platform!="win" -httpx;sys_platform!="win" +httpx==0.14.3;sys_platform!="win" diff --git a/pydataclass b/pydataclass index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_cHlkYXRhY2xhc3M=..54f6f13a86196e1e0b70a2757b60892da51d4e22_cHlkYXRhY2xhc3M= 100755 --- a/pydataclass +++ b/pydataclass @@ -65,7 +65,8 @@ for lib_name in LIBRARIES: if lib_name == "json": as_dict = timeit( - lambda: json.dumps(objects_as_dict).encode("utf-8"), number=ITERATIONS, + lambda: json.dumps(objects_as_dict).encode("utf-8"), + number=ITERATIONS, ) as_dataclass = timeit( lambda: json.dumps(objects_as_dataclass, default=default).encode("utf-8"), @@ -84,8 +85,9 @@ ) elif lib_name == "ujson": as_dict = timeit( - lambda: ujson.dumps(objects_as_dict).encode("utf-8"), number=ITERATIONS, + lambda: ujson.dumps(objects_as_dict).encode("utf-8"), + number=ITERATIONS, ) as_dataclass = None elif lib_name == "rapidjson": as_dict = timeit( @@ -88,8 +90,9 @@ ) as_dataclass = None elif lib_name == "rapidjson": as_dict = timeit( - lambda: rapidjson.dumps(objects_as_dict).encode("utf-8"), number=ITERATIONS, + lambda: rapidjson.dumps(objects_as_dict).encode("utf-8"), + number=ITERATIONS, ) as_dataclass = timeit( lambda: rapidjson.dumps(objects_as_dataclass, default=default).encode( diff --git a/pynonstr b/pynonstr index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_cHlub25zdHI=..54f6f13a86196e1e0b70a2757b60892da51d4e22_cHlub25zdHI= 100755 --- a/pynonstr +++ b/pynonstr @@ -58,6 +58,7 @@ print(f"{lib_name}...") if lib_name == "json": time_as_str = timeit( - lambda: json.dumps(data_as_str).encode("utf-8"), number=ITERATIONS, + lambda: json.dumps(data_as_str).encode("utf-8"), + number=ITERATIONS, ) time_as_obj = timeit( @@ -62,6 +63,7 @@ ) time_as_obj = timeit( - lambda: json.dumps(data_as_obj).encode("utf-8"), number=ITERATIONS, + lambda: json.dumps(data_as_obj).encode("utf-8"), + number=ITERATIONS, ) time_as_obj_sorted = ( None # TypeError: '<' not supported between instances of 'str' and 'int' @@ -69,6 +71,7 @@ correct = False elif lib_name == "simplejson": time_as_str = timeit( - lambda: simplejson.dumps(data_as_str).encode("utf-8"), number=ITERATIONS, + lambda: simplejson.dumps(data_as_str).encode("utf-8"), + number=ITERATIONS, ) time_as_obj = timeit( @@ -73,6 +76,7 @@ ) time_as_obj = timeit( - lambda: simplejson.dumps(data_as_obj).encode("utf-8"), number=ITERATIONS, + lambda: simplejson.dumps(data_as_obj).encode("utf-8"), + number=ITERATIONS, ) time_as_obj_sorted = timeit( lambda: simplejson.dumps(data_as_obj, sort_keys=True).encode("utf-8"), @@ -83,6 +87,7 @@ ) elif lib_name == "ujson": time_as_str = timeit( - lambda: ujson.dumps(data_as_str).encode("utf-8"), number=ITERATIONS, + lambda: ujson.dumps(data_as_str).encode("utf-8"), + number=ITERATIONS, ) time_as_obj = timeit( @@ -87,8 +92,9 @@ ) time_as_obj = timeit( - lambda: ujson.dumps(data_as_obj).encode("utf-8"), number=ITERATIONS, + lambda: ujson.dumps(data_as_obj).encode("utf-8"), + number=ITERATIONS, ) time_as_obj_sorted = None # segfault correct = False elif lib_name == "rapidjson": time_as_str = timeit( @@ -90,9 +96,10 @@ ) time_as_obj_sorted = None # segfault correct = False elif lib_name == "rapidjson": time_as_str = timeit( - lambda: rapidjson.dumps(data_as_str).encode("utf-8"), number=ITERATIONS, + lambda: rapidjson.dumps(data_as_str).encode("utf-8"), + number=ITERATIONS, ) time_as_obj = None time_as_obj_sorted = None diff --git a/pynumpy b/pynumpy index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_cHludW1weQ==..54f6f13a86196e1e0b70a2757b60892da51d4e22_cHludW1weQ== 100755 --- a/pynumpy +++ b/pynumpy @@ -83,7 +83,10 @@ mem = None correct = False else: - total_latency = timeit(func, number=ITERATIONS,) + total_latency = timeit( + func, + number=ITERATIONS, + ) latency = per_iter_latency(total_latency) time.sleep(1) mem = max(memory_usage((func,), interval=0.001, timeout=latency * 2)) diff --git a/pysort b/pysort index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_cHlzb3J0..54f6f13a86196e1e0b70a2757b60892da51d4e22_cHlzb3J0 100755 --- a/pysort +++ b/pysort @@ -49,6 +49,7 @@ for lib_name in LIBRARIES: if lib_name == "json": time_unsorted = timeit( - lambda: json.dumps(data).encode("utf-8"), number=ITERATIONS, + lambda: json.dumps(data).encode("utf-8"), + number=ITERATIONS, ) time_sorted = timeit( @@ -53,6 +54,7 @@ ) time_sorted = timeit( - lambda: json.dumps(data, sort_keys=True).encode("utf-8"), number=ITERATIONS, + lambda: json.dumps(data, sort_keys=True).encode("utf-8"), + number=ITERATIONS, ) elif lib_name == "simplejson": time_unsorted = timeit( @@ -56,7 +58,8 @@ ) elif lib_name == "simplejson": time_unsorted = timeit( - lambda: simplejson.dumps(data).encode("utf-8"), number=ITERATIONS, + lambda: simplejson.dumps(data).encode("utf-8"), + number=ITERATIONS, ) time_sorted = timeit( lambda: simplejson.dumps(data, sort_keys=True).encode("utf-8"), @@ -64,7 +67,8 @@ ) elif lib_name == "ujson": time_unsorted = timeit( - lambda: ujson.dumps(data).encode("utf-8"), number=ITERATIONS, + lambda: ujson.dumps(data).encode("utf-8"), + number=ITERATIONS, ) time_sorted = timeit( lambda: ujson.dumps(data, sort_keys=True).encode("utf-8"), @@ -72,7 +76,8 @@ ) elif lib_name == "rapidjson": time_unsorted = timeit( - lambda: rapidjson.dumps(data).encode("utf-8"), number=ITERATIONS, + lambda: rapidjson.dumps(data).encode("utf-8"), + number=ITERATIONS, ) time_sorted = timeit( lambda: rapidjson.dumps(data, sort_keys=True).encode("utf-8"), @@ -81,7 +86,8 @@ elif lib_name == "orjson": time_unsorted = timeit(lambda: orjson.dumps(data), number=ITERATIONS) time_sorted = timeit( - lambda: orjson.dumps(data, None, orjson.OPT_SORT_KEYS), number=ITERATIONS, + lambda: orjson.dumps(data, None, orjson.OPT_SORT_KEYS), + number=ITERATIONS, ) orjson_time_sorted = per_iter_latency(time_sorted) else: diff --git a/src/lib.rs b/src/lib.rs index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_c3JjL2xpYi5ycw==..54f6f13a86196e1e0b70a2757b60892da51d4e22_c3JjL2xpYi5ycw== 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -20,7 +20,8 @@ use std::os::raw::c_char; use std::ptr::NonNull; -const DUMPS_DOC: &str = "dumps(obj, /, default=None, option=None)\n--\n\nSerialize Python objects to JSON.\0"; +const DUMPS_DOC: &str = + "dumps(obj, /, default=None, option=None)\n--\n\nSerialize Python objects to JSON.\0"; const LOADS_DOC: &str = "loads(obj, /)\n--\n\nDeserialize JSON to Python objects.\0"; macro_rules! opt { @@ -80,7 +81,11 @@ PyModule_AddObject( mptr, "dumps\0".as_ptr() as *const c_char, - PyCFunction_New(Box::into_raw(Box::new(wrapped_dumps)), std::ptr::null_mut()), + PyCFunction_NewEx( + Box::into_raw(Box::new(wrapped_dumps)), + std::ptr::null_mut(), + mptr, + ), ) }; @@ -95,7 +100,11 @@ PyModule_AddObject( mptr, "loads\0".as_ptr() as *const c_char, - PyCFunction_New(Box::into_raw(Box::new(wrapped_loads)), std::ptr::null_mut()), + PyCFunction_NewEx( + Box::into_raw(Box::new(wrapped_loads)), + std::ptr::null_mut(), + mptr, + ), ) }; diff --git a/test/test_dataclass.py b/test/test_dataclass.py index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_dGVzdC90ZXN0X2RhdGFjbGFzcy5weQ==..54f6f13a86196e1e0b70a2757b60892da51d4e22_dGVzdC90ZXN0X2RhdGFjbGFzcy5weQ== 100644 --- a/test/test_dataclass.py +++ b/test/test_dataclass.py @@ -102,7 +102,8 @@ """ obj = Dataclass1("a", 1, None) self.assertEqual( - orjson.dumps(obj), b'{"name":"a","number":1,"sub":null}', + orjson.dumps(obj), + b'{"name":"a","number":1,"sub":null}', ) def test_dataclass_recursive(self): @@ -130,7 +131,8 @@ dumps() no attributes """ self.assertEqual( - orjson.dumps(EmptyDataclass()), b"{}", + orjson.dumps(EmptyDataclass()), + b"{}", ) def test_dataclass_empty_slots(self): @@ -138,7 +140,8 @@ dumps() no attributes slots """ self.assertEqual( - orjson.dumps(EmptyDataclassSlots()), b"{}", + orjson.dumps(EmptyDataclassSlots()), + b"{}", ) def test_dataclass_default_arg(self): @@ -164,7 +167,8 @@ """ obj = Dataclass4("a", 1, 2.1) self.assertEqual( - orjson.dumps(obj), b'{"a":"a","b":1,"c":2.1}', + orjson.dumps(obj), + b'{"a":"a","b":1,"c":2.1}', ) def test_dataclass_classvar(self): @@ -173,7 +177,8 @@ """ obj = Dataclass4("a", 1) self.assertEqual( - orjson.dumps(obj), b'{"a":"a","b":1,"c":1.1}', + orjson.dumps(obj), + b'{"a":"a","b":1,"c":1.1}', ) def test_dataclass_subclass(self): @@ -182,7 +187,8 @@ """ obj = Datasubclass("a", 1, None, False) self.assertEqual( - orjson.dumps(obj), b'{"name":"a","number":1,"sub":null,"additional":false}', + orjson.dumps(obj), + b'{"name":"a","number":1,"sub":null,"additional":false}', ) def test_dataclass_slots(self): @@ -238,7 +244,8 @@ """ obj = InitDataclass("zxc", "vbn") self.assertEqual( - orjson.dumps(obj), b'{"ab":"zxc vbn"}', + orjson.dumps(obj), + b'{"ab":"zxc vbn"}', ) def test_dataclass_option(self): diff --git a/test/test_non_str_keys.py b/test/test_non_str_keys.py index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_dGVzdC90ZXN0X25vbl9zdHJfa2V5cy5weQ==..54f6f13a86196e1e0b70a2757b60892da51d4e22_dGVzdC90ZXN0X25vbl9zdHJfa2V5cy5weQ== 100644 --- a/test/test_non_str_keys.py +++ b/test/test_non_str_keys.py @@ -163,7 +163,8 @@ def test_dict_keys_time(self): self.assertEqual( orjson.dumps( - {datetime.time(12, 15, 59, 111): True}, option=orjson.OPT_NON_STR_KEYS, + {datetime.time(12, 15, 59, 111): True}, + option=orjson.OPT_NON_STR_KEYS, ), b'{"12:15:59.000111":true}', ) @@ -191,7 +192,8 @@ def test_dict_keys_str(self): self.assertEqual( - orjson.dumps({"1": True}, option=orjson.OPT_NON_STR_KEYS), b'{"1":true}', + orjson.dumps({"1": True}, option=orjson.OPT_NON_STR_KEYS), + b'{"1":true}', ) def test_dict_keys_type(self): diff --git a/test/test_numpy.py b/test/test_numpy.py index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_dGVzdC90ZXN0X251bXB5LnB5..54f6f13a86196e1e0b70a2757b60892da51d4e22_dGVzdC90ZXN0X251bXB5LnB5 100644 --- a/test/test_numpy.py +++ b/test/test_numpy.py @@ -172,10 +172,15 @@ def test_numpy_array_d1(self): array = numpy.array([1]) self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) def test_numpy_array_d2(self): array = numpy.array([[1]]) self.assertEqual( @@ -176,13 +181,18 @@ array.tolist(), ) def test_numpy_array_d2(self): array = numpy.array([[1]]) self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) def test_numpy_array_d3(self): array = numpy.array([[[1]]]) self.assertEqual( @@ -183,13 +193,18 @@ array.tolist(), ) def test_numpy_array_d3(self): array = numpy.array([[[1]]]) self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) def test_numpy_array_d4(self): array = numpy.array([[[[1]]]]) self.assertEqual( @@ -190,13 +205,18 @@ array.tolist(), ) def test_numpy_array_d4(self): array = numpy.array([[[[1]]]]) self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) def test_numpy_array_4_stride(self): array = numpy.random.rand(4, 4, 4, 4) self.assertEqual( @@ -197,10 +217,15 @@ array.tolist(), ) def test_numpy_array_4_stride(self): array = numpy.random.rand(4, 4, 4, 4) self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) @@ -247,7 +272,12 @@ ) assert array.ndim == 32 self.assertEqual( - orjson.loads(orjson.dumps(array, option=orjson.OPT_SERIALIZE_NUMPY,)), + orjson.loads( + orjson.dumps( + array, + option=orjson.OPT_SERIALIZE_NUMPY, + ) + ), array.tolist(), ) diff --git a/test/test_subclass.py b/test/test_subclass.py index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_dGVzdC90ZXN0X3N1YmNsYXNzLnB5..54f6f13a86196e1e0b70a2757b60892da51d4e22_dGVzdC90ZXN0X3N1YmNsYXNzLnB5 100644 --- a/test/test_subclass.py +++ b/test/test_subclass.py @@ -34,7 +34,8 @@ class SubclassTests(unittest.TestCase): def test_subclass_str(self): self.assertEqual( - orjson.dumps(SubStr("zxc")), b'"zxc"', + orjson.dumps(SubStr("zxc")), + b'"zxc"', ) def test_subclass_str_invalid(self): @@ -55,8 +56,9 @@ def test_subclass_dict(self): self.assertEqual( - orjson.dumps(SubDict({"a": "b"})), b'{"a":"b"}', + orjson.dumps(SubDict({"a": "b"})), + b'{"a":"b"}', ) def test_subclass_list(self): self.assertEqual( @@ -59,8 +61,9 @@ ) def test_subclass_list(self): self.assertEqual( - orjson.dumps(SubList(["a", "b"])), b'["a","b"]', + orjson.dumps(SubList(["a", "b"])), + b'["a","b"]', ) ref = [True] * 512 self.assertEqual(orjson.loads(orjson.dumps(SubList(ref))), ref) @@ -69,10 +72,11 @@ with self.assertRaises(orjson.JSONEncodeError): orjson.dumps(SubFloat(1.1)) self.assertEqual( - json.dumps(SubFloat(1.1)), "1.1", + json.dumps(SubFloat(1.1)), + "1.1", ) def test_subclass_tuple(self): with self.assertRaises(orjson.JSONEncodeError): orjson.dumps(SubTuple((1, 2))) self.assertEqual( @@ -73,10 +77,11 @@ ) def test_subclass_tuple(self): with self.assertRaises(orjson.JSONEncodeError): orjson.dumps(SubTuple((1, 2))) self.assertEqual( - json.dumps(SubTuple((1, 2))), "[1, 2]", + json.dumps(SubTuple((1, 2))), + "[1, 2]", ) def test_namedtuple(self): diff --git a/test/test_uuid.py b/test/test_uuid.py index 6b3612fbeaeefe0ab6adc2fc9ebea1dcc9e0c25b_dGVzdC90ZXN0X3V1aWQucHk=..54f6f13a86196e1e0b70a2757b60892da51d4e22_dGVzdC90ZXN0X3V1aWQucHk= 100644 --- a/test/test_uuid.py +++ b/test/test_uuid.py @@ -89,7 +89,8 @@ def test_serializes_correctly_with_leading_zeroes(self): instance = uuid.UUID(int=0x00345678123456781234567812345678) self.assertEqual( - orjson.dumps(instance), ('"%s"' % str(instance)).encode("utf8"), + orjson.dumps(instance), + ('"%s"' % str(instance)).encode("utf8"), ) def test_all_uuid_creation_functions_create_serializable_uuids(self): @@ -101,5 +102,6 @@ ) for val in uuids: self.assertEqual( - orjson.dumps(val), f'"{val}"'.encode("utf-8"), + orjson.dumps(val), + f'"{val}"'.encode("utf-8"), )