Skip to main content

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

Project description

ssrJSON

PyPI - Version PyPI - Wheel codecov

A SIMD boosted high-performance and correct Python JSON parsing library that fully leverages modern processor capabilities.

Introduction

ssrJSON is a Python JSON library that leverages modern hardware capabilities to achieve peak performance, implemented primarily in C with some components written in C++. It offers a fully compatible interface to Python’s standard json module, making it a seamless drop-in replacement, while providing exceptional performance for JSON encoding and decoding.

How Fast is ssrJSON?

TL;DR: ssrJSON is faster than or nearly as fast as orjson (which announces itself as the fastest Python library for JSON) on most benchmark cases.

ssrJSON is the first JSON parsing library that handles non-ASCII str object directly using SIMD without any translation between str and it's UTF-8 encoding. Other third-party Python JSON libraries are slow when handling non-ASCII strings without UTF-8 cache. (simple_object_zh.json)

Real-world non-ASCII case (twitter.json):

ASCII case (github.json):

Floats (canada.json):

Numbers (mesh.json):

ssrjson.dumps() is about 4x-25x as fast as json.dumps() (Python3.13, 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.13, x86-64, AVX2). ssrJSON also provides ssrjson.dumps_to_bytes(), which encode Python objects directly to bytes object using SIMD instructions, similar to orjson.dumps but without calling slow CPython functions to do the UTF-8 encoding. Typically, ssrJSON is capable of processing non-ASCII strings directly without invoking any slow CPython UTF-8 encoding and decoding interfaces, eliminating the need for intermediate representations. Furthermore, the underlying implementation leverages SIMD acceleration to optimize this process. Details of benchmarking can be found in the benchmark repository. 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.

Design Goal

The design goal of ssrJSON is to provide a straightforward and highly compatible approach to replace the inherently slower Python standard JSON encoding and decoding implementation with a significantly more efficient and high-performance alternative. If your module exclusively utilizes dumps and loads, you can replace the current JSON implementation by importing ssrJSON as import ssrjson as json. To facilitate this, ssrJSON maintains compatibility with the argument formats of json.dumps and json.loads; however, it does not guarantee identical results to the standard JSON module, as many features are either intentionally omitted or not yet supported. For further information, please refer to the section Features.

Implementation Details

Encoding

The encoding performance of JSON libraries is not significantly limited by CPython, resulting in a very high potential maximum. During string encoding, ssrJSON extensively utilizes SIMD instructions to accelerate copying and conversion operations. The implementation of dumps_to_bytes also tackles challenges related to UTF-8 encoding. ssrJSON includes a comprehensive UTF-8 encoding algorithm optimized for all supported SIMD features as well as Python’s internal string representation format (PyCompactUnicodeObject). For floating-point number encoding, ssrJSON employs a slightly modified version of the DragonBox algorithm, well-known for its high-performance floating-point conversions. When encoding integers, ssrJSON adapts the integer encoding approach from yyjson, a highly optimized C-language JSON parsing library.

Decoding

The main performance bottleneck in JSON decoding is the speed of creating Python objects. To address this, ssrJSON adopts the short-key caching mechanism from orjson, which greatly reduces the overhead of creating Python string objects. For string handling, when the input is a str type, ssrJSON applies SIMD optimizations similar to those used in encoding, speeding up the decoding process. For bytes inputs, ssrJSON uses a customized version of yyjson’s string decoding algorithm. Beyond string handling, ssrJSON extensively leverages yyjson’s codebase, including its numeric decoding algorithms and core decoding logic.

Current Status

ssrJSON is currently operational, although some potentially useful features have yet to be implemented. The development of ssrJSON is still actively ongoing, and your code contributions are highly appreciated.

How To Install

Pre-built wheels are available on PyPI.

pip install ssrjson

