Skip to main content

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

Project description

ssrJSON

PyPI - Version PyPI - Wheel Supported Python versions codecov

A SIMD boosted high-performance and correct Python JSON parsing library, faster than the fastest.

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.

If you prefer to skip the technical details below, please proceed directly to the How To Install section.

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.

Below is an artificial benchmark case to demonstrate the speed of encoding non-ASCII JSON (simple_object_zh.json). Upon seeing the diagram below, you might wonder: why do the performance results from other libraries appear so poor? If you are interested, please refer to the section UTF-8 Cache of str Objects.

Real-world case (twitter.json):

Real-world 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 UTF-8 encoded bytes object using SIMD instructions.

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.

SIMD Acceleration

ssrJSON is designed for modern hardware and extensively leverages SIMD instruction sets to accelerate encoding and decoding processes. This includes operations such as memory copying, integer type conversions, JSON encoding, and UTF-8 encoding. Currently, ssrJSON supports x86-64-v2 and above (requiring at least SSE4.2) as well as aarch64 devices. It does not support 32-bit systems or older x86-64 and ARM hardware with limited SIMD capabilities.

On the x86-64 platform, ssrJSON provides three distinct SIMD libraries optimized for SSE4.2, AVX2, and AVX512, respectively, automatically selecting the most appropriate library based on the device’s capabilities. For aarch64 architectures, it utilizes the NEON instruction set. Combined with Clang’s powerful vector extensions and compiler optimizations, ssrJSON can almost fully exploit CPU performance during encoding operations.

UTF-8 Cache of str Objects

The author has a detailed tech blog about this topic: Beware of Performance Pitfalls in Third-Party Python JSON Libraries.

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 * and a length with type Py_ssize_t) to minimize the overhead of subsequent UTF-8 encoding operations. When PyUnicode_AsUTF8AndSize (or other similar functions) is invoked, the CPython implementation utilizes it to store the C string along with its length. This mechanism ensures that the caller does not need to manage the lifetime of the returned C string. The str.encode("utf-8") operation does not write to the cache; however, if the cache is already present, it utilizes the cached data to create the bytes object.

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. Also it is worth noting that during JSON encoding and decoding in Python, converting between str objects does not involve any UTF-8-related operations. However, some third-party JSON libraries still directly or indirectly invoke UTF-8 encoding APIs, which are resource-intensive. This explains why other third-party libraries exhibit poor performance when performing loads on str inputs, or when their dumps function outputs str types.

ssrjson.dumps_to_bytes addresses this by leveraging SIMD instruction sets for UTF-8 encoding, achieving significantly better performance than conventional encoding algorithms implemented in CPython. 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 each str object 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. 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 after the first call to dumps_to_bytes on the same str might be faster.

Cons:

  • The first call to dumps_to_bytes (when visiting a non-ASCII str without cache) might 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. The memory will be released only when the str object is deallocated.

If you decide to disable it, ssrJSON will not write cache; but if the cache already exists, ssrJSON will still use it.

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.

Dragonbox

Tests and comparisons reveals that the Dragonbox algorithm significantly outperforms other algorithms in terms of performance. Consequently, the ssrJSON project adopts a floating-point number string conversion approach based on the Dragonbox algorithm. The modified Dragonbox library constitutes the sole C++ code within ssrJSON.

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.

Other Implementation Details

Overview of Encoding

The encoding performance of JSON libraries is not significantly limited by CPython, resulting in a very high potential maximum. As mentioned above, 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). When encoding integers, ssrJSON adapts the integer encoding approach from yyjson, a highly optimized C-language JSON parsing library.

Overview of 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 of 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.

Limitations

Please note that ssrJSON is currently in its beta development stage, and some common features have yet to be implemented. We welcome your contributions to help build a highly performant Python JSON library.

ssrJSON will strive to minimize the addition of new features that are rarely used to maintain its stability. There are two main reasons for this approach: first, ssrJSON aims to serve as a high-performance foundational library rather than one overloaded with various elaborate features; second, although leveraging C language brings significant performance advantages, it also introduces considerable potential instability. Drawing from software engineering experience, limiting new features that are rarely used will help reduce the incidence of critical vulnerabilities.

