Skip to main content

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

Reason this release was yanked:

one byte stack overflow

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.

xjb64

Tests and comparisons reveals that the xjb64 algorithm significantly outperforms other algorithms in terms of performance and is more compatible. ssrJSON project adopts a slightly modified version to fit the standard behavior of Python's json module.

ramdom double on Apple M1
compiler: apple clang 17.0.0
ramdom double on AMD R7-7840H
compiler: icpx 2025.0.4

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 the xjb64 algorithm. xjb64 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'
>>> 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. Note that NaN never has a sign.

>>> json.dumps(math.nan)
'NaN'
>>> ssrjson.dumps(math.nan)
'NaN'
>>> 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.
  • xjb64: ssrJSON employs xjb64 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.15.tar.gz (376.1 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.15-cp314-cp314t-win_amd64.whl (760.0 kB view details)

Uploaded CPython 3.14tWindows x86-64

ssrjson-0.0.15-cp314-cp314t-manylinux_2_34_x86_64.whl (739.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

ssrjson-0.0.15-cp314-cp314t-manylinux_2_34_aarch64.whl (251.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp314-cp314t-macosx_11_0_universal2.whl (243.5 kB view details)

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

ssrjson-0.0.15-cp314-cp314-win_amd64.whl (714.4 kB view details)

Uploaded CPython 3.14Windows x86-64

ssrjson-0.0.15-cp314-cp314-manylinux_2_34_x86_64.whl (711.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

ssrjson-0.0.15-cp314-cp314-manylinux_2_34_aarch64.whl (240.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp314-cp314-macosx_11_0_universal2.whl (236.0 kB view details)

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

ssrjson-0.0.15-cp313-cp313-win_amd64.whl (695.8 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.15-cp313-cp313-manylinux_2_34_x86_64.whl (711.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

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

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp313-cp313-macosx_11_0_universal2.whl (235.7 kB view details)

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

ssrjson-0.0.15-cp312-cp312-win_amd64.whl (695.8 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.15-cp312-cp312-manylinux_2_34_x86_64.whl (711.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ssrjson-0.0.15-cp312-cp312-manylinux_2_34_aarch64.whl (239.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp312-cp312-macosx_11_0_universal2.whl (235.8 kB view details)

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

ssrjson-0.0.15-cp311-cp311-win_amd64.whl (699.7 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.15-cp311-cp311-manylinux_2_34_x86_64.whl (706.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

ssrjson-0.0.15-cp311-cp311-manylinux_2_34_aarch64.whl (238.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp311-cp311-macosx_11_0_universal2.whl (235.7 kB view details)

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

ssrjson-0.0.15-cp310-cp310-win_amd64.whl (699.9 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.15-cp310-cp310-manylinux_2_34_x86_64.whl (707.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

ssrjson-0.0.15-cp310-cp310-manylinux_2_34_aarch64.whl (238.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

ssrjson-0.0.15-cp310-cp310-macosx_11_0_universal2.whl (235.9 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.15.tar.gz
Algorithm Hash digest
SHA256 cb88d32e1a1953bd5c9654f8646c03a9f175a21cc55731bd5cccd801bc891a4a
MD5 ba6844b5aa4b8fd5d6d05d89e534ab57
BLAKE2b-256 46ec76c1438891e1ee729f223d4c56b0c94c0afc493823d302e924a17b0caf45

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 760.0 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.15-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c1942c1b7413b4e4e4ad22608e91fe21f81d2183cb69edcc0d362b0741c53892
MD5 f06b91ca22208abee6aadd4f99672f23
BLAKE2b-256 218cbb63d72055af39e18ce4dcf1de6ca160478e4c4f6a7eb660b10e3b6d20ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 04db03f17d903c3ddb087c0ec45b9481d92d0cc9cf9dfa4c173d8fdb42598d2c
MD5 0d408489afba9e3eea8dfdda1426ca52
BLAKE2b-256 8d768634f90fb737053db0a2829fccad1cc8cb680553c99993e33748cf55f4e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1b06197f231d1e51ca507f724c81bd67e87778e6fc79319c4257ade9d02337de
MD5 f4e0a7d8a4afeada178773c2ef4b4eab
BLAKE2b-256 626b96d63c578fd8ee1744c5b7553e8be5139edbaae435d683023fe1747d0e9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314t-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 47c2cddb9adc29b566ea06c71ceddb78f9be9157e75db0fa9cec9b1c024e3a9a
MD5 b90e947497540ecec9cc5e3381996974
BLAKE2b-256 667ff1339df7f4465deccf525a5a88b7be00afc585c8abeb9594fceac44cea67

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 714.4 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.15-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f43e12bbe104efadf41394479ebf10120ae36695d16c0f3c2950bdec7c226173
MD5 7dc4845504660820cdc4a8023d1d6468
BLAKE2b-256 3a723017ed95befd5213a6795a2c7e1c8a658a97f6adbc92866c38384d7195e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f628e6cac281f4dce3b63e33e440bb18ea5b229a1812fe23a2eb9d8957fb634f
MD5 a8274d4c7f6cd8d747d9886b48a1e94f
BLAKE2b-256 22cb14fd5255809c074c647727af84caafcb43a6cc46a38b38f4d5357f1a7aad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c5f014c70e7ff3eb0253ad339560cc2559d6ffc21222840ce4a068c5ac1aa630
MD5 389c5f05664518084d1abb2a2862246e
BLAKE2b-256 ae4faac95857558b26c529df0b317f6857a77445c141fb8bd0cfe92563e3b6a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp314-cp314-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 a9a9ec57cd9a4f2a6359a79ced42517d652acf6173b0f0ca9e7a619a35960b87
MD5 ea82a8baad1b8b3ea4fa426795531cc1
BLAKE2b-256 5882b9f78438bb129df956f1a9c436cf3a16d3af668573e169dd4e9a8687549c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 695.8 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.15-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8c15511d598e1cf4d032445969868b5533f55420c53d1c3210f608f499f9f363
MD5 56da2827774444f1ceb3545e353631a5
BLAKE2b-256 eeda7e49f03fe491bf26d087c1d98a027a86ea1442fc0f172751cdde44879550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 489b1643018175234d3d7972184b9d2083e6df014be81129d86cb198d24f5f82
MD5 fa1d1e1bf0a8dfca15038046e67d5ae2
BLAKE2b-256 7af146555cb2750e2441424bf7ca46b35ae5223d4445e055225c09251659218f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 ed849c163f15b372466012caee08ba50c3c5152efb3d57986b5a80715711f2f7
MD5 bcc20846b551a37cce857ea96d1e305f
BLAKE2b-256 4dd5cf3bcd9acc58bd49e34aaa2ef27c7c01b61df015ac9617f3fc0643265a11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 2e584d1f0f3b4d0fb5f03687a38635d8f5df4a36bc80aeed4a40e159db498c74
MD5 09cf20269329a119e9278c34d59c81d0
BLAKE2b-256 4e2221819be1b40f0056c48b23f21ff480cd85ddaaee38c54c324ac4320971df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 695.8 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.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5846130429ace7e975a36890a5680533db76d68b79dbd7dd99eeba6fc0d751e8
MD5 a935f4e8c6040551c0c6e7ed8afd8567
BLAKE2b-256 012cb8af91f1d4e308d5e2b629e23f183281dcab7962971075df98cdd45ca18a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f435867fda3ccc519e1c3d018cc6378c75edb9f55b143677b626cae937c2bd42
MD5 cee9347d9fac7233ea213df184c8467c
BLAKE2b-256 059d7d723eba42f10f6b41516d7abd892218426fa8491574e29669567388f175

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 3ee7140a56f7cc735429aa4e83bbb8ed25f2a953ab767d09e618e27a49a69655
MD5 365dad6120a396818642e04831e7ee1b
BLAKE2b-256 7066aaebdfb063c86741f149541c6ae58c9e7a7335f6b530c16a8f06e03c4140

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 fbdf2fe74490f29db8f44563662fd7bca924c961bc639e6c916bad008b3d478b
MD5 2ce0ad5898a40df59e445e190ef71a9c
BLAKE2b-256 d562931f7604fced5bc580df66436f1c9b1371ed25aacb8310bef68973ee23d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 699.7 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.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4114d412886b4ce89d3fe9dcdb6d99cc8fcbf23522cd27d3fe88b759b9e13a95
MD5 2fcba6bdf7ea772aad41451824b13337
BLAKE2b-256 b1d0a89246e509bf120a3a242eb5c07563843cbf2eb16afd9582c2fb83f36a43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 68d3ff25f9611693087591881958216dd333d443bed531b42d06dbefd2faf6ba
MD5 d00a194c7c35f7125da62f21a148f9e3
BLAKE2b-256 f397a5c77ddcfb5694b5538fc50202c74eb691caed200e4b1150bf7b8ae43d86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 fc13269e8b9e050f0f893a1cd972084ada180feb6a1e28391866b7fe5f4e3de5
MD5 128b29b10762bb5571c2dc06bb70d246
BLAKE2b-256 280ef5cc641f1d679f35d94bee230a8352499758279fb6bd8403710930c47bcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 2363182f3f679d36832ba563a98529520791be56a5f07004748eb2e64fdc1b49
MD5 d366939ece09cba4b31f86829395a0d4
BLAKE2b-256 8d9ddcabb78aaf859d5c66fd406cf63ca43032b96930ab3e9766dec91c0931ff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ssrjson-0.0.15-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 699.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.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ff314383d7321cd88798f39416ac1048afb377ac9774655f831cb7a2f965623d
MD5 05709a929ef66d9326be52c4f855493b
BLAKE2b-256 9e2fdccb525b49104e6c4741dbcec12d0f6354437d432ae089722eec7d78b7c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7d40a571082751f2a787f4d14bea0f276bcc3a4ca8b45bdc7df626e78c03551c
MD5 30d6e3e5b8497bcd844987f7fe5be911
BLAKE2b-256 9f59676ebd522aacd5cc5322c9c5cf1670a8a6b0ce7d5d498592f1d41743e2bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e567db8effcdde45823fefddc6f9f05b7138bad1827b134add01cdc8e0a2d57f
MD5 741b65229573e5fc5e78146f59c24168
BLAKE2b-256 389b5e683b0f6a77247a7e78d705db45877e11bbfff9e2e73ee0c2d1900eaf4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.15-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 14049353af81e29b31b0fc0b50e8355702685ac79665973fb6f0e79f7a2a5cb4
MD5 fee6cd5a86491a85f658ff4135cc485f
BLAKE2b-256 296c5ec8a34a6598d8a51018468cf573c9719d386dc9cc1b1a510eea99ef348a

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