A high-performance Python JSON library that fully leverages modern processor capabilities.
Project description
ssrJSON
A SIMD boosted high-performance and correct Python JSON parsing library that fully leverages modern processor capabilities.
Introduction
ssrJSON is a Python JSON library that leverages modern hardware capabilities to achieve peak performance, implemented primarily in C with some components written in C++. It offers a fully compatible interface to Python’s standard json module, making it a seamless drop-in replacement, while providing exceptional performance for JSON encoding and decoding.
How Fast is ssrJSON?
TL;DR: ssrJSON is faster than or nearly as fast as orjson (which announces itself as the fastest Python library for JSON) on most benchmark cases.
Artificial benchmark case to demonstrate the speed of encoding non-ASCII (simple_object_zh.json)
Real-world non-ASCII case (twitter.json):
ASCII case I (apache.json):
ASCII case II (github.json):
Floats (canada.json):
Numbers (mesh.json):
ssrjson.dumps() is about 4x-27x as fast as json.dumps() (Python3.14, x86-64, AVX2). ssrjson.loads() is about 2x-8x as fast as json.loads() for str input and is about 2x-8x as fast as json.loads() for bytes input (Python3.14, x86-64, AVX2). ssrJSON also provides ssrjson.dumps_to_bytes(), which encode Python objects directly to bytes object using SIMD instructions, similar to orjson.dumps.
Typically, ssrJSON is capable of processing non-ASCII strings directly without invoking any slow CPython UTF-8 encoding and decoding interfaces, eliminating the need for intermediate representations. Furthermore, the underlying implementation leverages SIMD acceleration to optimize this process. Details of benchmarking can be found in the ssrjson-benchmark project. If you wish to run the benchmark tests yourself, you can execute the following commands:
pip install ssrjson-benchmark
python -m ssrjson_benchmark
This will generate a PDF report of the results. If you choose to, you may submit this report to the benchmark repository, allowing others to view the performance metrics of ssrJSON on your device.
UTF-8 Cache of str Objects
Non-ASCII str objects may store a cached representation of their UTF-8 encoding (within the corresponding C structure PyUnicodeObject, represented as a const char *) to minimize the overhead of subsequent UTF-8 encoding operations. To the best of author's knowledge, existing third-party Python JSON libraries typically utilize certain CPython APIs to indirectly write the UTF-8 cache when performing dumps on non-ASCII str objects when the cache does not exist. This results in benchmark tests appearing more favorable than they actually are, since the same object is repeatedly dumped during performance measurements and the cache written will be utilized. But in reality, UTF-8 encoding is computationally intensive on the CPU and often becomes a major performance bottleneck in the dumping process. Also, writing cache will increase the memory usage. (It is worth noting that most third-party JSON libraries produce a str object when using their dumps function, or something like dumps. During JSON encoding, the process of converting from str objects to the result str object does not involve any UTF-8-related operations. However, some third-party JSON libraries still directly or indirectly invoke resource-intensive UTF-8 encoding CPython APIs.)
ssrjson.dumps_to_bytes addresses this by leveraging SIMD instruction sets for UTF-8 encoding, achieving significantly better performance than conventional encoding algorithms. Furthermore, ssrJSON grants users explicit control over whether or not to write this cache. It is recommended that users evaluate their projects for repeated encoding of identical string objects to decide on enabling or disabling this caching mechanism accordingly. (Note that ssrjson.dumps produces a str object, there is nothing related to this topic.)
Also, the ssrjson-benchmark project takes this aspect into account by differentiating test scenarios based on the presence or absence of this cache. The results demonstrate that ssrJSON maintains a substantial performance advantage over other third-party Python JSON libraries regardless of whether the cache exists.
If you decide to enable writing cache, ssrJSON will first ensure the cache exist; if not, ssrJSON will encode the object to UTF-8, store the cache into str object, and then utilize the written cache. The following dumps_to_bytes calls on the same str object will be faster, but the first time may be slower and memory cost may grow.
Pros:
- The following calls to
dumps_to_byteson the samestrwill be faster.
Cons:
- The first call to
dumps_to_bytes(when visiting anstrwithout cache) will be slower. - The memory cost will grow. Each non-ASCII
strvisited will result in memory usage corresponding to the length of its UTF-8 representation.
If you decide to disable it, ssrJSON will not write cache, but if the cache already exists, ssrJSON will still use it. Most of the third party JSON parsing libraries don't consider the existence of this cache, or write it by default.
By default, writing cache is enabled globally. You can use ssrjson.write_utf8_cache to control this behavior globally, or pass is_write_cache to ssrjson.dumps_to_bytes in each call.
JSON Module compatibility
The design goal of ssrJSON is to provide a straightforward and highly compatible approach to replace the inherently slower Python standard JSON encoding and decoding implementation with a significantly more efficient and high-performance alternative. If your module exclusively utilizes dumps and loads, you can replace the current JSON implementation by importing ssrJSON as import ssrjson as json. To facilitate this, ssrJSON maintains compatibility with the argument formats of json.dumps and json.loads; however, it does not guarantee identical results to the standard JSON module, as many features are either intentionally omitted or not yet supported. For further information, please refer to the section Features.
Implementation Details
Encoding
The encoding performance of JSON libraries is not significantly limited by CPython, resulting in a very high potential maximum. During string encoding, ssrJSON extensively utilizes SIMD instructions to accelerate copying and conversion operations. The implementation of dumps_to_bytes also tackles challenges related to UTF-8 encoding. ssrJSON includes a comprehensive UTF-8 encoding algorithm optimized for all supported SIMD features as well as Python’s internal string representation format (PyCompactUnicodeObject). For floating-point number encoding, ssrJSON employs a slightly modified version of the DragonBox algorithm, well-known for its high-performance floating-point conversions. When encoding integers, ssrJSON adapts the integer encoding approach from yyjson, a highly optimized C-language JSON parsing library.
Decoding
The main performance bottleneck in JSON decoding is the speed of creating Python objects. To address this, ssrJSON adopts the short-key caching mechanism from orjson, which greatly reduces the overhead of creating Python string objects. For string handling, when the input is a str type, ssrJSON applies SIMD optimizations similar to those used in encoding, speeding up the decoding process. For bytes inputs, ssrJSON uses a customized version of yyjson’s string decoding algorithm. Beyond string handling, ssrJSON extensively leverages yyjson’s codebase, including its numeric decoding algorithms and core decoding logic.
Current Status
ssrJSON is currently operational, although some potentially useful features have yet to be implemented. The development of ssrJSON is still actively ongoing, and your code contributions are highly appreciated.
How To Install
Pre-built wheels are available on PyPI.
pip install ssrjson
Note: ssrJSON requires at least SSE4.2 on x86-64 (x86-64-v2), or aarch64. 32-bit platforms are not supported. ssrJSON does not work with Python implementations other than CPython. Currently supported CPython versions are 3.10, 3.11, 3.12, 3.13, 3.14, 3.15. For Python >= 3.15, you need to build it from source.
Build From Source
Since ssrJSON utilizes Clang's vector extensions, it requires compilation with Clang and cannot be compiled in GCC or pure MSVC environments. On Windows, clang-cl can be used for this purpose. Build can be easily done by the following commands (make sure CMake, Clang and Python are already installed)
# On Linux:
# export CC=clang
# export CXX=clang++
mkdir build
cmake -S . -B build # On Windows, configure with `cmake -T ClangCL`
cmake --build build
Usage
Basic
>>> import ssrjson
>>> ssrjson.dumps({"key": "value"})
'{"key":"value"}'
>>> ssrjson.loads('{"key":"value"}')
{'key': 'value'}
>>> ssrjson.dumps_to_bytes({"key": "value"})
b'{"key":"value"}'
>>> ssrjson.loads(b'{"key":"value"}')
{'key': 'value'}
Indent
ssrJSON only supports encoding with indent = 2, 4 or no indent (don't pass indent, or pass indent=None). When indent is used, a space is inserted between each key and value.
>>> import ssrjson
>>> ssrjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]})
'{"a":"b","c":{"d":true},"e":[1,2]}'
>>> print(ssrjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]}, indent=2))
{
"a": "b",
"c": {
"d": true
},
"e": [
1,
2
]
}
>>> print(ssrjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]}, indent=4))
{
"a": "b",
"c": {
"d": true
},
"e": [
1,
2
]
}
>>> ssrjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]}, indent=3)
Traceback (most recent call last):
File "<python-input>", line 1, in <module>
ssrjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]}, indent=3)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: integer indent must be 2 or 4
Other Arguments Supported by Python's json
Arguments like ensure_ascii, parse_float provided by json can be recognized but ignored by design.
The functionality of object_hook in json.loads will be supported in future.
Features
Generally, ssrjson.dumps behaves like json.dumps with ensure_ascii=False, and ssrjson.loads behaves like json.loads. Below we explain some feature details of ssrJSON, which might be different from json module or other third-party JSON libraries.
Strings
Code points within the range [0xd800, 0xdfff] cannot be represented in UTF-8 encoding, and the standard JSON specification typically prohibits the presence of such characters. However, since Python's str type is not encoded in UTF-8, ssrJSON aims to maintain compatibility with the Python json module's behavior, while other third-party Python JSON libraries may complain about this. In contrast, for the dumps_to_bytes function, which encodes output in UTF-8, the inclusion of these characters in the input is considered invalid.
>>> s = chr(0xd800)
>>> (json.dumps(s, ensure_ascii=False) == '"' + s + '"', json.dumps(s, ensure_ascii=False))
(True, '"\ud800"')
>>> (ssrjson.dumps(s) == '"' + s + '"', ssrjson.dumps(s))
(True, '"\ud800"')
>>> ssrjson.dumps_to_bytes(s)
Traceback (most recent call last):
File "<python-input>", line 1, in <module>
ssrjson.dumps_to_bytes(s)
~~~~~~~~~~~~~~~~~~~~~~^^^
ssrjson.JSONEncodeError: Cannot encode unicode character in range [0xd800, 0xdfff] to utf-8
>>> json.loads(json.dumps(s, ensure_ascii=False)) == s
True
>>> ssrjson.loads(ssrjson.dumps(s)) == s
True
Integers
ssrjson.dumps can only handle integers that can be expressed by either uint64_t or int64_t in C.
>>> ssrjson.dumps(-(1<<63)-1)
Traceback (most recent call last):
File "<python-input>", line 1, in <module>
ssrjson.dumps(-(1<<63)-1)
~~~~~~~~~~~~~^^^^^^^^^^^^
ssrjson.JSONEncodeError: convert value to long long failed
>>> ssrjson.dumps(-(1<<63))
'-9223372036854775808'
>>> ssrjson.dumps((1<<64)-1)
'18446744073709551615'
>>> ssrjson.dumps(1<<64)
Traceback (most recent call last):
File "<python-input>", line 1, in <module>
ssrjson.dumps(1<<64)
~~~~~~~~~~~~~^^^^^^^
ssrjson.JSONEncodeError: convert value to unsigned long long failed
ssrjson.loads treats overflow integers as float objects.
>>> ssrjson.loads('-9223372036854775809') # -(1<<63)-1
-9.223372036854776e+18
>>> ssrjson.loads('-9223372036854775808') # -(1<<63)
-9223372036854775808
>>> ssrjson.loads('18446744073709551615') # (1<<64)-1
18446744073709551615
>>> ssrjson.loads('18446744073709551616') # 1<<64
1.8446744073709552e+19
Floats
For floating-point encoding, ssrJSON employs a slightly modified version of the Dragonbox algorithm. Dragonbox is a highly efficient algorithm for converting floating-point to strings, typically producing output in scientific notation. ssrJSON has partially adapted this algorithm to enhance readability by outputting a more user-friendly format when no exponent is present.
Encoding and decoding math.inf are supported. ssrjson.dumps outputs the same result as json.dumps. The input of ssrjson.loads should be "infinity" with lower or upper cases (for each character), and cannot be "inf".
>>> json.dumps(math.inf)
'Infinity'
>>> ssrjson.dumps(math.inf)
'Infinity'
>>> ssrjson.loads("[infinity, Infinity, InFiNiTy, INFINITY]")
[inf, inf, inf, inf]
The case of math.nan is similar.
>>> json.dumps(math.nan)
'NaN'
>>> ssrjson.dumps(math.nan)
'NaN'
>>> ssrjson.loads("[nan, Nan, NaN, NAN]")
[nan, nan, nan, nan]
Limitations
Please note that ssrJSON is currently in the beta stage of development.
Several commonly used features are still under development, including serialization of subclasses of str, the object_hook functionality, and correct error location reporting during decoding.
Contributing
Contributions are welcome! Please open issues or submit pull requests for bug fixes, performance improvements, or new features. There will soon be a development documentation.
License
This project is licensed under the MIT License. Licenses of other repositories are under licenses directory.
Acknowledgments
We would like to express our gratitude to the outstanding libraries and their authors:
- CPython
- yyjson: ssrJSON draws extensively from yyjson’s highly optimized implementations, including the core decoding logic, the decoding of bytes objects, the integer encoding and number decoding routines.
- orjson: ssrJSON references parts of orjson’s SIMD-based ASCII string encoding and decoding algorithms, as well as the key caching mechanism. Additionally, ssrJSON utilizes orjson’s pytest framework for testing purposes.
- Dragonbox: ssrJSON employs Dragonbox for high-performance floating-point encoding.
- xxHash: ssrJSON leverages xxHash to efficiently compute hash values for key caching.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ssrjson-0.0.8.tar.gz.
File metadata
- Download URL: ssrjson-0.0.8.tar.gz
- Upload date:
- Size: 388.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
232399c8a602241911740c0c4954f816992a82d6e04d53d7b93398b7759e9d1d
|
|
| MD5 |
7b86490229bb39fbcc70b70fff60de39
|
|
| BLAKE2b-256 |
7d28dad305855af9158f320eb1c9df9753ccd5ab940c5a1f13f152d00c592302
|
File details
Details for the file ssrjson-0.0.8-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 716.1 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e476d366aba10484cfec6e69edf55da876fe77e36d52add85da6d4e22392e138
|
|
| MD5 |
cc023767483dfa5b308389f5f001a3d3
|
|
| BLAKE2b-256 |
72f05c79264cfc6970deed42e90cbd4aa4a7fcff83bd5331cf976cc2c2cb9e93
|
File details
Details for the file ssrjson-0.0.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 718.6 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
116785599871825fbc13eb38e36b578c6368a7640e91c508a1177a8c1346f92d
|
|
| MD5 |
0da79b602c309594a4dd4283a01f446f
|
|
| BLAKE2b-256 |
ecc6cbf6b082f001c61d320828a00d3ded7863bc2b0e5f4de9c5f378daf67cd2
|
File details
Details for the file ssrjson-0.0.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 237.5 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13fd2dcf33b111b0537edc0e29d68d1011d33cb612f82c38642ccc59b076b17a
|
|
| MD5 |
e2e4f78fa23a9c310287c12bbffd1371
|
|
| BLAKE2b-256 |
7328acadf97d5adbb3ef2bca72da1666557f0ec88e6da42085f8f3b73f7bb558
|
File details
Details for the file ssrjson-0.0.8-cp314-cp314-macosx_11_0_universal2.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp314-cp314-macosx_11_0_universal2.whl
- Upload date:
- Size: 232.5 kB
- Tags: CPython 3.14, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea42e3d43eab097662a06736deb58103101b064c83652551bd50bcc5aa16d67a
|
|
| MD5 |
1d9be75764348a9b2ea477c5bb3f88b5
|
|
| BLAKE2b-256 |
b822d6231f4ff6a421fb2a1e8e4f365255e4c5b5cdd0c657e57fbc263055edf5
|
File details
Details for the file ssrjson-0.0.8-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 700.2 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a9cab380a68498fe2eb2c6e3bc29424ef81f483f8e09deb54857c4ba1f37fac
|
|
| MD5 |
f54fb504ba3faff67dbf80f7c48adbbe
|
|
| BLAKE2b-256 |
dc3e4ce3ad1edf4e2cb8820f9da7e71efd1b23060f61a05023741fcf048f7079
|
File details
Details for the file ssrjson-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 718.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecd6e4a622b6ce30767a6fcf9a6fe4c65b2118ae815a1fca86c7b38c0da09381
|
|
| MD5 |
4a2eb89e0637b0fa0e34fd8f550708eb
|
|
| BLAKE2b-256 |
dd03e31790ee00fefae13dfda8e84280e4a9528a93c483c4717bc34b4327f1c5
|
File details
Details for the file ssrjson-0.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 237.4 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d644b718d083cb9006465700c3fce870f16b28092bfb46d429f3aaf68a4f826b
|
|
| MD5 |
a069c964bcfdfa89b204f4c7d980600b
|
|
| BLAKE2b-256 |
188fe53f175c89a7a9041da19e4698421b03162c80d1dc4d17857b887b4393a3
|
File details
Details for the file ssrjson-0.0.8-cp313-cp313-macosx_11_0_universal2.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp313-cp313-macosx_11_0_universal2.whl
- Upload date:
- Size: 232.3 kB
- Tags: CPython 3.13, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3969635012b6d367e66e232785d93d37aa562c8ba97bd5d2831c4504df6e03f4
|
|
| MD5 |
4552b46845d421e74c413b213e1095f7
|
|
| BLAKE2b-256 |
581c2991232e25f975ae9754ac6a0978a73698d205a224834a74265c4cf94614
|
File details
Details for the file ssrjson-0.0.8-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 700.1 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f7041cf9d7c34582b0b5a7fe4825fe4ae7c3f1bb56d6e9641f2ad26c172ef78
|
|
| MD5 |
cf01f052217768aa410aca954fff2656
|
|
| BLAKE2b-256 |
8800c9e7320eea8b302dd1cfae3c4b62306ea934eb1fbbcc7a1a6e24cac83f88
|
File details
Details for the file ssrjson-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 718.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b15e72a6cdd6f993a0fdf95aa73ed8d0e18ba6bbcbd8e960932d7e2721fb39b1
|
|
| MD5 |
756aaf9851407a76d14f35acf029d51d
|
|
| BLAKE2b-256 |
a7d9601224644681ac690c7a294ef33b09be8a29ccaa12aeec397b9cfa24e2fa
|
File details
Details for the file ssrjson-0.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 237.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32e318498adddd979977a14cb8bcbb82be2285d307bc0281099205a98718306d
|
|
| MD5 |
2b342be89fb8fa025c5a4611cb728d19
|
|
| BLAKE2b-256 |
e40e3246bbcdd4f15ce42df1807ca287fb0fc7f84fe41c7ea323e76fe483f75e
|
File details
Details for the file ssrjson-0.0.8-cp312-cp312-macosx_11_0_universal2.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp312-cp312-macosx_11_0_universal2.whl
- Upload date:
- Size: 231.7 kB
- Tags: CPython 3.12, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4275e611fe5e9a3814871f3ccba947b401e81ecd513453573d963cb986ceadc6
|
|
| MD5 |
c34862071f41b89eabd5c09edcef5a94
|
|
| BLAKE2b-256 |
0b04c6e21e749527b5bbb65a32fe3fcbc0bdef2d0fa302be632749a94325e2ba
|
File details
Details for the file ssrjson-0.0.8-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 697.7 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eddbf10e5d540f3c46fe018fd78f4765ec628c22e0bc12a238d381a9fcf3c95
|
|
| MD5 |
1394da2f4d2ca1fe211902b4f3a1a6a5
|
|
| BLAKE2b-256 |
fd08a09e6dbaf038948ecac1e8012413f6c96a3bf472243e75aaf1b977b3c70b
|
File details
Details for the file ssrjson-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 709.4 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bd94e576bcd140637ff97373c7b5f465ca78027b38311b33b2b95733bc68e02
|
|
| MD5 |
596ea435745d6d55c3144a5173e5b686
|
|
| BLAKE2b-256 |
18fb68ba325cf7075246ed587d07d22fcf99f11f787a0efd6e6b10e408df3b3c
|
File details
Details for the file ssrjson-0.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 234.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
895a3619b940c84bbfce5722d4f34a4c264886a7f25c6f5c8ad87ee0f8870fad
|
|
| MD5 |
4f538a5ba779a1cea85d2e6e957a3e45
|
|
| BLAKE2b-256 |
b2f84c53e105a92acbbdd2fb22f477b4b2bd84e36449d08f75ed380e7664039b
|
File details
Details for the file ssrjson-0.0.8-cp311-cp311-macosx_11_0_universal2.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp311-cp311-macosx_11_0_universal2.whl
- Upload date:
- Size: 231.5 kB
- Tags: CPython 3.11, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aa29ec171b269b9baacdb1c12f98ddac41416045788a30a577ecb61f269f6f2
|
|
| MD5 |
a7c353255c2465770c615e67117a7c7c
|
|
| BLAKE2b-256 |
111bd1e786f179487b888e73a20bb2f8c747a5ee37247f61a7d60d93f0ae07c4
|
File details
Details for the file ssrjson-0.0.8-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 697.7 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a01fee898392ac8e3881a18692a975e10a7cbd0ff29038e9edbb196175f4bbe1
|
|
| MD5 |
5cb394723f78fd8deeef1cf5143b3be7
|
|
| BLAKE2b-256 |
76bcf83aa0154a8c4c33372395a0cd55cb84a3f991cb748ade450ae7dc7d5c3c
|
File details
Details for the file ssrjson-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 709.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f45c59d8d5af9b2309ea168060a88e0aa0380f3d1beef8e317342085c492ca73
|
|
| MD5 |
56a42d11da1f50870c14506ae51ba623
|
|
| BLAKE2b-256 |
b724574265f8b5ce23a3200829c55dd82ab48fc69ec89f9b40dc0ab00fd2a707
|
File details
Details for the file ssrjson-0.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 234.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd1d39b881df8f60256509265023aa0debc06135566401fc46cb5407b4109a5b
|
|
| MD5 |
aeb2d0d45c2d2fb9acb8e666a17b6fe6
|
|
| BLAKE2b-256 |
5234ac5ef4e1fde95d63942a63f0d512936797d194c07ecc28fe469718e585be
|
File details
Details for the file ssrjson-0.0.8-cp310-cp310-macosx_11_0_universal2.whl.
File metadata
- Download URL: ssrjson-0.0.8-cp310-cp310-macosx_11_0_universal2.whl
- Upload date:
- Size: 231.5 kB
- Tags: CPython 3.10, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
816b9c072932010953ba138e4deccf3f01f78bac1f1352e1a29508ce9df3c79b
|
|
| MD5 |
86db7f4e22cad84fcbbfa713139ea96d
|
|
| BLAKE2b-256 |
ce38c213a1e0f517a5cae8742bd70c2cfae8206595c7a4c1552bd2ad638b47bf
|