{ "info": { "author": "Trevor Murphy", "author_email": "trevor.m.murphy@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "=========================\nSync Org files with Asana\n=========================\n\n :Author: Trevor Murphy\n :Contact: trevor.m.murphy@gmail.com\n\n.. contents::\n\nThis command line tool updates your Org mode agenda files to match your personal Asana workspace:\n\n.. code:: sh\n :name: Update Org to match Asana\n\n $ todo-sync org /path/to/init/file.el asana $ASANA_PERSONAL_ACCESS_TOKEN\n\nor updates your Asana workspace to match your Org agenda files:\n\n.. code:: sh\n :name: Update Asana to match Org\n\n $ todo-sync asana $ASANA_PERSONAL_ACCESS_TOKEN org /path/to/init/file.el\n\nUse the ``-n`` flag for a dry run.\n\nRequirements\n------------\n\nPython 3.6\n Earlier versions of Python 3 are probably fine, I just haven\u2019t tested them yet. Python 3.7 is not currently supported due to a bug in the official Asana bindings library.\n\n - asana\n\n - pexpect >= 4.3\n\nEmacs 25.1 or higher\n Probably not a hard requirement, I just haven\u2019t tested with any earlier versions.\n\nOrg Mode 8.2.4 or higher\n Most modern Emacs distributions include Org Mode 9 or higher.\n\nA personal Asana account\n This tool may work with other types of accounts, I just haven\u2019t tested it yet.\n\nInstall\n-------\n\nInstall Python Tools\n~~~~~~~~~~~~~~~~~~~~\n\nJust use `pip `_!\n\n.. code:: sh\n\n $ pip install todo-sync\n\nInstall Emacs Tools\n~~~~~~~~~~~~~~~~~~~\n\nEmacs\n^^^^^\n\nConsult the official `installation instructions `_ from the GNU Project.\n\nOrg\n^^^\n\nYour Emacs distribution likely includes a high enough version of Org. You can check from within Emacs with ``M-x org-version RET``. If you need a more recent version, consult the official `installation instructions `_ from the Org project.\n\nTodo-Sync\u2019s Library\n^^^^^^^^^^^^^^^^^^^\n\nInstall ``ts-org-interaction.el`` from this repo to your personal site lisp.\n\n.. code:: sh\n\n $ cd /path/to/your/site/lisp\n $ curl -O https://raw.githubusercontent.com/tmurph/todo-sync/master/emacs/ts-org-interaction.el\n\n(Optional) Create a Minimal Init File\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf you don\u2019t do this, you\u2019ll have to point the tool at your main init file, which **just might** invoke complicated code that could hang the tool\u2019s Emacs subprocess in difficult-to-debug ways.\n\nHere\u2019s a template that should get you going:\n\n.. code:: common-lisp\n\n ;;; make Org mode available to Emacs\n (push \"/path/to/org\" load-path)\n\n ;;; make the downloaded ts-org-interaction library available\n (push \"/path/to/your/site/lisp\" load-path)\n\n ;;; set Org agenda file variables\n (defvar org-directory \"/path/for/relative/filename/expansion\")\n (defvar org-agenda-files '(\"relative/path/to/first/file\"\n \"relative/path/to/second/file\"\n \"/absolute/path/to/third/file\"\n \"etc\"))\n\nGet your Asana Token\n~~~~~~~~~~~~~~~~~~~~\n\nFollow `this link `_ to your Account Settings dialog or click your picture in the Asana application and navigate to the \u201cMy Profile Settings\u201d link, where you can find the \u201cApps\u201d tab. At the bottom of this tab there is a \u201cManage Developer Apps\u201d link.\n\nFollow the steps to \u201cCreate New Personal Access Token\u201d and save it someplace secure where the command line tool can find it.\n\nLicense\n-------\n\nDistributed under the terms of the `GPLv3 `_ license.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tmurph/todo-sync", "keywords": "", "license": "GPL3", "maintainer": "", "maintainer_email": "", "name": "todo-sync", "package_url": "https://pypi.org/project/todo-sync/", "platform": "", "project_url": "https://pypi.org/project/todo-sync/", "project_urls": { "Homepage": "https://github.com/tmurph/todo-sync" }, "release_url": "https://pypi.org/project/todo-sync/0.3.1/", "requires_dist": [ "asana", "pexpect (>=4.3)" ], "requires_python": ">=3, <3.7", "summary": "Synchronize todo lists, supports Emacs Org Mode and Asana.", "version": "0.3.1" }, "last_serial": 4306120, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "a267fb88ceefe57a154914f2640206ad", "sha256": "b807a60afafb7a4bebabebe11d8a272f90c9b5c7d24961fc0ee80f6f8f417788" }, "downloads": -1, "filename": "todo_sync-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a267fb88ceefe57a154914f2640206ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29338, "upload_time": "2017-02-14T00:36:13", "url": "https://files.pythonhosted.org/packages/de/b1/b83eadcb0104c44849a199b5959090425a69b13a5d4f5f678601f66e0fb4/todo_sync-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63f4f51ec7b3a9a61f5d16de09ee8335", "sha256": "36c070cf2f6e925c600f7d32013e6037ca6e1edb21fc48730f672254ca052870" }, "downloads": -1, "filename": "todo_sync-0.2.tar.gz", "has_sig": false, "md5_digest": "63f4f51ec7b3a9a61f5d16de09ee8335", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26714, "upload_time": "2017-02-14T00:36:15", "url": "https://files.pythonhosted.org/packages/c3/08/25fc63d7bb1458eff82b2f8f83a7aca3b5034a214ecf4e7a2e200a0c241d/todo_sync-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ca6aa4a49d31b22a5bfdb618984749f2", "sha256": "8d7cb5bc334f03095791e71031f2ec7e345e9440ef0c2d0a5cf37accc2f4b1fe" }, "downloads": -1, "filename": "todo_sync-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ca6aa4a49d31b22a5bfdb618984749f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29342, "upload_time": "2017-02-16T17:28:37", "url": "https://files.pythonhosted.org/packages/17/68/ece89e80bbf30692cf1b8c84c9f98c41ca5607c60beab53aad326f92314c/todo_sync-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8917fc8a60783f960544d13553714e3", "sha256": "00640db4f0b36dec6fb5e55ecaa9e63e33b1a8512e71ba6d5561d439ceb2426f" }, "downloads": -1, "filename": "todo_sync-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c8917fc8a60783f960544d13553714e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26705, "upload_time": "2017-02-16T17:28:39", "url": "https://files.pythonhosted.org/packages/7b/d9/55b3903e54ea99b68c412eaa229ccf3d44d677f0147d77eb549f8ddbe52e/todo_sync-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "f010349fbbb223e2359f5084fbdae849", "sha256": "037569e5acc62a4b8b15ef964eacb5fda72e86498121b0c2e95251a50c46e69f" }, "downloads": -1, "filename": "todo_sync-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f010349fbbb223e2359f5084fbdae849", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18505, "upload_time": "2017-02-16T18:05:00", "url": "https://files.pythonhosted.org/packages/0c/65/1d07d6363889a808ad6cf6d04be3186b49445d19ff5b93c64931482e1acb/todo_sync-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "353c5ed3d49d519a53b08cec6e47b8ab", "sha256": "f0a5907712ee9b54418fd057dcc0a8dbc7ec12611b0f21cdfd396e5322c30038" }, "downloads": -1, "filename": "todo_sync-0.2.2.tar.gz", "has_sig": false, "md5_digest": "353c5ed3d49d519a53b08cec6e47b8ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26840, "upload_time": "2017-02-16T18:05:02", "url": "https://files.pythonhosted.org/packages/e7/4e/ef13fa4c1a5c2684117a4c832e05edd4a5583c1df61bcb0f8dfef436e4a0/todo_sync-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "7ded567eb3ff89bbb84c0dfd2f690928", "sha256": "323f72b66d2d492054a676c6aaf99ef35f535bf00bf2dab5eebd143e210332c1" }, "downloads": -1, "filename": "todo_sync-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "7ded567eb3ff89bbb84c0dfd2f690928", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18666, "upload_time": "2017-08-14T19:48:56", "url": "https://files.pythonhosted.org/packages/47/ec/c6caaf747d05467f019483433fb133050a49e2d77233cf08fdfb7b9be884/todo_sync-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82717264119aa6bcba2123ca4bcba0f0", "sha256": "c34995159e418b517647567cc7c21486a01015ed6a94215ce5902c99c57997c1" }, "downloads": -1, "filename": "todo_sync-0.2.3.tar.gz", "has_sig": false, "md5_digest": "82717264119aa6bcba2123ca4bcba0f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27080, "upload_time": "2017-08-14T19:48:59", "url": "https://files.pythonhosted.org/packages/23/04/9712b7f079f0f96b81f27d6d293c5eb5ebac4ce35cd307a96cd88941b963/todo_sync-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "755011dc36495a6eb26e96a695d950f6", "sha256": "2eb9a7c4e0da6bca79472835b59a8bb7625262f9c082711102288857977db059" }, "downloads": -1, "filename": "todo_sync-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "755011dc36495a6eb26e96a695d950f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19300, "upload_time": "2017-08-21T22:25:50", "url": "https://files.pythonhosted.org/packages/95/3c/05d791c7801e25bcbca0366349b5fd0144cf39950de03d841bef05194f2f/todo_sync-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb799d51b70b7548fa0241f47dfdaa8c", "sha256": "939ec39be0092a37f109c4c7ee63bb73756ca9ed70abb6757ad9d959336cc77b" }, "downloads": -1, "filename": "todo_sync-0.2.4.tar.gz", "has_sig": false, "md5_digest": "fb799d51b70b7548fa0241f47dfdaa8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28484, "upload_time": "2017-08-21T22:25:52", "url": "https://files.pythonhosted.org/packages/9c/1a/dbc2db65135dd37d4192f7ae3a99ee65d20ffc342244851adf99a56d42d3/todo_sync-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f2b659d7d9babe45ef9482e412d9062f", "sha256": "de1947f7b23a727fb5001fab7ca1406389afb4de13191e8bad6c0ce50d3d36ea" }, "downloads": -1, "filename": "todo_sync-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f2b659d7d9babe45ef9482e412d9062f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19472, "upload_time": "2017-11-06T20:10:41", "url": "https://files.pythonhosted.org/packages/b4/fd/e5056f5df4b6f8630d129dc12ed1d93e55595d86144ce911715a9026d323/todo_sync-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b01951257c9d34175087617f186c270d", "sha256": "ec8093fba4e413d63d486f153bf24062f8a65b0445afd4ed4aea653e322d72f5" }, "downloads": -1, "filename": "todo_sync-0.3.0.tar.gz", "has_sig": false, "md5_digest": "b01951257c9d34175087617f186c270d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28716, "upload_time": "2017-11-06T20:10:43", "url": "https://files.pythonhosted.org/packages/a0/37/fcf5b4a2abb5850883072999d35418b89f2c4014aa76a9318c5bade9589f/todo_sync-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "81ad949cc1d09c35d67529cc9d30e845", "sha256": "1885c2665bfb8711abea36792094f716c5795506c30a30a2129a9e84bb2c8030" }, "downloads": -1, "filename": "todo_sync-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "81ad949cc1d09c35d67529cc9d30e845", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3, <3.7", "size": 16951, "upload_time": "2018-09-24T20:40:02", "url": "https://files.pythonhosted.org/packages/96/d4/2e5bed7595c7c40b99255df310a4fb76e918d5a65eb5ff351106aa11d69e/todo_sync-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65421289616d0ba1219acceadff4f595", "sha256": "6da0da10fb06784af6df3ebf722162c84c864acbc37ba8f453cf638fabc87eba" }, "downloads": -1, "filename": "todo_sync-0.3.1.tar.gz", "has_sig": false, "md5_digest": "65421289616d0ba1219acceadff4f595", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3, <3.7", "size": 29073, "upload_time": "2018-09-24T20:40:05", "url": "https://files.pythonhosted.org/packages/4b/d5/689172c781bfe98d909f307d8e8948ab406873cfa1669cb2aad491557c99/todo_sync-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "81ad949cc1d09c35d67529cc9d30e845", "sha256": "1885c2665bfb8711abea36792094f716c5795506c30a30a2129a9e84bb2c8030" }, "downloads": -1, "filename": "todo_sync-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "81ad949cc1d09c35d67529cc9d30e845", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3, <3.7", "size": 16951, "upload_time": "2018-09-24T20:40:02", "url": "https://files.pythonhosted.org/packages/96/d4/2e5bed7595c7c40b99255df310a4fb76e918d5a65eb5ff351106aa11d69e/todo_sync-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65421289616d0ba1219acceadff4f595", "sha256": "6da0da10fb06784af6df3ebf722162c84c864acbc37ba8f453cf638fabc87eba" }, "downloads": -1, "filename": "todo_sync-0.3.1.tar.gz", "has_sig": false, "md5_digest": "65421289616d0ba1219acceadff4f595", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3, <3.7", "size": 29073, "upload_time": "2018-09-24T20:40:05", "url": "https://files.pythonhosted.org/packages/4b/d5/689172c781bfe98d909f307d8e8948ab406873cfa1669cb2aad491557c99/todo_sync-0.3.1.tar.gz" } ] }