{ "info": { "author": "Carlos Eduardo Moreira dos Santos", "author_email": "cems@cemshost.com.br", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Financial and Insurance Industry", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Office/Business :: Financial :: Accounting" ], "description": "TagCash - Finances with tags in CLI\n===================================\n\n|semaphore| |coveralls|\n\nMissing a practical and easy-to-learn solution to keep track of your finances? Use tagcash to do it with simple text files!\n\nTagCash is a little hack that I'm currently using after trying several solutions like GnuCash and Financisto. These are some of the features that I was missing and that are found in TagCash:\n\n- As simple as editing text files;\n- Text files are easy to sync between devices and people;\n- Simple CLI;\n- Quickly copy and paste statements from CLI to e-mail;\n- Simple and short Python source code.\n\n\nQuick Start\n-----------\n\nLet's choose 2 tags: ``wallet``, and ``bank`` for your checking account. Now, write the following in a file (e.g.: ``finances.txt``)::\n\n 2018-01-13 100 Starting balance bank\n 2018-01-14 40 Withdrawal wallet,-bank\n\nAs there's no starting balance for ``wallet``, it will be $0.00. In the second line, there is a ``-`` (minus) sign next to the ``bank`` tag to make it ``-40`` in the ``bank`` ledger. Now, let's see what *tagcash* does without any option::\n\n ~$ tagcash finances.txt\n \u250cbank\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Date \u2502 Amount \u2502 Balance \u2502 Description \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 2018-01-13 \u2502 100.00 \u2502 100.00 \u2502 Starting balance \u2502\n \u2502 2018-01-14 \u2502 -40.00 \u2502 60.00 \u2502 Withdrawal \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u250cwallet\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Date \u2502 Amount \u2502 Balance \u2502 Description \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 2018-01-14 \u2502 40.00 \u2502 40.00 \u2502 Withdrawal \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\nTips\n----\n\n- The parser is flexible. Just don't use space in tags and separate them by comma;\n- Align as you wish. Use 1 or more spaces between fields (date, amount, ...);\n- You can use as many files as you want;\n- There's no need to keep the lines sorted by date. Thus, you can keep together all the monthly installments of a payment;\n- To choose tags, use for example ``--tags wallet`` (``-t`` for short).\n\n\nHow to Install\n--------------\nTested with Python >= 3.5: ``pip3 install tagcash``.\n\n\nAdvanced Usage\n--------------\n\nTo know how much money you have in total, including all specified tags, add the ``--all`` option::\n\n $ tagcash --all finances.txt\n (...)\n \u250cAll Tags\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Date \u2502 Amount \u2502 Balance \u2502 Description \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 2018-01-13 \u2502 100.00 \u2502 100.00 \u2502 Starting balance \u2502\n \u2502 2018-01-14 \u2502 -40.00 \u2502 60.00 \u2502 Withdrawal \u2502\n \u2502 2018-01-14 \u2502 40.00 \u2502 100.00 \u2502 Withdrawal \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nAs expected, because you withdrew money to your own wallet, the last table shows that you have $100 in total. To keep this overall balance consistent, adopt the simple rule: use negative numbers (or tags) whenever you spend money, and positive when you earn it.\n\n\n.. |semaphore| image:: https://semaphoreci.com/api/v1/cemsbr/tagcash/branches/master/shields_badge.svg\n :target: https://semaphoreci.com/cemsbr/tagcash\n.. |coveralls| image:: https://coveralls.io/repos/github/cemsbr/tagcash/badge.svg?branch=master\n :target: https://coveralls.io/github/cemsbr/tagcash?branch=master\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cemsbr/tagcash", "keywords": "accounting finance finances cli terminal", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tagcash", "package_url": "https://pypi.org/project/tagcash/", "platform": "", "project_url": "https://pypi.org/project/tagcash/", "project_urls": { "Homepage": "https://github.com/cemsbr/tagcash" }, "release_url": "https://pypi.org/project/tagcash/1.0.0b2/", "requires_dist": null, "requires_python": "", "summary": "Finances with tags in CLI", "version": "1.0.0b2" }, "last_serial": 3492071, "releases": { "1.0.0b0": [ { "comment_text": "", "digests": { "md5": "4de972e7ec65bf53b8fe154c5884a3b6", "sha256": "a4597e08856c43dabe74df4a1afaf05fb925fc03808fcf7b1f8a11404a9cd730" }, "downloads": -1, "filename": "tagcash-1.0.0b0-py3-none-any.whl", "has_sig": true, "md5_digest": "4de972e7ec65bf53b8fe154c5884a3b6", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7014, "upload_time": "2018-01-14T23:59:24", "url": "https://files.pythonhosted.org/packages/88/56/f4c204ee3bafd8d885dd7f6f42c4b08e4e8c4b8687d7e52699496e6efe26/tagcash-1.0.0b0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df159e309e2a586e1fa163a7d6f459b8", "sha256": "5c1c12636e595e167a6a0ab9bfe921de7b28aa5161044e08486bc2dc6955dabf" }, "downloads": -1, "filename": "tagcash-1.0.0b0.tar.gz", "has_sig": true, "md5_digest": "df159e309e2a586e1fa163a7d6f459b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4486, "upload_time": "2018-01-14T23:59:22", "url": "https://files.pythonhosted.org/packages/85/e8/400edc2b98391b13b76dbde071a3c527bc51e8dbca11f3530c65817cfbc9/tagcash-1.0.0b0.tar.gz" } ], "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "a62bacf22b827bb190c8a7cb7038de97", "sha256": "7f3b4265a837df77a46cfb8bb458f11f9a636f4e1369589c15422d6ef174b676" }, "downloads": -1, "filename": "tagcash-1.0.0b1-py3-none-any.whl", "has_sig": true, "md5_digest": "a62bacf22b827bb190c8a7cb7038de97", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7614, "upload_time": "2018-01-15T02:34:57", "url": "https://files.pythonhosted.org/packages/e8/32/d67e471afef716ef58964c9e4867aa7e2822e1081a1d310d22a7dca2f59b/tagcash-1.0.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41282f37986f08f3bf7ece37a16494c4", "sha256": "79cb6bbbe5b912886fc59cd73bc4089484c35b57ab872a0a89e6cb516bff6ca5" }, "downloads": -1, "filename": "tagcash-1.0.0b1.tar.gz", "has_sig": true, "md5_digest": "41282f37986f08f3bf7ece37a16494c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4846, "upload_time": "2018-01-15T02:34:52", "url": "https://files.pythonhosted.org/packages/46/26/caf68a1907339a018955a5a35506b0c8bfeb33fa176078d5acfb78f2798a/tagcash-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "b784fbc9621c4a795176b9fd9b65f8ff", "sha256": "de40af5cde70df4c8686e1c91ab1745d37c0be75490f9ac95f5739c731cb71f5" }, "downloads": -1, "filename": "tagcash-1.0.0b2-py3-none-any.whl", "has_sig": true, "md5_digest": "b784fbc9621c4a795176b9fd9b65f8ff", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7672, "upload_time": "2018-01-15T21:01:59", "url": "https://files.pythonhosted.org/packages/9d/91/ca360f6b9ea14e6ad1851cb8a9bd548919e59a697f2d2ffef4b5c95701f9/tagcash-1.0.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78a5bcc1fc10cfa5248915e5a8adeaee", "sha256": "3ea8dff57cd526baf270677c0de729ee5abb06c1e52cb2d7ac98237dc255e2fc" }, "downloads": -1, "filename": "tagcash-1.0.0b2.tar.gz", "has_sig": true, "md5_digest": "78a5bcc1fc10cfa5248915e5a8adeaee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4888, "upload_time": "2018-01-15T21:01:55", "url": "https://files.pythonhosted.org/packages/bf/0c/d9a99ea1cc33ae80cc54c697ee472d5353add2d066615b90ec584a882198/tagcash-1.0.0b2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b784fbc9621c4a795176b9fd9b65f8ff", "sha256": "de40af5cde70df4c8686e1c91ab1745d37c0be75490f9ac95f5739c731cb71f5" }, "downloads": -1, "filename": "tagcash-1.0.0b2-py3-none-any.whl", "has_sig": true, "md5_digest": "b784fbc9621c4a795176b9fd9b65f8ff", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7672, "upload_time": "2018-01-15T21:01:59", "url": "https://files.pythonhosted.org/packages/9d/91/ca360f6b9ea14e6ad1851cb8a9bd548919e59a697f2d2ffef4b5c95701f9/tagcash-1.0.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78a5bcc1fc10cfa5248915e5a8adeaee", "sha256": "3ea8dff57cd526baf270677c0de729ee5abb06c1e52cb2d7ac98237dc255e2fc" }, "downloads": -1, "filename": "tagcash-1.0.0b2.tar.gz", "has_sig": true, "md5_digest": "78a5bcc1fc10cfa5248915e5a8adeaee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4888, "upload_time": "2018-01-15T21:01:55", "url": "https://files.pythonhosted.org/packages/bf/0c/d9a99ea1cc33ae80cc54c697ee472d5353add2d066615b90ec584a882198/tagcash-1.0.0b2.tar.gz" } ] }