How To Install

Pre-built wheels are available on PyPI, you can install it using pip.

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

object_hook can be used in loads, and works the same as json.loads.

Arguments like ensure_ascii, parse_float provided by json module can be recognized but ignored by design. To treat passing these arguments as an error, call ssrjson.strict_argparse(True) once and it will take effect globally.

Inspect Module Features and Settings

Call get_current_features to get current features and settings of ssrJSON.

>>> ssrjson.get_current_features()
{'multi_lib': True, 'write_utf8_cache': True, 'strict_arg_parse': False, 'free_threading': False, 'lockfree': False, 'simd': 'AVX2'}

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]

Free Threading

ssrJSON experimentally supports free-threading (Python >= 3.14). You can find stable wheel releases on PyPI. When building from source, enable this feature by specifying -DBUILD_FREE_THREADING=ON. In that build, during encoding ssrJSON acquires locks on dict and list objects from outer to inner; if another thread attempts to lock those objects in a different order, a deadlock may occur — this is expected behavior. If you encounter unexpected crashes, please file an issue. Decoding is lock-free.

If you require a lock-free encoding variant, build from source with -DFREE_THREADING_LOCKFREE=ON. Compared with the lock-based version, the lock-free version achieves approximately a 13% improvement in single-threaded encoding performance. In that configuration, multi-threaded modifications of the same dict/list can cause the program to crash; users are responsible for ensuring there are no race conditions. Lock-free builds are not distributed on PyPI.

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.
  • klib: ssrJSON uses khash to implement circular detection in free-threading build.

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.13.tar.gz (408.6 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.13-cp314-cp314t-win_amd64.whl (757.4 kB view details)

Uploaded CPython 3.14tWindows x86-64

ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_x86_64.whl (750.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_aarch64.whl (244.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp314-cp314t-macosx_11_0_universal2.whl (239.4 kB view details)

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

ssrjson-0.0.13-cp314-cp314-win_amd64.whl (722.3 kB view details)

Uploaded CPython 3.14Windows x86-64

ssrjson-0.0.13-cp314-cp314-manylinux_2_34_x86_64.whl (729.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp314-cp314-manylinux_2_34_aarch64.whl (240.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp314-cp314-macosx_11_0_universal2.whl (235.8 kB view details)

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

ssrjson-0.0.13-cp313-cp313-win_amd64.whl (705.8 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.13-cp313-cp313-manylinux_2_34_x86_64.whl (729.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp313-cp313-manylinux_2_34_aarch64.whl (240.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp313-cp313-macosx_11_0_universal2.whl (235.5 kB view details)

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

ssrjson-0.0.13-cp312-cp312-win_amd64.whl (706.2 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.13-cp312-cp312-manylinux_2_34_x86_64.whl (729.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp312-cp312-manylinux_2_34_aarch64.whl (240.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp312-cp312-macosx_11_0_universal2.whl (234.7 kB view details)

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

ssrjson-0.0.13-cp311-cp311-win_amd64.whl (704.3 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.13-cp311-cp311-manylinux_2_34_x86_64.whl (721.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp311-cp311-manylinux_2_34_aarch64.whl (238.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp311-cp311-macosx_11_0_universal2.whl (234.6 kB view details)

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

ssrjson-0.0.13-cp310-cp310-win_amd64.whl (704.6 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.13-cp310-cp310-manylinux_2_34_x86_64.whl (721.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

ssrjson-0.0.13-cp310-cp310-manylinux_2_34_aarch64.whl (239.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

ssrjson-0.0.13-cp310-cp310-macosx_11_0_universal2.whl (234.9 kB view details)

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

File details

Details for the file ssrjson-0.0.13.tar.gz.

File metadata

  • Download URL: ssrjson-0.0.13.tar.gz
  • Upload date:
  • Size: 408.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13.tar.gz
Algorithm Hash digest
SHA256 ad7373cd311f9ebd67eebac3c39aa06a96e9f5e1c359f9a70beeb127f05c9363
MD5 785135d17499f4e88e5e953642576241
BLAKE2b-256 ec4197d782dc5bbb96ae63ec8c72d1ec88c79d95ba2255edf2688be3acd1cf89

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 757.4 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 7083f993e672dbc2bd0772779e9c6aa81d3d2a6665a0929b88d7ad168ef0a1c5
MD5 fbe3f7efdf1162dd226047705945d704
BLAKE2b-256 1dd2936f9744b2e4cb25b6157daaee4e4d165d08e11112dbb3751d31ee997df8

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 566b18437c66f646f889d25e1ffdba02de27987a6c9046e73fc5478ae4fcc8c8
MD5 0d82b7327883fc100a1bfaaf1bb5cc6d
BLAKE2b-256 ae6dc180a8072c47c42f6f149dc3216cbd9904b7bb36a2a98bf768ce8215eb87

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 36543dd52d61ac883dd8a4dadc8ed2c3109bd2c33cc73c401e63b5f3e6162162
MD5 a8858e78abf697da06cddcbb9ac391d5
BLAKE2b-256 9e76ce7599b9090d0c3102061b04a49104dd4a0cf99ffeb8c8f74db7145c1b11

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314t-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314t-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d1f750b7b626fbd838f8880fa25adcae61f57092e91c0e557cf7d84d9af17f71
MD5 5f2d807bfe470d7163c2507ea19f7657
BLAKE2b-256 897780381cbad779c61b02ee543138a32252270439ea0afbc63ca200fcd5f09e

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 722.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 801ec6e78f430e128ffcb7746258cece1bfbfb07301a2d01e525a9d4bd4846d5
MD5 2fbd60043c354099567c1987c3f99616
BLAKE2b-256 48c10d570f9474fd42138d91d08a621d8ac793a40fe18919a092699487c80f54

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5b23540e72cbb3f4093892ddb824def31e24c0e1ed3791519ebabc209b557974
MD5 44951a2cd0a59698f46abe174412b971
BLAKE2b-256 e3c17665bb11ced3b1a980631b96fe8a73a1add8ed1658dc80cc68e01084669c

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 5784e1c8a98a93344840a2af08ab5e3ec5f6e517880b71a94df894d245bf53cc
MD5 8246075e152449294667195942e673e9
BLAKE2b-256 99dbb8914a5c10a14bcd13df548bccb05b3e7c068ec3ce16e6fa614c97b8c0a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp314-cp314-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c2cd012ffb2feced27d01d7b3df9c48ef54245d4eb9d9244ca609d0573cce8f3
MD5 bcdb86e2792fc7ba17063ef4aa98013e
BLAKE2b-256 a344f80dc1d7f3fdc5bcfd881c1001bcf9c3a2726f07ea0f473681793715a2de

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 705.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cf84fa56b634b2e62333a74e1016512d5c888996808ad662963ab422f3f68566
MD5 692453e77b3a949a09e1bd5371ad5481
BLAKE2b-256 8909c5a5988115adc322d8ea9ad4fe14e24f3aff2b5b75a47452a7bd3774f628

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 df1ba6db4bf43926c4093889b1b2e1be2587fe595c7422a4d2cad17386392fd5
MD5 1995e3f4edbba6f9e56bdcbedc591de1
BLAKE2b-256 ae0ac83576ead0340ed43ad29433518514e264c096b103a72f9aa06ab997f690

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 114bafce24a0e2fbd711f326aac72a0d54375aa3f07df84311bcd4f982d99ba6
MD5 8bb78499797b79dd0893a4e56bfc870d
BLAKE2b-256 7b7db444d75db70eb70fc6b7efd89cc4159694a4d36585fc3eb614c90a54580b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d4eaa9fe43599c8dbfe9e6a0d64e8e90e9774eca750b0e459bc939b4eb1a3e71
MD5 7cb89d76d763fe428d6b27e817f4b288
BLAKE2b-256 e228e92f1f15cdbd0f400a4621f7514760b8e50c11abe9d48c7c8d0f06c19111

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 706.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 68ed95638b014e3ce16b6cac4e8a507ccfde5b880dee77aef89c6827c46e55aa
MD5 263e8b3af4159e22cabe43d432d93253
BLAKE2b-256 a27687508d8e9b6e3e4a210ed7a74a7d6e61b01237a7a85874b4d36e03ee49b9

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 459d16321af51d691ae80b0117a17eafcf06746133df7338a13a34083b7da0da
MD5 e0daeef0c49d73da6253f47aa4c0f605
BLAKE2b-256 1c2c620a0d85bf611909d3803354149523f9bfb7b953c6199323dc551e6a8be1

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 2ed7f5ff2fa1c47a6b2b787cac961135c6dd9819e713884f16a94f83c0c7eca5
MD5 ff7f0b9599d28ee6fd410f352dd4a8c3
BLAKE2b-256 3f79372b6bd5ed4dcc71e07840a5587de1368990f8d3663ba90d6f324a6bbeff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 91349f177b469b7d74c530edab28d965f5c98a4bfd38ee98bf75ec9686edfeb0
MD5 b8e4847cf7ed2f251b82b9f7cb1a21ca
BLAKE2b-256 81b4b2c5de58572007af0a65370e96bbfbbc0ce79c73327ba95639addb5d19ef

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 704.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65e7af7c452ede515305c83875a06b679a4f8833147d2fec5b877381b493c3be
MD5 436b47d77b6ff05259fea1caadd452cd
BLAKE2b-256 920ba1a428498c75fa29f247a61b62355165baab3c5dc030ae808d19e445e606

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6f61198a2454676ae5e473bfb43021a4f8c02fdd3ff7269d3addf540c6059e62
MD5 4a236877be4a2ecc272faf285ce13032
BLAKE2b-256 ad0a14a72da0c3916704a27ff37d6ba04a9c2e3ab92febd29146b23167435d79

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 ba9a2cfccf266b8946bb6d5520a82f259b1e5d1b6ca2ce15dc85f05d7df61314
MD5 f0a7cc367ecebdfab55b5ab3f596773e
BLAKE2b-256 3526b4f39a9115fe539314e434ba5364108258f85ecbf817dbb3f0066a6e8e0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 b2b3fe7262a9b7fef88bb39bb638e3ecd78eaffd47bc2579c340f03aa23b9e7b
MD5 0a97f051156bd15cfb21c1104466639c
BLAKE2b-256 8de11fa2e44f07721ab66735902c8080f50abdb5daf01b80ccdf3a509d8ab976

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.13-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 704.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ssrjson-0.0.13-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c28b79643f64a7c53e35ac145c78b6d695637e18f496198bb4124a9e2993aaf2
MD5 1a5f4df565faf35fd130838bab0077c9
BLAKE2b-256 df72f73714ce0768888d9e6afa93f1a574469221abd2d0580575c8d4253b779a

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 17c04073c2c43aad44f2645f78c367c93e2f50a4ee6b89556ade3c2e47257c67
MD5 64eb01ada9c184aaa7d5f69a05f2d8ae
BLAKE2b-256 45453f48140e7a289800a1f89606f4ccdf3b17094998f5278c11e45b683115e2

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.13-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 ce57c3e06d0055b17b9283103859506ae744c60c6ba14a4d796e45f72bd3d079
MD5 141b4cc4712c10736b19f5f5749edae6
BLAKE2b-256 150bb82ceb8300cbf8ec38c039da6c00d031748e1df6cfa5f58a6347bd29371b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.13-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 1ce4831eb513fcd9a3834ad2d5f8d76f7b71a9ee2d19ede00fe74856f95e07c3
MD5 cb655210dee431462709fadc546ab9fa
BLAKE2b-256 a25b3fd7017618f5b2c84d5259739aa8c307380953c1244ed039169ce3ff8b60

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