Skip to main content

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

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-31x 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

ssrJSON employs xjb64 as float-to-string algorithm. 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.

Random double on Apple M1:

Random double on AMD R7-7840H:

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

Install from PyPI

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

Or you like the pip way:

mv pysrc ssrjson  # rename the python source directory to make it installable
pip install .

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'}

NumPy Support

ssrJSON can directly serialize NumPy scalar types and ndarray objects without converting them to Python types first. To avoid introducing NumPy as a hard dependency, you must explicitly enable this by calling setup_numpy_types once:

>>> import numpy as np
>>> import ssrjson
>>> ssrjson.setup_numpy_types(np)

After setup, NumPy scalars and arrays are recognized in dumps and dumps_to_bytes:

>>> ssrjson.dumps(np.int64(42))
'42'
>>> ssrjson.dumps(np.array([1, 2, 3]))
'[1,2,3]'
>>> ssrjson.dumps({"data": np.array([[1, 2], [3, 4]]), "score": np.float32(0.95)})
'{"data":[[1,2],[3,4]],"score":0.95}'
>>> ssrjson.dumps_to_bytes(np.arange(5))
b'[0,1,2,3,4]'

Supported NumPy types:

Category Types
Integers int8, int16, int32, int64, uint8, uint16, uint32, uint64
Floats float16, float32, float64
Boolean bool_
Array ndarray (C-contiguous, any supported element dtype, up to 32 dimensions)

np.float64 is a subclass of Python float and is always handled by the standard float path, regardless of whether setup_numpy_types has been called.

ndarray encoding writes element data directly from the array's memory buffer, bypassing Python object creation. Combined with the existing xjb64/xjb32 and yyjson-derived (for integers) encoding routines, this gives ssrJSON a significant performance advantage over converting to Python lists first. Indent is fully supported for ndarray output.

Note: setup_numpy_types must be called before any concurrent encoding in free-threading builds. The function itself is not thread-safe with respect to concurrent dumps/dumps_to_bytes calls. Once setup is complete, encoding is safe to call concurrently.

Simple benchmark shows ssrJSON outperforms orjson in encoding numpy arrays:

$ python dev_tools/numpy_benchmark.py --scale 10
numpy 2.4.2  |  scale=10  number=20  repeat=7  warmup=2
Python 3.14.3