Note: ssrJSON requires at least SSE4.2 on x86-64 (x86-64-v2). ssrJSON does not work with Python implementations other than CPython. Currently supported CPython versions are 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15. For Python >= 3.14, 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 (indent=0). 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: indent must be 0, 2, or 4

Other Arguments Supported by Python's json

Arguments like ensure_ascii, parse_float provided by json can be recognized but ignored by design.

The functionality of object_hook in json.loads will be supported in future.

Features

Generally, ssrjson.dumps behaves like json.dumps with ensure_ascii=False, and ssrjson.loads behaves like json.loads. Below we explain some feature details of ssrJSON, which might be different from json module or other third-party JSON libraries.

Strings

Code points within the range [0xd800, 0xdfff] cannot be represented in UTF-8 encoding, and the standard JSON specification typically prohibits the presence of such characters. However, since Python's str type is not encoded in UTF-8, ssrJSON aims to maintain compatibility with the Python json module's behavior, while other third-party Python JSON libraries may complain about this. In contrast, for the dumps_to_bytes function, which encodes output in UTF-8, the inclusion of these characters in the input is considered invalid.

>>> s = chr(0xd800)
>>> (json.dumps(s, ensure_ascii=False) == '"' + s + '"', json.dumps(s, ensure_ascii=False))
(True, '"\ud800"')
>>> (ssrjson.dumps(s) == '"' + s + '"', ssrjson.dumps(s))
(True, '"\ud800"')
>>> ssrjson.dumps_to_bytes(s)
Traceback (most recent call last):
  File "<python-input>", line 1, in <module>
    ssrjson.dumps_to_bytes(s)
    ~~~~~~~~~~~~~~~~~~~~~~^^^
ssrjson.JSONEncodeError: Cannot encode unicode character in range [0xd800, 0xdfff] to utf-8
>>> json.loads(json.dumps(s, ensure_ascii=False)) == s
True
>>> ssrjson.loads(ssrjson.dumps(s)) == s
True

Integers

ssrjson.dumps can only handle integers that can be expressed by either uint64_t or int64_t in C.

>>> ssrjson.dumps(-(1<<63)-1)
Traceback (most recent call last):
  File "<python-input>", line 1, in <module>
    ssrjson.dumps(-(1<<63)-1)
    ~~~~~~~~~~~~~^^^^^^^^^^^^
ssrjson.JSONEncodeError: convert value to long long failed
>>> ssrjson.dumps(-(1<<63))
'-9223372036854775808'
>>> ssrjson.dumps((1<<64)-1)
'18446744073709551615'
>>> ssrjson.dumps(1<<64)
Traceback (most recent call last):
  File "<python-input>", line 1, in <module>
    ssrjson.dumps(1<<64)
    ~~~~~~~~~~~~~^^^^^^^
ssrjson.JSONEncodeError: convert value to unsigned long long failed

ssrjson.loads treats overflow integers as float objects.

>>> ssrjson.loads('-9223372036854775809')  # -(1<<63)-1
-9.223372036854776e+18
>>> ssrjson.loads('-9223372036854775808')  # -(1<<63)
-9223372036854775808
>>> ssrjson.loads('18446744073709551615')  # (1<<64)-1
18446744073709551615
>>> ssrjson.loads('18446744073709551616')  # 1<<64
1.8446744073709552e+19

Floats

For floating-point encoding, ssrJSON employs a slightly modified version of the Dragonbox algorithm. Dragonbox is a highly efficient algorithm for converting floating-point to strings, typically producing output in scientific notation. ssrJSON has partially adapted this algorithm to enhance readability by outputting a more user-friendly format when no exponent is present.

Encoding and decoding math.inf are supported. ssrjson.dumps outputs the same result as json.dumps. The input of ssrjson.loads should be "infinity" with lower or upper cases (for each character), and cannot be "inf".

>>> json.dumps(math.inf)
'Infinity'
>>> ssrjson.dumps(math.inf)
'Infinity'
>>> ssrjson.loads("[infinity, Infinity, InFiNiTy, INFINITY]")
[inf, inf, inf, inf]

