{ "info": { "author": "HotOffThe Hamster", "author_email": "hotoffthehamster+nark@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "####\nnark\n####\n\n.. image:: https://travis-ci.com/hotoffthehamster/nark.svg?branch=develop\n :target: https://travis-ci.com/hotoffthehamster/nark\n :alt: Build Status\n\n.. image:: https://codecov.io/gh/hotoffthehamster/nark/branch/develop/graph/badge.svg\n :target: https://codecov.io/gh/hotoffthehamster/nark\n :alt: Coverage Status\n\n.. image:: https://readthedocs.org/projects/nark/badge/?version=latest\n :target: https://nark.readthedocs.io/en/latest/\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/github/release/hotoffthehamster/nark.svg?style=flat\n :target: https://github.com/hotoffthehamster/nark/releases\n :alt: GitHub Release Status\n\n.. image:: https://img.shields.io/pypi/v/nark.svg\n :target: https://pypi.org/project/nark/\n :alt: PyPI Release Status\n\n.. image:: https://img.shields.io/github/license/hotoffthehamster/nark.svg?style=flat\n :target: https://github.com/hotoffthehamster/nark/blob/develop/LICENSE\n :alt: License Status\n\n.. |dob| replace:: ``dob``\n.. _dob: https://github.com/hotoffthehamster/dob\n\n.. |nark| replace:: ``nark``\n.. _nark: https://github.com/hotoffthehamster/nark\n\n.. |hamster-lib| replace:: ``hamster-lib``\n.. _hamster-lib: https://github.com/projecthamster/hamster-lib\n\n.. |pip| replace:: ``pip``\n.. _pip: https://pip.pypa.io/en/stable/\n\nSome might call it timesheet software, or dismiss it as simply time tracking,\nbut I call it extreme-journaling, a back end framework for thrill-seeking, time\ntravelling interval junkies, a/k/a *dobbers*.\n\n**NOTE:** You probably want to install the *client application*,\n`dob `__!\n-- Nark is a *support library*.\n\nInstall with |pip|_::\n\n pip install nark\n\nFor other setup options, read the\n`installation guide `__.\n\n=====\nEthos\n=====\n\n|nark|_ is inspired by\n`Hamster `__,\na beloved but aged time tracking application for\n`GNOME `__.\n\n|nark|_ is\n`Hamster `__-compatible.\nGrab your existing Hamster database and start using |nark|_ today!\n\n|nark|_ is a fork of the sensible but incomplete\nmodern |hamster-lib|_ code rewrite. Now it's done?\n\n|nark|_ is plainly a database-agnostic *Fact* storage API.\nIt does one thing, (hopefully) well!\n\nAs developers, our goal with |nark|_ is naturally to provide stable,\nreliable code. But we also want to provide easily hackable code. Code\nthat is approachable to any Python developer with a few extra minutes\nand a sense of adventure. Code that is welcoming, so that a developer\nwho wants to incorporate this tool into their daily workflow will not\nbe afraid to bang on it when it breaks, or to patch a new limb on it\nwhen then see a place for improvement. Or to just trust that it works.\n\n========\nFeatures\n========\n\n* Compatible with all modern Python releases (3.5, 3.6, and 3.7).\n* Naturally Unicode compatible -- spice up your notes!\n* Can migrate legacy Hamster databases (and fix integrity issues, too).\n* Excellent coverage (to give you comfort knowing your Facts are safe).\n* Decent documentation (though really you should learn by doing).\n* Comfortable code base (focus on the feature, not on the format).\n* Free and open source -- hack away!\n\nSee how you can\n`contribute\n`__\nto the project.\n\n=======\nExample\n=======\n\nCreate a *Fact* instance from a *Factoid* string:\n\n.. code-block:: Bash\n\n $ python3\n >>> from nark.items import Fact\n >>> factoid = '08:00 to 2019-02-16 10:00: act@cat: #tag1: Hello, nark!'\n >>> fact, err = Fact.create_from_factoid(factoid, time_hint='verify_both')\n >>> fact\n # Fact(\n # pk=None,\n # deleted=False,\n # split_from=None,\n # _start='08:00',\n # _end=datetime.datetime(2019, 2, 16, 10, 0),\n # _description='Hello, nark!',\n # activity=Activity(\n # pk=None\n # deleted=False,\n # hidden=False,\n # _name='act',\n # category=Category(\n # pk=None,\n # deleted=False,\n # hidden=False,\n # _name='cat',\n # ),\n # ),\n # tags=[Tag(\n # pk=None,\n # deleted=False,\n # hidden=False,\n # _name='tag1',\n # )],\n # )\n\n|\n\n.. image:: https://raw.githubusercontent.com/hotoffthehamster/nark/develop/docs/_static/images/information-cat.png\n :target: https://nark.readthedocs.io/en/latest/authors.html#information-cat\n :align: center\n :alt: \"Information Cat\"\n\n\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hotoffthehamster/nark", "keywords": "journal,diary,timesheet,timetrack,jrnl,rednotebook,todo.txt,prjct,hamster,fact", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "nark", "package_url": "https://pypi.org/project/nark/", "platform": "any", "project_url": "https://pypi.org/project/nark/", "project_urls": { "Documentation": "https://nark.readthedocs.io/en/latest/", "Homepage": "https://github.com/hotoffthehamster/nark", "Source Code": "https://github.com/hotoffthehamster/nark" }, "release_url": "https://pypi.org/project/nark/3.0.0a35/", "requires_dist": [ "ansi-escape-room", "appdirs", "configparser (>=3.5.0b2)", "dateparser", "future", "human-friendly-pedantic-timedelta (>=0.0.5)", "icalendar", "iso8601", "lazy-import", "pytz", "regex (==2019.02.18)", "six", "sqlalchemy", "sqlalchemy-migrate-dob (>=0.12.1)", "tzlocal" ], "requires_python": "", "summary": "Back end framework for journaling and time tracking applications (like `dob`!).", "version": "3.0.0a35" }, "last_serial": 4861859, "releases": { "0.0.1a1": [ { "comment_text": "", "digests": { "md5": "eee6612364014f90b618053d65165e66", "sha256": "7276739b9b6ce8fe5d97d1d85ddf89fa9304c86ebb0b730f9b42372b1d02f794" }, "downloads": -1, "filename": "nark-0.0.1a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eee6612364014f90b618053d65165e66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 1496, "upload_time": "2018-06-13T20:37:01", "url": "https://files.pythonhosted.org/packages/a6/03/c0976f93db540af88a0f6be4288d86af1938913b1639f3deb3cb48108e5f/nark-0.0.1a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24a482a7f6aed7e477a871f788b0b90e", "sha256": "4881fd55a68b852bb464089b70586c7fde9e336810bd1a2fd5ce4a4e19599ff3" }, "downloads": -1, "filename": "nark-0.0.1a1.tar.gz", "has_sig": false, "md5_digest": "24a482a7f6aed7e477a871f788b0b90e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1268, "upload_time": "2018-06-13T20:37:02", "url": "https://files.pythonhosted.org/packages/c4/9e/c52fe68510d8189cea567d730db3eea63664b76dd0674e4a0ee77ea8ee8f/nark-0.0.1a1.tar.gz" } ], "3.0.0a30": [ { "comment_text": "", "digests": { "md5": "d9737a9fc9a14a4464b50ac204f72660", "sha256": "d12430c28bce46f6104d76129b5712dcdd95e4d0d54a6326ec657e3d20853473" }, "downloads": -1, "filename": "nark-3.0.0a30-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d9737a9fc9a14a4464b50ac204f72660", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 172210, "upload_time": "2019-02-20T01:27:22", "url": "https://files.pythonhosted.org/packages/71/d3/f1ebef4a5a10acc8c224344f2e01fd92d935ec2d7d05b99dacb0eeb0c7c4/nark-3.0.0a30-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f879d20cc08037fb9304e376116afc80", "sha256": "8c4e726b5b726936d9683d25f7e68e8b02a72b114cae409b1a127825c9228e66" }, "downloads": -1, "filename": "nark-3.0.0a30.tar.gz", "has_sig": false, "md5_digest": "f879d20cc08037fb9304e376116afc80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 155901, "upload_time": "2019-02-20T01:27:24", "url": "https://files.pythonhosted.org/packages/69/ab/0dd505bfaebc2ac309fd5a02cd2ef16f2a01d59bdbdc9a58b22cb1dec2df/nark-3.0.0a30.tar.gz" } ], "3.0.0a31": [ { "comment_text": "", "digests": { "md5": "47fa9a650c37745e5a9e2d01db880eb7", "sha256": "49f5a001d9dbcdc1c8207c16ef9a7ea1def42a526996fa9c91c851805bfde67f" }, "downloads": -1, "filename": "nark-3.0.0a31-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "47fa9a650c37745e5a9e2d01db880eb7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 172262, "upload_time": "2019-02-21T06:59:19", "url": "https://files.pythonhosted.org/packages/db/a5/a89a548d7e54595b1e3da22c8106293666a4a9835713fa8c93201cd68cda/nark-3.0.0a31-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "492cf2050d27db97f9c656227f3c86cc", "sha256": "6a7cff2636dfcb28f8b76496436cc0a2adbe074e3186090a90a8488f995f89f9" }, "downloads": -1, "filename": "nark-3.0.0a31.tar.gz", "has_sig": false, "md5_digest": "492cf2050d27db97f9c656227f3c86cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 155669, "upload_time": "2019-02-21T06:59:21", "url": "https://files.pythonhosted.org/packages/46/dc/7ddef8313e4a3d0d49c33368c8c9baba354f6d7e3127e9f85d9468885904/nark-3.0.0a31.tar.gz" } ], "3.0.0a32": [ { "comment_text": "", "digests": { "md5": "0c3e44c51a7ba36ba2b23acc22b6d5f7", "sha256": "2491aaf9d04b61c53f5f62ce1b650de33aa7d56f7eb6f6345d0a30be2a1b777e" }, "downloads": -1, "filename": "nark-3.0.0a32-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c3e44c51a7ba36ba2b23acc22b6d5f7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 172358, "upload_time": "2019-02-22T22:58:05", "url": "https://files.pythonhosted.org/packages/ab/62/59981e80b464c812879153898439a9c99d27d1fb551df3a00fecec3e7c81/nark-3.0.0a32-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d9908fce89d7f8919b0d6a4f8b77ff0", "sha256": "a740b360ec85abc5d518f7a38aec8ffa792eeae05f20e33fa303be0279cfd3c3" }, "downloads": -1, "filename": "nark-3.0.0a32.tar.gz", "has_sig": false, "md5_digest": "7d9908fce89d7f8919b0d6a4f8b77ff0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 149708, "upload_time": "2019-02-22T22:58:07", "url": "https://files.pythonhosted.org/packages/82/5e/08ae475ea184168130c15d576ba0b82143619c76e443d68e98bb6ee9bd82/nark-3.0.0a32.tar.gz" } ], "3.0.0a33": [ { "comment_text": "", "digests": { "md5": "e97cfada0ceb4ce16c28d236bb0ec97f", "sha256": "fa59b258112facd50f9148111e6e63a825247d8e8457886ca673f9280b4e0d63" }, "downloads": -1, "filename": "nark-3.0.0a33-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e97cfada0ceb4ce16c28d236bb0ec97f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 173007, "upload_time": "2019-02-23T01:05:32", "url": "https://files.pythonhosted.org/packages/38/2e/16a1df646411ef515312d46a4e885c408371d9c5a8d4235612094aa6f782/nark-3.0.0a33-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e609ef51d2d05c079d713fe96c7c3dd", "sha256": "6e54d35884647e02be1ee1e90bc43466e4eb735222f480478cf0786d70428813" }, "downloads": -1, "filename": "nark-3.0.0a33.tar.gz", "has_sig": false, "md5_digest": "6e609ef51d2d05c079d713fe96c7c3dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150241, "upload_time": "2019-02-23T01:05:34", "url": "https://files.pythonhosted.org/packages/e3/b4/b6ce35ed3c33389e7acdb2f0a187038c04d3fe32117de18c37ca927850ff/nark-3.0.0a33.tar.gz" } ], "3.0.0a34": [ { "comment_text": "", "digests": { "md5": "6225ff3a73ab52f8a8168b3887a1fca0", "sha256": "161d420e9baf0997663a0e1f82b6d34d76ac47e9aa40b1114d57db8dd9514a19" }, "downloads": -1, "filename": "nark-3.0.0a34-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6225ff3a73ab52f8a8168b3887a1fca0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 173049, "upload_time": "2019-02-23T04:37:15", "url": "https://files.pythonhosted.org/packages/98/ba/e739810c44a4609410be5fae7b081776bc17b62db5a101697fc7d306abce/nark-3.0.0a34-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c57461725a4f2d674b7396f0d0024ece", "sha256": "9c288d0074927adeec6902c85f8dce4cc54a5432f93a5b7da885cbcb2bd0a5d9" }, "downloads": -1, "filename": "nark-3.0.0a34.tar.gz", "has_sig": false, "md5_digest": "c57461725a4f2d674b7396f0d0024ece", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 150297, "upload_time": "2019-02-23T04:37:16", "url": "https://files.pythonhosted.org/packages/3b/6c/b193dfdc317d635c875c721d40f443d7561e10ba07e178816b1ffdb8593a/nark-3.0.0a34.tar.gz" } ], "3.0.0a35": [ { "comment_text": "", "digests": { "md5": "52465df18f20a2eb6026a910cfbe3d88", "sha256": "ecd2a50eb53f05cdb8c9848b7a8dda70ae9f1fe91b5fe3b305fa9cb0654b5336" }, "downloads": -1, "filename": "nark-3.0.0a35-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "52465df18f20a2eb6026a910cfbe3d88", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 129394, "upload_time": "2019-02-24T19:47:07", "url": "https://files.pythonhosted.org/packages/98/76/2dda18cbab5124f2da857cee4c1692f23992c25038c8a17e6b8e7678e737/nark-3.0.0a35-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d1f8775f441bb3a8818dd11c145ca6d", "sha256": "17dc4ba53ca41179c110e5a8e6ea9b862100adb763270740f544035215d2a74c" }, "downloads": -1, "filename": "nark-3.0.0a35.tar.gz", "has_sig": false, "md5_digest": "2d1f8775f441bb3a8818dd11c145ca6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 151266, "upload_time": "2019-02-24T19:47:09", "url": "https://files.pythonhosted.org/packages/0a/bb/8cf278f68900dbac78d5ce81a6d977e0ffdab334938276194a2c6a5e0e88/nark-3.0.0a35.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "52465df18f20a2eb6026a910cfbe3d88", "sha256": "ecd2a50eb53f05cdb8c9848b7a8dda70ae9f1fe91b5fe3b305fa9cb0654b5336" }, "downloads": -1, "filename": "nark-3.0.0a35-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "52465df18f20a2eb6026a910cfbe3d88", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 129394, "upload_time": "2019-02-24T19:47:07", "url": "https://files.pythonhosted.org/packages/98/76/2dda18cbab5124f2da857cee4c1692f23992c25038c8a17e6b8e7678e737/nark-3.0.0a35-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d1f8775f441bb3a8818dd11c145ca6d", "sha256": "17dc4ba53ca41179c110e5a8e6ea9b862100adb763270740f544035215d2a74c" }, "downloads": -1, "filename": "nark-3.0.0a35.tar.gz", "has_sig": false, "md5_digest": "2d1f8775f441bb3a8818dd11c145ca6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 151266, "upload_time": "2019-02-24T19:47:09", "url": "https://files.pythonhosted.org/packages/0a/bb/8cf278f68900dbac78d5ce81a6d977e0ffdab334938276194a2c6a5e0e88/nark-3.0.0a35.tar.gz" } ] }