Metadata-Version: 2.4
Name: Oldmemo
Version: 2.1.0
Summary: Backend implementation of the namespace `eu.siacs.conversations.axolotl` for python-omemo.
Author-email: "Tim Henkes (Syndace)" <me@syndace.dev>
Maintainer-email: "Tim Henkes (Syndace)" <me@syndace.dev>
License-Expression: AGPL-3.0-only
Project-URL: Documentation, https://python-oldmemo.readthedocs.io/
Project-URL: Repository, https://github.com/Syndace/python-oldmemo
Project-URL: Issues, https://github.com/Syndace/python-oldmemo/issues
Project-URL: Changelog, https://github.com/Syndace/python-oldmemo/blob/main/CHANGELOG.md
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Intended Audience :: Developers
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: OMEMO<3,>=2.0.0
Requires-Dist: DoubleRatchet<2,>=1.2.0
Requires-Dist: X3DH<2,>=1.2.0
Requires-Dist: XEdDSA<2,>=1.0.0
Requires-Dist: cryptography>=3.3.2
Requires-Dist: protobuf>=3.20.3
Requires-Dist: typing-extensions>=4.3.0
Provides-Extra: xml
Requires-Dist: xmlschema>=2.0.2; extra == "xml"
Provides-Extra: docs
Requires-Dist: oldmemo[xml]; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"
Provides-Extra: lint
Requires-Dist: flake8; extra == "lint"
Requires-Dist: flake8-pyproject; extra == "lint"
Requires-Dist: mypy; extra == "lint"
Requires-Dist: oldmemo[xml]; extra == "lint"
Requires-Dist: pylint; extra == "lint"
Requires-Dist: types-protobuf; extra == "lint"
Provides-Extra: dev
Requires-Dist: mypy-protobuf; extra == "dev"
Requires-Dist: oldmemo[docs,lint,xml]; extra == "dev"
Dynamic: license-file

[![PyPI](https://img.shields.io/pypi/v/Oldmemo.svg)](https://pypi.org/project/Oldmemo/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/Oldmemo.svg)](https://pypi.org/project/Oldmemo/)
[![Build Status](https://github.com/Syndace/python-oldmemo/actions/workflows/test-and-publish.yml/badge.svg)](https://github.com/Syndace/python-oldmemo/actions/workflows/test-and-publish.yml)
[![Documentation Status](https://readthedocs.org/projects/python-oldmemo/badge/?version=latest)](https://python-oldmemo.readthedocs.io/)

# python-oldmemo #

Backend implementation for [python-omemo](https://github.com/Syndace/python-omemo), equipping python-omemo with support for OMEMO under the namespace `eu.siacs.conversations.axolotl` (casually/jokingly referred to as "oldmemo").

This repository is based on [python-twomemo](https://github.com/Syndace/python-twomemo) and will be rebased on top of new commits to that repository regularly, so expect commit hashes to be unstable. For the same reason, release tags might not be available or point to non-existing commit hashes.

## Installation ##

Install the latest release using pip (`pip install oldmemo`) or manually from source by running `pip install .` in the cloned repository.

## Protobuf ##

Install `protoc`. Then, in the root directory of this repository, run:

```sh
$ pip install --upgrade .[dev]
$ protoc --python_out=oldmemo/ --mypy_out=oldmemo/ oldmemo.proto
```

This will generate `oldmemo/oldmemo_pb2.py` and `oldmemo/oldmemo_pb2.pyi`.

## Type Checks and Linting ##

python-oldmemo uses [mypy](http://mypy-lang.org/) for static type checks and both [pylint](https://pylint.pycqa.org/en/latest/) and [Flake8](https://flake8.pycqa.org/en/latest/) for linting. All checks can be run locally with the following commands:

```sh
$ pip install --upgrade .[lint]
$ mypy oldmemo/
$ pylint oldmemo/
$ flake8 oldmemo/
```

## Getting Started ##

Refer to the documentation on [readthedocs.io](https://python-oldmemo.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/`.
