Skip to main content

A high-performance Python JSON library that fully leverages modern processor capabilities.

Project description

ssrJSON

PyPI - Version PyPI - Wheel codecov

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_bytes on the same str will be faster.

Cons:

  • The first call to dumps_to_bytes (when visiting an str without cache) will be slower.
  • The memory cost will grow. Each non-ASCII str visited 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssrjson-0.0.8.tar.gz (388.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ssrjson-0.0.8-cp314-cp314-win_amd64.whl (716.1 kB view details)

Uploaded CPython 3.14Windows x86-64

ssrjson-0.0.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (718.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

ssrjson-0.0.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (237.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

ssrjson-0.0.8-cp314-cp314-macosx_11_0_universal2.whl (232.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ universal2 (ARM64, x86-64)

ssrjson-0.0.8-cp313-cp313-win_amd64.whl (700.2 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (718.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

ssrjson-0.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (237.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ssrjson-0.0.8-cp313-cp313-macosx_11_0_universal2.whl (232.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ universal2 (ARM64, x86-64)

ssrjson-0.0.8-cp312-cp312-win_amd64.whl (700.1 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (718.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ssrjson-0.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (237.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ssrjson-0.0.8-cp312-cp312-macosx_11_0_universal2.whl (231.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ universal2 (ARM64, x86-64)

ssrjson-0.0.8-cp311-cp311-win_amd64.whl (697.7 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (709.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

ssrjson-0.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (234.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

ssrjson-0.0.8-cp311-cp311-macosx_11_0_universal2.whl (231.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

ssrjson-0.0.8-cp310-cp310-win_amd64.whl (697.7 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (709.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ssrjson-0.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (234.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

ssrjson-0.0.8-cp310-cp310-macosx_11_0_universal2.whl (231.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

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

Hashes for ssrjson-0.0.8.tar.gz
Algorithm Hash digest
SHA256 232399c8a602241911740c0c4954f816992a82d6e04d53d7b93398b7759e9d1d
MD5 7b86490229bb39fbcc70b70fff60de39
BLAKE2b-256 7d28dad305855af9158f320eb1c9df9753ccd5ab940c5a1f13f152d00c592302

See more details on using hashes here.

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

Hashes for ssrjson-0.0.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e476d366aba10484cfec6e69edf55da876fe77e36d52add85da6d4e22392e138
MD5 cc023767483dfa5b308389f5f001a3d3
BLAKE2b-256 72f05c79264cfc6970deed42e90cbd4aa4a7fcff83bd5331cf976cc2c2cb9e93

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 116785599871825fbc13eb38e36b578c6368a7640e91c508a1177a8c1346f92d
MD5 0da79b602c309594a4dd4283a01f446f
BLAKE2b-256 ecc6cbf6b082f001c61d320828a00d3ded7863bc2b0e5f4de9c5f378daf67cd2

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 13fd2dcf33b111b0537edc0e29d68d1011d33cb612f82c38642ccc59b076b17a
MD5 e2e4f78fa23a9c310287c12bbffd1371
BLAKE2b-256 7328acadf97d5adbb3ef2bca72da1666557f0ec88e6da42085f8f3b73f7bb558

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp314-cp314-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp314-cp314-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 ea42e3d43eab097662a06736deb58103101b064c83652551bd50bcc5aa16d67a
MD5 1d9be75764348a9b2ea477c5bb3f88b5
BLAKE2b-256 b822d6231f4ff6a421fb2a1e8e4f365255e4c5b5cdd0c657e57fbc263055edf5

See more details on using hashes here.

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

Hashes for ssrjson-0.0.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1a9cab380a68498fe2eb2c6e3bc29424ef81f483f8e09deb54857c4ba1f37fac
MD5 f54fb504ba3faff67dbf80f7c48adbbe
BLAKE2b-256 dc3e4ce3ad1edf4e2cb8820f9da7e71efd1b23060f61a05023741fcf048f7079

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecd6e4a622b6ce30767a6fcf9a6fe4c65b2118ae815a1fca86c7b38c0da09381
MD5 4a2eb89e0637b0fa0e34fd8f550708eb
BLAKE2b-256 dd03e31790ee00fefae13dfda8e84280e4a9528a93c483c4717bc34b4327f1c5

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d644b718d083cb9006465700c3fce870f16b28092bfb46d429f3aaf68a4f826b
MD5 a069c964bcfdfa89b204f4c7d980600b
BLAKE2b-256 188fe53f175c89a7a9041da19e4698421b03162c80d1dc4d17857b887b4393a3

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3969635012b6d367e66e232785d93d37aa562c8ba97bd5d2831c4504df6e03f4
MD5 4552b46845d421e74c413b213e1095f7
BLAKE2b-256 581c2991232e25f975ae9754ac6a0978a73698d205a224834a74265c4cf94614

See more details on using hashes here.

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

Hashes for ssrjson-0.0.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0f7041cf9d7c34582b0b5a7fe4825fe4ae7c3f1bb56d6e9641f2ad26c172ef78
MD5 cf01f052217768aa410aca954fff2656
BLAKE2b-256 8800c9e7320eea8b302dd1cfae3c4b62306ea934eb1fbbcc7a1a6e24cac83f88

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b15e72a6cdd6f993a0fdf95aa73ed8d0e18ba6bbcbd8e960932d7e2721fb39b1
MD5 756aaf9851407a76d14f35acf029d51d
BLAKE2b-256 a7d9601224644681ac690c7a294ef33b09be8a29ccaa12aeec397b9cfa24e2fa

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32e318498adddd979977a14cb8bcbb82be2285d307bc0281099205a98718306d
MD5 2b342be89fb8fa025c5a4611cb728d19
BLAKE2b-256 e40e3246bbcdd4f15ce42df1807ca287fb0fc7f84fe41c7ea323e76fe483f75e

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4275e611fe5e9a3814871f3ccba947b401e81ecd513453573d963cb986ceadc6
MD5 c34862071f41b89eabd5c09edcef5a94
BLAKE2b-256 0b04c6e21e749527b5bbb65a32fe3fcbc0bdef2d0fa302be632749a94325e2ba

See more details on using hashes here.

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

Hashes for ssrjson-0.0.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9eddbf10e5d540f3c46fe018fd78f4765ec628c22e0bc12a238d381a9fcf3c95
MD5 1394da2f4d2ca1fe211902b4f3a1a6a5
BLAKE2b-256 fd08a09e6dbaf038948ecac1e8012413f6c96a3bf472243e75aaf1b977b3c70b

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4bd94e576bcd140637ff97373c7b5f465ca78027b38311b33b2b95733bc68e02
MD5 596ea435745d6d55c3144a5173e5b686
BLAKE2b-256 18fb68ba325cf7075246ed587d07d22fcf99f11f787a0efd6e6b10e408df3b3c

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 895a3619b940c84bbfce5722d4f34a4c264886a7f25c6f5c8ad87ee0f8870fad
MD5 4f538a5ba779a1cea85d2e6e957a3e45
BLAKE2b-256 b2f84c53e105a92acbbdd2fb22f477b4b2bd84e36449d08f75ed380e7664039b

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9aa29ec171b269b9baacdb1c12f98ddac41416045788a30a577ecb61f269f6f2
MD5 a7c353255c2465770c615e67117a7c7c
BLAKE2b-256 111bd1e786f179487b888e73a20bb2f8c747a5ee37247f61a7d60d93f0ae07c4

See more details on using hashes here.

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

Hashes for ssrjson-0.0.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a01fee898392ac8e3881a18692a975e10a7cbd0ff29038e9edbb196175f4bbe1
MD5 5cb394723f78fd8deeef1cf5143b3be7
BLAKE2b-256 76bcf83aa0154a8c4c33372395a0cd55cb84a3f991cb748ade450ae7dc7d5c3c

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f45c59d8d5af9b2309ea168060a88e0aa0380f3d1beef8e317342085c492ca73
MD5 56a42d11da1f50870c14506ae51ba623
BLAKE2b-256 b724574265f8b5ce23a3200829c55dd82ab48fc69ec89f9b40dc0ab00fd2a707

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cd1d39b881df8f60256509265023aa0debc06135566401fc46cb5407b4109a5b
MD5 aeb2d0d45c2d2fb9acb8e666a17b6fe6
BLAKE2b-256 5234ac5ef4e1fde95d63942a63f0d512936797d194c07ecc28fe469718e585be

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.8-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.8-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 816b9c072932010953ba138e4deccf3f01f78bac1f1352e1a29508ce9df3c79b
MD5 86db7f4e22cad84fcbbfa713139ea96d
BLAKE2b-256 ce38c213a1e0f517a5cae8742bd70c2cfae8206595c7a4c1552bd2ad638b47bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page