Metadata-Version: 2.1
Name: canonicaljson
Version: 1.6.4
Summary: Canonical JSON
Home-page: https://github.com/matrix-org/python-canonicaljson
Author: Matrix.org Team and Contributors
Author-email: packages@matrix.org
License: Apache License, Version 2.0
Keywords: json
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: simplejson (>=3.14.0)
Requires-Dist: typing-extensions (>=4.0.0) ; python_version < "3.8"
Provides-Extra: frozendict
Requires-Dist: frozendict (>=1.0) ; extra == 'frozendict'

Canonical JSON
==============

.. image:: https://img.shields.io/pypi/v/canonicaljson.svg
    :target: https://pypi.python.org/pypi/canonicaljson/
    :alt: Latest Version

Features
--------

* Encodes objects and arrays as `RFC 7159`_ JSON.
* Sorts object keys so that you get the same result each time.
* Has no insignificant whitespace to make the output as small as possible.
* Escapes only the characters that must be escaped, U+0000 to U+0019 / U+0022 /
  U+0056, to keep the output as small as possible.
* Uses the shortest escape sequence for each escaped character.
* Encodes the JSON as UTF-8.
* Can encode ``frozendict`` immutable dictionaries.

Supports Python versions 3.7 and newer.

.. _`RFC 7159`: https://tools.ietf.org/html/rfc7159

Installing
----------

.. code:: bash

   pip install canonicaljson

Using
-----

To encode an object into the canonicaljson:

.. code:: python

    import canonicaljson
    assert canonicaljson.encode_canonical_json({}) == b'{}'

There's also an iterator version:

.. code:: python

    import canonicaljson
    assert b''.join(canonicaljson.iterencode_canonical_json({})) == b'{}'

The underlying JSON implementation can be chosen with the following:

.. code:: python

    import json
    import canonicaljson
    canonicaljson.set_json_library(json)

.. note::

    By default canonicaljson uses `simplejson`_ under the hood (except for PyPy,
    which uses the standard library json module).

.. _simplejson: https://simplejson.readthedocs.io/
