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.4.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: rfc8785-0.1.4.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for rfc8785-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e545841329fe0eee4f6a3b44e7034343100c12b4ec566dc06ca9735681deb4da
MD5 0ec6463b47a6cb29e438e49fe80d42d9
BLAKE2b-256 ef2ffa1d2e740c490191b572d33dbca5daa180cb423c24396b856f5886371d8b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for rfc8785-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 520d690b448ecf0703691c76e1a34a24ddcd4fc5bc41d589cb7c58ec651bcd48
MD5 fa0351683b28bce1d644950880ea35c2
BLAKE2b-256 4d78119878110660b2ad709888c8a1614fce7e2fab39080ab960656dc8605bf6

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