The case of math.nan is similar.

>>> json.dumps(math.nan)
'NaN'
>>> ssrjson.dumps(math.nan)
'NaN'
>>> ssrjson.loads("[nan, Nan, NaN, NAN]")
[nan, nan, nan, nan]

Limitations

Please note that ssrJSON is currently in the beta stage of development.

Several commonly used features are still under development, including serialization of subclasses of str, the object_hook functionality, and error location reporting during decoding. Additionally, ssrJSON will not support encoding or decoding of third-party data structures.

The ARM64 architecture is not yet supported but will be supported in the near future.

Contributing

Contributions are welcome! Please open issues or submit pull requests for bug fixes, performance improvements, or new features. There will soon be a development documentation.

License

This project is licensed under the MIT License. Licenses of other repositories are under licenses directory.

Acknowledgments

We would like to express our gratitude to the outstanding libraries and their authors:

  • CPython
  • yyjson: ssrJSON draws extensively from yyjson’s highly optimized implementations, including the core decoding logic, the decoding of bytes objects, the integer encoding and number decoding routines.
  • orjson: ssrJSON references parts of orjson’s SIMD-based ASCII string encoding and decoding algorithms, as well as the key caching mechanism. Additionally, ssrJSON utilizes orjson’s pytest framework for testing purposes.
  • Dragonbox: ssrJSON employs Dragonbox for high-performance floating-point encoding.
  • xxHash: ssrJSON leverages xxHash to efficiently compute hash values for key caching.

Project details


Download files

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

Source Distribution

