A Python implementation of the OMEMO Multi-End Message and Object Encryption protocol.
A complete implementation of XEP-0384 on protocol-level, i.e. more than just the cryptography. python-omemo supports different versions of the specification through so-called backends. A backend for OMEMO in the urn:xmpp:omemo:2
namespace (the most recent version of the specification) is available in the python-twomemo Python package. A backend for (legacy) OMEMO in the eu.siacs.conversations.axolotl
namespace is available in the python-oldmemo package. Multiple backends can be loaded and used at the same time, the library manages their coexistence transparently.
Install the latest release using pip (pip install OMEMO
) or manually from source by running pip install .
in the cloned repository.
python-omemo uses pytest as its testing framework, mypy for static type checks and both pylint and Flake8 for linting. All tests/checks can be run locally with the following commands:
$ pip install --upgrade .[test,lint]
$ mypy omemo/ examples/ tests/
$ pylint omemo/ examples/ tests/
$ flake8 omemo/ examples/ tests/
$ pytest
Refer to the documentation on readthedocs.io, or build it locally. Additional requirements to build the docs can be installed using pip install .[docs]
. With all dependencies installed, run make html
in the docs/
directory. The documentation can then be found in docs/_build/html/
.
The functionality.md
file contains an overview of supported functionality/use cases, mostly targeted at developers.