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

Żmij

Tests and comparisons reveals that the Zmij algorithm significantly outperforms other algorithms in terms of performance. ssrJSON project adopts the Rust implementation of Żmij algorithm (using static lib).

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 Rust version of the Żmij algorithm. Żmij is a highly efficient algorithm for converting floating-point to strings.

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]")  # allowed but not recommended to write `InFiNiTy` in JSON
[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]")  # allowed but not recommended to write `Nan` in JSON
[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.
  • Żmij: ssrJSON employs Żmij 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.14.tar.gz (7.4 MB 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.14-cp314-cp314t-win_amd64.whl (721.8 kB view details)

Uploaded CPython 3.14tWindows x86-64

ssrjson-0.0.14-cp314-cp314t-manylinux_2_34_x86_64.whl (709.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp314-cp314t-manylinux_2_34_aarch64.whl (242.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ ARM64

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

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

ssrjson-0.0.14-cp314-cp314-win_amd64.whl (692.6 kB view details)

Uploaded CPython 3.14Windows x86-64

ssrjson-0.0.14-cp314-cp314-manylinux_2_34_x86_64.whl (686.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp314-cp314-manylinux_2_34_aarch64.whl (231.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

ssrjson-0.0.14-cp314-cp314-macosx_11_0_universal2.whl (227.0 kB view details)

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

ssrjson-0.0.14-cp313-cp313-win_amd64.whl (676.0 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.14-cp313-cp313-manylinux_2_34_x86_64.whl (686.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp313-cp313-manylinux_2_34_aarch64.whl (230.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

ssrjson-0.0.14-cp313-cp313-macosx_11_0_universal2.whl (226.8 kB view details)

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

ssrjson-0.0.14-cp312-cp312-win_amd64.whl (676.1 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.14-cp312-cp312-manylinux_2_34_x86_64.whl (686.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp312-cp312-manylinux_2_34_aarch64.whl (230.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

ssrjson-0.0.14-cp312-cp312-macosx_11_0_universal2.whl (226.7 kB view details)

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

ssrjson-0.0.14-cp311-cp311-win_amd64.whl (681.6 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.14-cp311-cp311-manylinux_2_34_x86_64.whl (681.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp311-cp311-manylinux_2_34_aarch64.whl (229.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

ssrjson-0.0.14-cp311-cp311-macosx_11_0_universal2.whl (225.8 kB view details)

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

ssrjson-0.0.14-cp310-cp310-win_amd64.whl (681.9 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.14-cp310-cp310-manylinux_2_34_x86_64.whl (681.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

ssrjson-0.0.14-cp310-cp310-manylinux_2_34_aarch64.whl (230.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

ssrjson-0.0.14-cp310-cp310-macosx_11_0_universal2.whl (226.2 kB view details)

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

File details

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

File metadata

  • Download URL: ssrjson-0.0.14.tar.gz
  • Upload date:
  • Size: 7.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ssrjson-0.0.14.tar.gz
Algorithm Hash digest
SHA256 0f870275512b98a8a67bf7ae8c00815c362fc8a616b23a823b34ec9fa19a2c00
MD5 d5138321e02f6650ad0ed5bede5ce64a
BLAKE2b-256 c813dd5790ccdb0641eefd3908835e2f659162ebbf540b7dedcc7419424bf5c2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e0b8b70187244d20048346872c5e7b623b4c6e6d7968a9fd121e17623da0a7c4
MD5 d22511d1522f214d2de29a0a508b381a
BLAKE2b-256 ccfb968e4f839f4d10ff02ba02294ffcd775f531a13b8e3eb17dba64cd74c39d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9e930535f9d89915a9e0bb51738e9928f1a672bd58f5a89c7a9f7bd6653752cb
MD5 41428e89a6c3adf0666dd7487e626341
BLAKE2b-256 f6c72a7cf7fbf646d0fd919f2adc94e07a4311792e6906ada3fc0b86ebecd855

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4852ccab987aebf3650aa5eced0ef9317486a049f6e42741047689015b40c1ab
MD5 4189eda4f329f75df47452678afdd8e5
BLAKE2b-256 31d9744a9f9fce4cfcf3b280b26042b3d782cfbdc80b9102541d8f49b46872a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314t-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 3b6c660d956c98b7b5257b730b8b5a883a0fc1d3852cec01728c05812418ccf9
MD5 5272f1c0bc74212158c095c3ee9d7bf3
BLAKE2b-256 5295d8c7d520cfd5cc8529d25dfc593dc5ef49bef6a922b83c5f027be85d68d0

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cdec118d21a91f22848c8ee483fd704227927468ceee7f55d24667bba21bf145
MD5 f65f73398bb4733044c833701fd39f94
BLAKE2b-256 9d846af4d9ebaee23042102ea994e568dfd3fb693588452f7a75b0697af77675

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1c46e9e59fa619be888771916aedcc67087d290c68848aa7b05d25317a842f16
MD5 ac44dcabc8ae911d168a05f5da92cca4
BLAKE2b-256 1ce05ef7f227351ed2d3f81a52617f796619ba0c02bf51b9f859ac15b8f9baf3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4342712ec7804a116066ca9604487133b24374b08dbcf4830b93f9eea26d3f28
MD5 93232e8864571b60e485871409251ce5
BLAKE2b-256 cd4d5fa01f378a373f2089a032c93dccb9deaa1bc82bb3c7c873af869cf721ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp314-cp314-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0f1a2eb78cf99972f880fb3ffc8f15193f60d02fd8fda099856fe02465b18182
MD5 8a9e5e9244e8ffc94c6e8d8efb8ffe84
BLAKE2b-256 1a2797a4b1ea3ca9093851e607b81864b45bd436e48ce02b36cf495854c0593c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a510a7355f599f76547fa38bbc322f2d6cc8996f6eade8e619009f27ca878132
MD5 b3f2b635a509073e4ce2dddfa9022d98
BLAKE2b-256 1bd157824a0b58eefe173af50b9d6b4ed3cd88aebca1382de6d82f1ede82182b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 2d8a595f76498d0614c46d85232145f5ee565491f426b3528469a3263cc1d1b3
MD5 3e7bf234dc1c84cd157f658dc28aa4f1
BLAKE2b-256 951c2c98d42bed883169904ca4506ed8fc25902d4400f7e9b81b40472dca84b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 cedece0d80963c73266ed9a8fff6f8cfa123893520c9d0208ca454787dd57259
MD5 0e8aa2bef04515a4a0b419fa00aae91e
BLAKE2b-256 98071b76386d9d260629e81369a9acf2565dc572bcb9237c457c13d3aa436002

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 265898b4374c3b6d9dadd79602ff664f3610c1a1a7fe6eaeb88f6eda0bff7992
MD5 9c5483cf549c7f3797afc35906229091
BLAKE2b-256 851fe057417374bfa6da67358e3a6eb39fc837184b9bcb2014a6f32bf7f33f8d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a9ed572eca6647f4dbe436cfc06c0001b4919895da35665bcaf0e1f530e88772
MD5 ea308b321d6d790477ec7bf017b2b5f3
BLAKE2b-256 818880039b90a3bef41f963ee0df06aed42ec41aa7760c39add5bb61c946431d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c47286da9d0277a73e8cda8e2a31b55da1de284c4b9f04d482b07cc5af12fd0c
MD5 733d402d2f9b250ed4c11b39a2cb858f
BLAKE2b-256 3492ac5bc8b82a7fc43f4e978733c519f55ed0ada56b227c9c00f813beeac7cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 f9bb9178ee53a455bdaec752c4fc573005a2a9f9e4e6f6c29b0e5901618a6703
MD5 9ee54687e7a3a08c56b112c86372e356
BLAKE2b-256 a098a9cea38b7520ab9bf8042d2ad3e99b32d88cbedfc0143757de148bc33bd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9a294316dfc95e9236db52cdc4e0a95f53c45fc6516670661c3ba30028eddfc8
MD5 eca7eefde191b68908a26bc1bb685617
BLAKE2b-256 029b444b7ec9638a6b195c8434a2cbc3cf2168486f14ae4c2f235ca9b8935f3a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a92de4a47ea63a97b7da2340e35406faaffd69c0b65d5f4c3ef621684621bdae
MD5 250171700804eabf82b1fce2325d51c8
BLAKE2b-256 f4bffebb63d6365f36cd10b2f11005a7f9f96a01fcbf1966381df7e82455c360

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0bef9c18482afae9f478315bc4ad8de743ca180707ba38a0c882eaf599bddb8c
MD5 3a11d520bb811ddd00d362241d566e85
BLAKE2b-256 3b383c01b4ccb20135f030404cbd009b169aa9385e93a6cef37667cc5c6e50f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 473d15dd6a516f7a4277b84ec02549809d57ccd2f56558fdd4c5acc8bbf651f9
MD5 6bb53888c237512f88570b3f42406a1f
BLAKE2b-256 7539342a015f9ea9b79059a70fb270ab9bc384eb7790eaa1673d7287ce4fcfe9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 59fb6adc033c140bed31d8e7e2f256a88040b06535d5a4b3e3946d35d94060af
MD5 c5185e9f54d0b445cb78a20c846b8ec7
BLAKE2b-256 f7efaa12d4d75e18eeaf4ecf53484fe18128886b567095216703bc37a516193e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.14-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 34649f3369a78b4b434b54c2b99247d5556165da12d3065e07b47ff68fb11187
MD5 6f6c7d753cea9352b7467f2abb6f8470
BLAKE2b-256 bb6d329d8cd4026eff73d5368f1cacbf0f31ea7fa98b31c3d3064d2c40614e13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 afe8ea6a49f7a0f120c23c45c86958b414e25fe7c7e61bbefaba792efc0c43e2
MD5 871f37a8cedf628802518b15d6bd71c5
BLAKE2b-256 d6adf5ba53e22dc0cc82fd58227d44e29c465164d7779a8bf0414a7f1f0ce793

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b8b8eaf81f866fd0d92be3d4f2930f0d00dd45da0670271be019e45557c33e5c
MD5 e4ad74305174882d30aedea9bfa2499e
BLAKE2b-256 d90d3ca2103976b55c71eafd6a3fa9a0beefbb1e215b2fc6e1cfddb2c51d6147

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.14-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 582ea72aa397d5d36016b6fd15d3c284201e739c7975a7b96f5e95aed80d8bbc
MD5 1d593bdeef5145f6460dd7b22eb83752
BLAKE2b-256 6b3de9ffe3fec103020a939fdc4c88a4fb5b5b7cb28101e9a7ae0c7ea71518c2

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