ssrjson-0.0.5.tar.gz (379.2 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.5-cp313-cp313-win_amd64.whl (629.1 kB view details)

Uploaded CPython 3.13Windows x86-64

ssrjson-0.0.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (672.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

ssrjson-0.0.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (218.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

ssrjson-0.0.5-cp312-cp312-win_amd64.whl (628.7 kB view details)

Uploaded CPython 3.12Windows x86-64

ssrjson-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (671.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

ssrjson-0.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (218.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

ssrjson-0.0.5-cp311-cp311-win_amd64.whl (625.4 kB view details)

Uploaded CPython 3.11Windows x86-64

ssrjson-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

ssrjson-0.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (215.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

ssrjson-0.0.5-cp310-cp310-win_amd64.whl (625.5 kB view details)

Uploaded CPython 3.10Windows x86-64

ssrjson-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

ssrjson-0.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (215.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

ssrjson-0.0.5-cp39-cp39-win_amd64.whl (625.5 kB view details)

Uploaded CPython 3.9Windows x86-64

ssrjson-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (670.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

ssrjson-0.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (215.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.5.tar.gz
Algorithm Hash digest
SHA256 9b063f3bfcaab3380d2a9e3c56bf8d353711ce431985b86193054b65f34b588d
MD5 9bcf8e6f067559656cbba06b27ee387a
BLAKE2b-256 8f44146fc7daf375e89443a70df95dc6071d22a3f34060bf19214b8433096441

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0a61f7ba74824e564d724ad1dd2bedf26aee23525ea081bc1363f1f41eb1fb37
MD5 4616b0049e3bc48a403dc84b8c074667
BLAKE2b-256 46e0916ee06a3347058777777fb384c8de47876bd727946becb3538cff5bbfdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 624bd51365544349e6b8f543725a641e9404db44fe4c37f544b55ee1c9cb193f
MD5 600e70009671aa9ed18e96811bc7b697
BLAKE2b-256 b97b680ae22d61b5086b14789f23b4525c2da2d26a3a4ee9c00bb60d1e724a89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 bc7bc1b86df58d5f69feda11a4b142e89084f3fccaa04e47d83de45b92526fa3
MD5 8e2198e61390d9203707145b04fefe13
BLAKE2b-256 51931804a00f9f24e1ebcd94ae5bc7addb1ac43fbb128d1756075bd3b5740338

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 415599d8cbabd7f7697397e5c102347163f946773b66ab40672f5cea3e72e0a8
MD5 224d1fbe79626516530992f97f81d3a1
BLAKE2b-256 83839b3dbd18a5a44df6c80baa3298b478114d6c6c04b7934d534a864f433a83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8216c2521e4564de8cb478d27c53a42838df62c1e9fd28becf429606d075da90
MD5 b7a39733c76b51f5630ddea56237d870
BLAKE2b-256 f2c350787d58b3938ff4a41e5670f193636fdf904a0142a8cf4f9e17bd3671ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3b94597df61ae180d8730f295a12210460519e36e5f7b26b292a8f574d7b4c5
MD5 ec51f7606087266ec37c6151bf60a470
BLAKE2b-256 402dbfd4fe0c1c1a31db598ed24fb8c42331e029fbc3882b9a55dc0992f9ef7a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 18e0277c50fd1a874739a9e97a2685fc1700c141546c059847e3733265c88174
MD5 6255bd88967e3b36c56514fda30d97f1
BLAKE2b-256 e515a5b47489ba7b63e18225709a5688057504615e884aca729b0e506ca4f969

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 77ade86682feeea0bfcc697d17431f86b6969f2831b048eac89fed567c43b036
MD5 ca838c2866a2c9878a6838bc3cb18749
BLAKE2b-256 b58faf09c41d7ad5cc1dc2da033e72914622b54ef4137a553213c24cf9ff06b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 539d31dbb8727bb3b996e000ff4ba1fcfb82a24566b4f605290d8c0c2439e210
MD5 851ce2e33aafeb671f964338576d9bfd
BLAKE2b-256 d61e87ae61f0b66b3bc86dcf1cf1a2477a8936b194e839cb8aba5d5443e20a2d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for ssrjson-0.0.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f755893de8f73f055281de8c23624ea705463eebfb5f0e7954708ced70179e0e
MD5 edde5d18c4e4c2a98939fff8c5c152be
BLAKE2b-256 ab8cc0e00d75b89fb83bca7f7950e3bb2104fa44796e33d51907c1e84465ec4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a04ba8a000e8c49dfb7ecbe2e51cf1b44745fce3c8c553df6f6499b14956c253
MD5 79c7883f1664bfcf3db3a8513c443e9c
BLAKE2b-256 8387561c26233c70f5dcf8fdeacacbd14ad0dcaed5e34d63da9d1eb038e579dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 19ff365f13c411ef6933380cdf451d6191ee7abd087e7e9eea3cbf68782d2182
MD5 162cbe8af77ef7134f6a536b0f847cf1
BLAKE2b-256 a960ae892f8558fabb91045c47ae24dde1ed309a7413fcd0a949e93fa676e63a

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ssrjson-0.0.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 625.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for ssrjson-0.0.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1fb7adc64cf2b7be5325126241af80a690e039fbc6af5f351e84824082062b1c
MD5 938cb99aebcd2b96b077461aaf43d912
BLAKE2b-256 e273c2d11d7054b603be28bfdbb5ec3acc49d6622df9b27e0e6ee1cd1e86c6db

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec5361d17821b9a113ee672af3bf0394d22b6bf039d556e7f81ecbb4ed4038e1
MD5 545daf322e1241ac52ac921831f830e6
BLAKE2b-256 ee47f7476761d999345b03c4d783d820e1346515f39ea20c1a1a4652fdc11a69

See more details on using hashes here.

File details

Details for the file ssrjson-0.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ssrjson-0.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 161b301643665f2ec80be470a96726684d107ddfb7c53ebdb6c30a4631caca30
MD5 4ac307ce90e06ce5db9dd422da2692ee
BLAKE2b-256 31805563e6cdff1a5c4e1c5ff219e969a100da3243e3821ea5f7769202a4699a

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