[dumps_to_bytes: ssrjson vs orjson — numpy ndarray]

  int32_1d[1000000]  shape=1000000  dtype=int32  3906.2 KiB raw
    ssrjson  : median 1.83 ms  best 1.78 ms  out=4391695B  2.24 GiB/s
    orjson   : median 4.96 ms  best 4.88 ms  out=4391695B  843.99 MiB/s
    ssrjson is 2.72x faster than orjson (median); best 2.74x

  int64_1d[1000000]  shape=1000000  dtype=int64  7812.5 KiB raw
    ssrjson  : median 4.30 ms  best 4.13 ms  out=10982023B  2.38 GiB/s
    orjson   : median 8.79 ms  best 8.66 ms  out=10982023B  1.16 GiB/s
    ssrjson is 2.05x faster than orjson (median); best 2.10x

  float32_1d[1000000]  shape=1000000  dtype=float32  3906.2 KiB raw
    ssrjson  : median 9.15 ms  best 9.04 ms  out=10627011B  1.08 GiB/s
    orjson   : median 17.25 ms  best 17.18 ms  out=10627112B  587.55 MiB/s
    ssrjson is 1.88x faster than orjson (median); best 1.90x

  float64_1d[1000000]  shape=1000000  dtype=float64  7812.5 KiB raw
    ssrjson  : median 13.27 ms  best 12.94 ms  out=19269164B  1.35 GiB/s
    orjson   : median 19.12 ms  best 18.99 ms  out=19269255B  961.00 MiB/s
    ssrjson is 1.44x faster than orjson (median); best 1.47x

  float64_2d[1000x1000]  shape=1000x1000  dtype=float64  7812.5 KiB raw
    ssrjson  : median 13.50 ms  best 13.14 ms  out=19272764B  1.33 GiB/s
    orjson   : median 19.09 ms  best 19.04 ms  out=19272837B  962.88 MiB/s
    ssrjson is 1.41x faster than orjson (median); best 1.45x

  float64_3d[100x100x100]  shape=100x100x100  dtype=float64  7812.5 KiB raw
    ssrjson  : median 13.46 ms  best 13.13 ms  out=19291108B  1.33 GiB/s
    orjson   : median 19.48 ms  best 19.42 ms  out=19291190B  944.22 MiB/s
    ssrjson is 1.45x faster than orjson (median); best 1.48x

  int32_2d[1000x1000]  shape=1000x1000  dtype=int32  3906.2 KiB raw
    ssrjson  : median 1.17 ms  best 1.17 ms  out=5391602B  4.31 GiB/s
    orjson   : median 5.04 ms  best 5.00 ms  out=5391602B  1020.42 MiB/s
    ssrjson is 4.32x faster than orjson (median); best 4.29x

  bool_1d[1000000]  shape=1000000  dtype=bool  976.6 KiB raw
    ssrjson  : median 323.7 µs  best 323.1 µs  out=5500290B  15.83 GiB/s
    orjson   : median 3.24 ms  best 3.21 ms  out=5500290B  1.58 GiB/s
    ssrjson is 10.02x faster than orjson (median); best 9.92x

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.19.tar.gz (300.5 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.19-cp314-cp314t-win_amd64.whl (865.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_x86_64.whl (863.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_aarch64.whl (286.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp314-cp314t-macosx_11_0_arm64.whl (275.1 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

ssrjson-0.0.19-cp314-cp314-win_amd64.whl (830.6 kB view details)

Uploaded CPython 3.14Windows x86-64

ssrjson-0.0.19-cp314-cp314-manylinux_2_34_x86_64.whl (824.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp314-cp314-manylinux_2_34_aarch64.whl (280.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp314-cp314-macosx_11_0_arm64.whl (267.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

ssrjson-0.0.19-cp313-cp313-win_amd64.whl (810.9 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.19-cp313-cp313-manylinux_2_34_x86_64.whl (824.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp313-cp313-manylinux_2_34_aarch64.whl (280.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp313-cp313-macosx_11_0_arm64.whl (267.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ssrjson-0.0.19-cp312-cp312-win_amd64.whl (812.7 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.19-cp312-cp312-manylinux_2_34_x86_64.whl (825.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp312-cp312-manylinux_2_34_aarch64.whl (280.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp312-cp312-macosx_11_0_arm64.whl (267.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

ssrjson-0.0.19-cp311-cp311-win_amd64.whl (801.3 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.19-cp311-cp311-manylinux_2_34_x86_64.whl (818.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp311-cp311-manylinux_2_34_aarch64.whl (279.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp311-cp311-macosx_11_0_arm64.whl (269.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

ssrjson-0.0.19-cp310-cp310-win_amd64.whl (801.5 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.19-cp310-cp310-manylinux_2_34_x86_64.whl (819.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

ssrjson-0.0.19-cp310-cp310-manylinux_2_34_aarch64.whl (279.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

ssrjson-0.0.19-cp310-cp310-macosx_11_0_arm64.whl (269.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ssrjson-0.0.19.tar.gz
  • Upload date:
  • Size: 300.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19.tar.gz
Algorithm Hash digest
SHA256 ce3cfd34901d29b9e4d16b8396f6d124b2ba90e00d439a0334de32b3391e7e6c
MD5 3e6113a83c0d398ba62eea8ee3e2c53b
BLAKE2b-256 c3f8f78f1df250e61374c9dbc1183dc05720ae82f2deb83987d79eef6a275ba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19.tar.gz:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 865.5 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e31ab5ad8401a179448ea5ebcfc78b78cb7ad3dac203a055eab1d6effc206544
MD5 063ba066df18c494a09bad7ab958d35a
BLAKE2b-256 6a50f33fc2adca5764fe20632c3a98ebd50237e8f348b1191e82ce4b05a559f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5778e91f1fa9252af6b438c884e4367cf773bb936b5d5231842a472d0f33d76d
MD5 8fbf8dab4392734f351f58b53be3fda0
BLAKE2b-256 7f2798897ca87d4f4467a739e4850008f5f28e0c674050adb33df1c190f291d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0c63f19a4a86e5e8a73ad52986d27d49463537717d163c72c2e976b054d795ca
MD5 e9dcd6480e2022fb393d714179018e4c
BLAKE2b-256 5c453364941ce02bf62296e5e3b61a5044ac48f0de75039e0b83d255a33a806d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314t-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 20f93d2568f7a8387fe9fdbaccff3c8f003564df135b518de435a2d451b4fb6d
MD5 32cdd1dd7c5c7f395aa0db4d07f5b915
BLAKE2b-256 1bc4a4953b00dcf37f2b2076adb893b87c8b3eafc2488531b2ac731516f10995

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 830.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 da98af374f5498d6228494b4abbf763c4575bbc01eacdf9b041c35f21b2ee39d
MD5 14ff09241f1a6922d1eca2d375ed92f7
BLAKE2b-256 1c1440576630c75fe1a572755dd0833bf43e63392be64fd86928c30c75271b2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 874dfb68b9e6cdef937e062132bbc76ac60b7da8c9fc3ff9e90d48674d3aea19
MD5 9eac005865bea37f363fd7af7571f12b
BLAKE2b-256 9269dadf8be42148bac2354b4052933be8ccada34e3d124069197c081094359d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 d7b0444e1626d72adadd95350287c35f0c7dc9a9df9b88f79d7b27264b3bcc3e
MD5 39f692f08120d29f0dc05ce3b5ee7f94
BLAKE2b-256 2f174efea99e630dcc2988cecfd9bff7613957b6f9070423c17f01384e6c2788

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b0ef5a3bf9fa0d19b2ffffe0fefdfe54f6aba15889f80c806ca73a5b69f43fb
MD5 681a1ffb263852617d4b8c7a77a9f6ed
BLAKE2b-256 bcb9ab078e90cec09227f33e8bcbd4d4f5dd94001e16cb63ecdaf5f8b2f3dce5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 810.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 af5947b57e840e935434a4ab9a25d66bd0370723b8919d0c15483a8cc655fc25
MD5 94c8d78345a49826be2525654589a983
BLAKE2b-256 b94e07ae4122d0805ff347329108be53d0758b59c6947090552feb79afd84a6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp313-cp313-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8889095569867b9f88a70ae4794fc7f5af41126f9ff1eedf352b4439ac596d7b
MD5 2e573239a45e5bc46be2c6d42345bd0d
BLAKE2b-256 233b91ac26aec8f16f9f629a6f0f8fb9fe7ac3598bfc1d37b8337c6a07b5fc9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 aac3e160a07ee61ad1d045285a4d83dad7b5751408a08e03010d1e7f6381d0a0
MD5 4c05c53d9e646fa5b1c31fe30367f961
BLAKE2b-256 bcb754c40829494c1f5afaafd2705a71c967966b88eca17303e9c9c789b9ddd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 776c5a9f80056d0ee0320e5b280450a9c8afd652b492561273abd31139c54cf7
MD5 030449d56cab303ca7e5a6ef1febce69
BLAKE2b-256 0ec5b67a4ca8c3efc95a9e2cb706378991e70be69d0d50353521aaffbd14d91f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 812.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d85253921d4c692c459cd87b8bcce8ebf93390f1a47ee13a6c6e48e97db2fcff
MD5 79999cb5fb205335cd5962a36691cdcb
BLAKE2b-256 b1a712a74726232a709fb370c112eca4d9a30275a639844955bb6430c978ce47

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp312-cp312-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a411c7550c4da4c43570d7f3b3a0a00f74a62f5c85f46ec0d03c18ee5045d84d
MD5 676fabd3632d95cd2df1c246198ee7e1
BLAKE2b-256 009903d3478dbc425995e373680fa08bf2d2ae4215bd37491196eb4169671b4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 34d775904bba7af3b660bfe1b797d9ea4eac5adbde2e3ff3be56e3f2f336ca05
MD5 9892685dd223bd0d2b413955b9aa9d35
BLAKE2b-256 d0dc282af2d95947a526f09e5e0bd77bbcba46ed636246ba9410cc9c01b48e1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1e937c20c7e508b9aef64a917eaba89bc67389cc15e0cf681a6c16df1b41fad
MD5 51dc8442e9d619e924f5ca6ea46c911b
BLAKE2b-256 1fa18be28e1fbfb216199c70b1d29f1513a1b9a16d6fc5646463b601074c5792

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 801.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cd61f3e67a4cdd2bcb7bd50cbb90e0f0e8b4b7cfa6aa2ddaccd0ab095866f453
MD5 0f1fae4e47ee33cb0d122eebd1a75e8e
BLAKE2b-256 9c9f64247d0ace4ef2d653914f376c7496efe014972706dc673d6e283f9a900b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp311-cp311-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 74798b200fd5845cf6e0524ceb77fd50c18ab6ee365f70e3065d977cbcb9b510
MD5 eeb48fd55776715d68fdb2f1bb2fafc0
BLAKE2b-256 2967873f4d0ffae47f8c80db5dc2c17408c9602cb14f61b22eb635487fcdd298

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c1185dac38d44b6b54f11673f9ffce73ee76e533a59a237b8cf2cec241f64243
MD5 31c67a0947d3a89495a22ea0dc0db6b2
BLAKE2b-256 50520caa0c79041a5e2a104e56da117fa89e80750a01c9effa52d89a482ef4f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp311-cp311-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f93f2f1186a7cf880c0eb9d70071fdf370f7c4f63c9ef7aaa5d3755b111a054a
MD5 de19c64f3e50637cce619e7b2268ff2f
BLAKE2b-256 7cb544fc72cf9d5ae1707d86e65d2860c4b2950eadbd71b1884c07e99b95fc83

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ssrjson-0.0.19-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 801.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ssrjson-0.0.19-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5df7403df6c576e0e4150f0137e2205cec5f12b55e653a70d599b09ce3b57592
MD5 1c033665dfef3f40af02ea832d4edb54
BLAKE2b-256 17b0c8cbe389d4def3347c65204b0094e3ef81a12d0525381b21bd41b6ec4300

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp310-cp310-win_amd64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 06c6d466d615a72c45bf2372b4fa3e5d6956f047dfd4269fb777dc43293c3d13
MD5 0118074fc8bd092f9b0d5ce8eae4b27c
BLAKE2b-256 988d683b2fe45ec812d99e9a4e06c92128f20f2b5c2ea2fb602397a2ebe5c56e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a25cb7454f0f32b718b6d3475df14661b5671d95d66fd7ce7ce33483a61ae768
MD5 863005e27e246c765cf434369ae3759f
BLAKE2b-256 999ce39bf06ea8e0a85c42fc8b107ba27654c894cbdecf5601eaf1cfb2a62f93

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp310-cp310-manylinux_2_34_aarch64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssrjson-0.0.19-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.19-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08913852e17a015e51ee53201a5b6a8f401ce52dc58a7e4509da17c34e668893
MD5 6883f463b61ece520f895b8b85f342e7
BLAKE2b-256 d28332c6e696a0a270f72522114b05f12a338d73fc5bd5b386990931b1dca9ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssrjson-0.0.19-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on Antares0982/ssrJSON

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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