cbor-diag: Diagnostic notation (EDN) for CBOR

March 29, 2026 · View on GitHub

============================================= cbor-diag: Diagnostic notation (EDN) for CBOR

This Python module is a minimal wrapper around the cbor-edn crate_ (formally around the cbor-diag crate_). Unlike those crates, which offers lots of functionality for manipulating CBOR and its diagnostic notation, this module only exposes two very simple functions:

  • diag2cbor, which parses diagnostic notation and produces a corresponding CBOR binary string, and
  • cbor2diag, which does the inverse.

It is recommended to use the cbor2_ package to actually process the CBOR data.

Documentation is available on readthedocs_.

Installation

This project can be installed from PyPI_; binary wheels are available there for the common platforms.

Maintenance

This package is considered feature-complete at release, and maintainened reactively -- when changes to the ecosystem threaten to make it unusable.

New features are only expected to be added if they are already present in the underlying cbor-edn crate_, and will likely manifest as extra arguments to cbor2diag.

This package is built using maturin_ and pyo3_ and largely follows their template. The built module is renamed from cbor_diag to _cbor_diag (and consequently wrapped manually) to avoid it being part of the package's public API. (The need for the workaround is tracked at maturin_ and through there in the typing module_).

The package is currently hosted on GitHub at https://github.com/chrysn/cbor-diag-py because maturin can not yet_ build pipelines for GitLab or codeberg.

License

This package was written by Christian Amsüss chrysn@fsfe.org, and is published under the terms of MIT_ or Apache-2.0_ license, at the user's choice.

Special thanks to Nemo157 for providing the cbor-diag crate, the authors of the peg crate (which does cbor-edn's heavy lifting), and Carsten Bormann for providing a PEG parser ready ABNF in the edn-literals draft_.

.. _cbor-edn crate: https://crates.io/crates/cbor-edn .. _cbor-diag crate: https://crates.io/crates/cbor-diag .. _cbor2: https://pypi.org/project/cbor2/ .. _on readthedocs: https://cbor-diag.readthedocs.io/ .. _from PyPI: https://pypi.org/project/cbor-diag/ .. _maturin: https://www.maturin.rs/ .. _pyo3: https://pyo3.rs/ .. _at maturin: https://github.com/PyO3/maturin/issues/1399 .. _in the typing module: https://github.com/python/typing/issues/1333 .. _not yet: https://github.com/PyO3/maturin/issues/1507 .. _MIT: https://spdx.org/licenses/MIT.html .. _Apache-2.0: https://spdx.org/licenses/Apache-2.0.html .. _peg crate: https://crates.io/crates/peg .. _the edn-literals draft: https://www.ietf.org/archive/id/draft-ietf-cbor-edn-literals-16.html