{
"info": {
"author": "Aliaksandr Buhayeu",
"author_email": "aliaksandr.buhayeu@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Topic :: Software Development :: Libraries",
"Topic :: Utilities"
],
"description": "================================================================\nanydo_api unofficial AnyDo API client for Python (v0.0.2 aplha)\n================================================================\n\n.. image:: https://img.shields.io/travis/aliaksandrb/anydo_api.svg\n :target: https://travis-ci.org/aliaksandrb/anydo_api\n\n.. image:: https://img.shields.io/pypi/v/anydo_api.svg\n :target: https://pypi.python.org/pypi/anydo_api\n\n.. image:: https://readthedocs.org/projects/anydo-api/badge/?version=latest\n :target: http://anydo-api.readthedocs.org/en/latest/\n\nThis simple client library provides access to basic features of `AnyDo `_ task manager in a\neasy and object-oriented style.\n\nIt could be used for own projects integration's or as a tool for migration from one task manager to another.\n\nSupported Features\n------------------\n* User CRUD operations\n* Personal tasks CRUD and sharing\n* Personal lists(categories) CRUD\n\nRequirements\n------------\n* Automatically testing for `Python 2.7` and `Python 3.4`.\n* Uses `requests>=2.8.0` for remote API calls.\n\nInstall\n--------\n::\n\n$ pip install anydo_api\n\nor directly from the repository:\n::\n\n$ git clone https://github.com/aliaksandrb/anydo_api\n$ cd anydo_api\n$ python setup.py install\n\nUsage & examples:\n-------------------\nCurrently not all functionality from the original `Chrome/Android/..` clients are supported.\nSome of them just have no sense for console client, some just not ready yet :)\n\nHere is what we have for now:\n\nUser management:\n^^^^^^^^^^^^^^^^^\n>>> from anydo_api.client import Client\n\n**Create totally new user:**\n\n>>> user = Client.create_user(name='Garlic', email='name@garlic.com', password='password')\n\n**Access to its attributes both ways:**\n\n>>> user['name'] # > 'Garlic'\n>>> user.email # > 'name@garlic.com'\n\n**Change the name:**\n\n>>> user['name'] = 'Tomato'\n>>> user.save() # changes are pushed to server\n>>> user['name'] # > 'Tomato'\n\n**Login with existent account:**\n\n>>> user = Client(email='name@garlic.com', password='password').get_user()\n>>> user['name'] # > 'Tomato'\n\n**Get the possible updates from the server (in case if user was already instantiated but changed by other client/app)**\n\n>>> user.refresh()\n\n**Delete your account completely. Warning! Can't be undone:**\n\n>>> user.destroy()\n...\n\nTasks management:\n^^^^^^^^^^^^^^^^^\n>>> from anydo_api.client import Client\n>>> from anydo_api.task import Task\n\n>>> user = Client(email='name@garlic.com', password='password').get_user()\n\n**List tasks:**\n\n>>> user.tasks() # > []\n\n**Create a new task:**\n\n>>> task = Task.create(\n user=user,\n title='Clean garden',\n priority='High',\n category='Personal',\n repeatingMethod='TASK_REPEAT_OFF')\n\n>>> task['assignedTo'] # > 'name@garlic.com'\n>>> task.status # > 'UNCHECKED'\n\n**Add note for task:**\n\n>>> task.add_note('first task')\n>>> task.notes() # > ['first task']\n\n**Add a subtasks:**\n\n>>> subtask = Task.create(user=user, title='Find a water', priority='Normal')\n>>> task.add_subtask(subtask)\n>>> subtask.parent()['title'] # > 'Clean garden'\n>>> task.subtasks()[0]['title'] # > 'Find a water'\n\n**Check the task:**\n\n>>> subtask['status'] # > 'UNCHECKED'\n>>> subtask.check()\n>>> subtask['status'] # > 'CHECKED'\n\n**Delete the task:**\n\n>>> subtask.destroy()\n>>> len(user.tasks()) # > 2\n>>> len(user.tasks(refresh=True)) # > 1\n...\n\nLists(categories) management:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n>>> from anydo_api.client import Client\n>>> from anydo_api.category import Category\n>>> from anydo_api.task import Task\n\n>>> user = Client(email='name@garlic.com', password='password').get_user()\n\n**List categories:**\n\n>>> list(map(lambda category: category['name'], user.categories())) # > ['GROCERY LIST', 'PERSONAL ERRANDS']\n\n**Create a new category:**\n\n>>> category = Category.create(user=user, name='Home')\n>>> list(map(lambda category: category['name'], user.categories(refresh=True)))\n# > ['GROCERY LIST', 'PERSONAL ERRANDS', 'Home']\n\n**List category tasks:**\n\n>>> category.tasks() # > []\n>>> task = Task.create(user=user, title='In new category', priority='Normal')\n>>> category.add_task(task)\n>>> category.tasks()[0]['title'] # > 'In new category'\n\n**Make category default one, for new tasks:**\n\n>>> category.default # > False\n>>> category.mark_default()\n>>> category.default # > True\n\n**Delete the category:**\n\n>>> category.destroy()\n>>> list(map(lambda category: category['name'], user.categories(refresh=True)))\n# > ['GROCERY LIST', 'PERSONAL ERRANDS']\n...\n\n& More complex example, task sharing:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAssume we have two users: `Paca` and `Vaca`.\nUser `Paca` has a one task it wants to share with `Vaca`.\n\n>>> task = paca.tasks()[0]\n>>> task['title'] # > 'Paca Task'\n>>> task.members() # > [{'paca@garlic.com': 'Paca'}]\n\n**Share task with user:**\n\n>>> task.share_with(vaca)\n\n**Until task isn't approved it isn't shared:**\n\n>>> vaca.tasks() # > []\n>>> vaca.pending_tasks()\n# > [{'id': 'm8cEmJJFXgYWrr3Xplj9zw==', 'invitedBy': {'name': 'Paca', 'email': 'paca@garlic.com', 'picture': None}, 'message': None, 'title': 'Paca Task'}]\n\n**Approve the pending task:**\n\n>>> vaca.approve_pending_task(pending_task=vaca.pending_tasks()[0])\n\n**And now it is shared:**\n\n>>> vaca.tasks()[0]['title'] # > 'Paca Task'\n\n>>> task.members()\n[{'paca@garlic.com': 'Paca'}, {'vaca@garlic.com': 'vaca@garlic.com'}]\n...\n\nFor other methods and full support API check the docs or source code..\n\nContributions\n-------------\n\nFeedback, issue reports and feature/pull requests are greatly appreciated!\nYou could post them `into issues `_.\n\nGeneric guide for contributions is placed `here `_.\n\nThanks!\n\n* MIT license\n* Automaticaly generated documentation: http://anydo-api.readthedocs.org/en/latest/.\n\n\n\n\nHistory\n-------\n\n0.0.2 (2017-04-25)\n---------------------\n\n* Fix issue with an uuid generation on Py3.\n\n0.0.1 (2015-10-12)\n---------------------\n\n* First release on PyPI.",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/aliaksandrb/anydo_api",
"keywords": "anydo,anydo_api,anydo_client",
"license": "MIT",
"maintainer": null,
"maintainer_email": null,
"name": "anydo_api",
"package_url": "https://pypi.org/project/anydo_api/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/anydo_api/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/aliaksandrb/anydo_api"
},
"release_url": "https://pypi.org/project/anydo_api/0.0.2/",
"requires_dist": null,
"requires_python": null,
"summary": "Unofficial AnyDo API client in object-oriented style.",
"version": "0.0.2"
},
"last_serial": 2828989,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "7408025f46bc0969186c75b6b0e30fcf",
"sha256": "512a8f356bac6105ed0d146c9441db4919b16a4ef6927c200de9d780b5d15b74"
},
"downloads": -1,
"filename": "anydo_api-0.0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7408025f46bc0969186c75b6b0e30fcf",
"packagetype": "bdist_wheel",
"python_version": "3.4",
"requires_python": null,
"size": 17255,
"upload_time": "2015-10-30T19:27:05",
"url": "https://files.pythonhosted.org/packages/86/ed/f7d3694eca6a00c779e6afb884fa83987e512c4b977e51410ae69f3a9e6a/anydo_api-0.0.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "950e66b9709247a8fc5a9c8f4c241331",
"sha256": "2aa307a312147d93f1165e312326e5282019de2439045cf15bfbea02b42c8239"
},
"downloads": -1,
"filename": "anydo_api-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "950e66b9709247a8fc5a9c8f4c241331",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 55022,
"upload_time": "2015-10-30T19:26:51",
"url": "https://files.pythonhosted.org/packages/74/31/d292d9b5c55e6003cb7dbea27d6a0c39cb8b4a5d673d5e5f8adfa1619363/anydo_api-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "ed1f81a7d1f7ac65edda158309c602ab",
"sha256": "dee8a71c1f90ca71023084a757948bb142135209d6ba2c703b10e903a01db001"
},
"downloads": -1,
"filename": "anydo_api-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "ed1f81a7d1f7ac65edda158309c602ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54876,
"upload_time": "2017-04-25T14:23:48",
"url": "https://files.pythonhosted.org/packages/0f/53/59d1f5721d53ec4c76d0dee4e0ab4da1a84bf9f42c75c297da8dbf03cfbc/anydo_api-0.0.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "ed1f81a7d1f7ac65edda158309c602ab",
"sha256": "dee8a71c1f90ca71023084a757948bb142135209d6ba2c703b10e903a01db001"
},
"downloads": -1,
"filename": "anydo_api-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "ed1f81a7d1f7ac65edda158309c602ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54876,
"upload_time": "2017-04-25T14:23:48",
"url": "https://files.pythonhosted.org/packages/0f/53/59d1f5721d53ec4c76d0dee4e0ab4da1a84bf9f42c75c297da8dbf03cfbc/anydo_api-0.0.2.tar.gz"
}
]
}