Skip to main content

A pure-Python implementation of RFC 8785 (JSON Canonicalization Scheme)

Project description

rfc8785.py

CI PyPI version Packaging status

A pure-Python, no-dependency implementation of RFC 8785, a.k.a. JSON Canonicalization Scheme or JCS.

This implementation should be behaviorally comparable to Andrew Rundgren's reference implementation, with the following added constraints:

  1. This implementation does not transparently convert non-str dictionary keys into strings. Users must explicitly perform this conversion.
  2. No support for indentation, pretty-printing, etc. is provided. The output is always minimally encoded.
  3. All APIs produce UTF-8-encoded bytes objects or bytes I/O.

Installation

python -m pip install rfc8785

Usage

See the full API documentation here.

import rfc8785

foo = {
    "key": "value",
    "another-key": 2,
    "a-third": [1, 2, 3, [4], (5, 6, "this works too")],
    "more": [None, True, False],
}

rfc8785.dumps(foo)

yields:

b'{"a-third":[1,2,3,[4],[5,6,"this works too"]],"another-key":2,"key":"value","more":[null,true,false]}'

For direct serialization to an I/O sink, use rfc8785.dump instead:

import rfc8785

with open("/some/file", mode="wb") as io:
    rfc8785.dump([1, 2, 3, 4], io)

All APIs raise rfc8785.CanonicalizationError or a subclass on serialization failures.

Licensing

Apache License, Version 2.0.

Where noted, parts of this implementation are adapted from Andrew Rundgren's reference implementation, which is also licensed under the Apache License, Version 2.0.

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

rfc8785-0.1.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

rfc8785-0.1.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file rfc8785-0.1.1.tar.gz.

File metadata

  • Download URL: rfc8785-0.1.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for rfc8785-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e4d363062c14ed24feef47e669eaea421145ab16620cdd07755421fa947a4ac0
MD5 a754cee20561466c03e92c9082f6e628
BLAKE2b-256 410ff3408c4358b99e4f712780bc14f295d4448d307a00f995e939ce1becb706

See more details on using hashes here.

File details

Details for the file rfc8785-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: rfc8785-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for rfc8785-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3716e39b1b6a81bbfde68a1e989bdc4cce01e4f0c5cc265f73da7ebb270b85c
MD5 a6d2155a4b1e207c99b839523ecaa9a7
BLAKE2b-256 d65f48e0b01b40a4202d29d0d0c7aac4a01d5772a64d1e8a8f8029196ee47fe1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page