<p align="center">
<img width="120" src="icon.svg" />
<h1 align="center">EteSync - Secure Data Sync</h1>
</p>
This is a python client library for [EteSync](https://www.etesync.com)
![GitHub tag](https://img.shields.io/github/tag/etesync/pyetesync.svg)
[![PyPI](https://img.shields.io/pypi/v/etesync.svg)](https://pypi.python.org/pypi/etesync/)
[![Build Status](https://travis-ci.com/etesync/pyetesync.svg?branch=master)](https://travis-ci.com/etesync/pyetesync)
[![Chat on freenode](https://img.shields.io/badge/irc.freenode.net-%23EteSync-blue.svg)](https://webchat.freenode.net/?channels=#etesync)
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/](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 [example.py](example.py) 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 the example script
You may also need to make sure you have the OpenSSL development package
installed (e.g. `openssl-dev`).
Check out this repository:
```
git clone git@github.com:etesync/pyetesync.git
cd pyetesync
```
Setup the environment:
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.in/requirements-dev.txt
```
Run `example.py` to export your data:
```
python3 example.py <email> <auth password> <encryption password> https://api.etesync.com
```
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`.
## Running the tests
Some to the tests are unit tests, but some are integration tests who need an actual EteSync service with a few user names set up in order for them to work.
You'd need to run your local server: https://github.com/etesync/server-skeleton/
And then add two users:
- test@localhost
- test2@localhost
Password for both: SomePassword
That's it.
Raw data
{
"_id": null,
"home_page": "https://github.com/etesync/pyetesync",
"name": "etesync",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "etesync,encryption,sync,pim",
"author": "Tom Hacohen",
"author_email": "tom@stosb.com",
"download_url": "https://files.pythonhosted.org/packages/0b/e1/4e096e782818af4a7d5210f3072d1206b4da3a50d18f30b8b6811118a497/etesync-0.12.1.tar.gz",
"platform": "",
"description": "<p align=\"center\">\n <img width=\"120\" src=\"icon.svg\" />\n <h1 align=\"center\">EteSync - Secure Data Sync</h1>\n</p>\n\nThis is a python client library for [EteSync](https://www.etesync.com)\n\n![GitHub tag](https://img.shields.io/github/tag/etesync/pyetesync.svg)\n[![PyPI](https://img.shields.io/pypi/v/etesync.svg)](https://pypi.python.org/pypi/etesync/)\n[![Build Status](https://travis-ci.com/etesync/pyetesync.svg?branch=master)](https://travis-ci.com/etesync/pyetesync)\n[![Chat on freenode](https://img.shields.io/badge/irc.freenode.net-%23EteSync-blue.svg)](https://webchat.freenode.net/?channels=#etesync)\n\nThis module provides a python API to interact with an EteSync server.\nIt currently implements AddressBook and Calendar access, and supports two-way\nsync (both push and pull) to the server.\nIt doesn't currently implement pushing raw journal entries which are needed for\npeople implementing new EteSync journal types which will be implemented soon.\n\nTo install, please run:\n\n```\npip install etesync\n```\n\nThe module works and the API is tested (see [tests/](tests/)), however there still\nmay be some oddities, so please report if you encounter any.\n\nThere is one Authenticator endpoint, and one endpoint for the rest of the API\ninteractions.\n\nThe way it works is that you run \"sync\", which syncs local cache with server.\nAfterwards you can either access the journal directly, or if you prefer,\nyou can access a collection, for example a Calendar, and interact with the\nentries themselves, which are already in sync with the journal.\n\nCheck out [example.py](example.py) for a basic usage example, or the tests\nfor a more complete example.\n\nWhile this is stable enough for usage, it still may be subject to change, so\nplease watch out for the changelog when updating version.\nDocs are currently missing but are planned.\n\n## Running the example script\n\nYou may also need to make sure you have the OpenSSL development package\ninstalled (e.g. `openssl-dev`).\n\nCheck out this repository:\n\n```\ngit clone git@github.com:etesync/pyetesync.git\ncd pyetesync\n```\n\nSetup the environment:\n\n```\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.in/requirements-dev.txt\n```\n\nRun `example.py` to export your data:\n\n```\npython3 example.py <email> <auth password> <encryption password> https://api.etesync.com\n```\n\nYou may need to surround your passwords in quotes and you may need to escape special characters with a `\\`.\nPlease note, that depending on your setup, passing your passwords as command line parameters may not be completely secure,\nso it would be better if you manually edit the file.\n\nAnd all of your data will be copied to a local database located at `~/.etesync/data.db`.\n\n## Running the tests\n\nSome to the tests are unit tests, but some are integration tests who need an actual EteSync service with a few user names set up in order for them to work.\n\nYou'd need to run your local server: https://github.com/etesync/server-skeleton/\n\nAnd then add two users:\n\n - test@localhost\n - test2@localhost\n\nPassword for both: SomePassword\n\nThat's it.",
"bugtrack_url": null,
"license": "LGPL-3.0-only",
"summary": "Python client library for EteSync",
"version": "0.12.1",
"project_urls": {
"Homepage": "https://github.com/etesync/pyetesync"
},
"split_keywords": [
"etesync",
"encryption",
"sync",
"pim"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0be14e096e782818af4a7d5210f3072d1206b4da3a50d18f30b8b6811118a497",
"md5": "a37b5d86e4f5f7369b3518b327ff25aa",
"sha256": "f20f7e9922ee789c4b71379676ebfe656b675913fe524f2ee722e1b9ef4e5197"
},
"downloads": -1,
"filename": "etesync-0.12.1.tar.gz",
"has_sig": false,
"md5_digest": "a37b5d86e4f5f7369b3518b327ff25aa",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20414,
"upload_time": "2020-08-13T06:16:04",
"upload_time_iso_8601": "2020-08-13T06:16:04.611821Z",
"url": "https://files.pythonhosted.org/packages/0b/e1/4e096e782818af4a7d5210f3072d1206b4da3a50d18f30b8b6811118a497/etesync-0.12.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2020-08-13 06:16:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "etesync",
"github_project": "pyetesync",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "etesync"
}