EteSync - Client python bindings
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

This is a python client library for EteSync

GitHub tag PyPI Chat on freenode

This module provides a python API to interact with an EteSync server. It currently implements AddressBook and Calendar access, and supports two-way sync (both push and pull) to the server. It doesn't currently implement pushing raw journal entries which are needed for people implementing new EteSync journal types which will be implemented soon.

To install, please run:

pip install etesync

The module works and the API is tested (see tests/), however there still may be some oddities, so please report if you encounter any.

There is one Authenticator endpoint, and one endpoint for the rest of the API interactions.

The way it works is that you run "sync", which syncs local cache with server. Afterwards you can either access the journal directly, or if you prefer, you can access a collection, for example a Calendar, and interact with the entries themselves, which are already in sync with the journal.

Check out for a basic usage example, or the tests for a more complete example.

While this is stable enough for usage, it still may be subject to change, so please watch out for the changelog when updating version. Docs are currently missing but are planned.

Running example

You'll need virtualenv to get the dependencies.

Either install your distro's package, for example python3-virtualenv

or get it from pip:

pip3 install virtualenv

You may also need to make sure you have the OpenSSL development package installed (e.g. openssl-dev).

Check out this repository:

git clone
cd pyetesync

Setup the environment:

virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

Run to export your data:

python3 <email> <auth password> <encryption password>

You may need to surround your passwords in quotes and you may need to escape special characters with a \. Please note, that depending on your setup, passing your passwords as command line parameters may not be completely secure, so it would be better if you manually edit the file.

And all of your data will be copied to a local database located at ~/.etesync/data.db.