{ "info": { "author": "Eric Goller", "author_email": "eric.goller@ninjaduck.solutions", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4" ], "description": "===============================\nhamster-lib\n===============================\n\n.. image:: https://img.shields.io/travis/projecthamster/hamster-lib/master.svg\n :target: https://travis-ci.org/projecthamster/hamster_lib\n\n.. image:: https://img.shields.io/pypi/v/hamster-lib.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/hamster-gtk/\n\n.. image:: https://img.shields.io/codecov/c/github/projecthamster/hamster-lib/master.svg\n :target: https://codecov.io/github/projecthamster/hamster-lib\n\n.. image:: https://readthedocs.org/projects/hamster-lib/badge/?version=latest\n :target: http://hamster-lib.docs.projecthamster.org/en/latest/\n :alt: Documentation Status\n\n.. image:: https://requires.io/github/projecthamster/hamster-lib/requirements.svg?branch=master\n :target: https://requires.io/github/projecthamster/hamster-lib/requirements/?branch=master\n :alt: Requirements Status\n\n(A badges refer to ``master``)\n\nA library for common timetracking functionality.\n\n``hamster-lib`` aims to be a replacement for ``projecthamster`` backend\nlibrary. While we are not able to function as a straight forward drop-in\nreplacement we try very hard to stay as compatible as possible. As a\nconsequence clients are able to switch to ``hamster-lib`` merely by changing\nsome basic calls. Most of the semantics and return values will be as before.\n\nThis itself points to a major architectural shift in the way ``hamster-lib``\napproaches timetracking. We are firm believers in *do one thing, and do it\nwell*. The tried and tested unix toolbox principle. As such we focus on\nproviding useful backend functionality and helper methods so clients (dbus\ninterfaces, CLIs or graphical UIs) can build upon a solid and consistent base\nand focus on their specific requirements.\n\nFeatures\n--------\n* Full python >=2.7 and >=3.4 compatibility\n* Full unicode support\n* >= 95% test coverage\n* Extensive documentation\n* Focus on clean, maintainable code.\n* Free software: GPL3\n* All you need for production, test or dev environments comes out of the box\n with regular python tools.\n\nFirst Steps\n-----------\n* Build dev environment: ``make develop``\n* Build the documentation locally: ``make docs``\n* Run just the tests: ``make test``\n* Run entire test suite including linters and coverage: ``make test-all``\n\nAdditional Resources\n--------------------\n* `Documentation by 'read the docs' `_\n* `CI thanks to Travis-CI `_\n* `Coverage reports by 'codecov' `_\n* `Dependency monitoring by 'requires.io' `_\n\nNews: Version 0.13.0\n---------------------\nThis release features only few public functional changes:\n\n#. Raw fact parsing has been moved to a helper method. This should make it easier\n for clients to parse raw fact strings even if they do not qualify as valid\n Fact instances.\n#. Facts now provide a ``serialied_string`` method that encodes all relevant data.\n#. We now ship ``config helpers`` that provide a baseline config that can easily be\n extended instead of each client having to implement this all over\n again.\n\nFor a more detailed overview about what new as well as a list of all the\nsmaller improvements, please refer to the changelog.\n\nHappy tracking; Eric.\n\nTodo\n----\nThis early release is mainly meant as a rough proof-of-concept at this stage.\nIt showcases our API as well as our general design decisions. As such there\nare a few functionalities/details of the original ``projecthamster`` backend\nthat we wish to allow for, but are not provided so far. These are:\n\n* Autocomplete related methods\n* Trophies (The jury is still out on if and how we want to support those.)\n* Migrations from old databases.\n\nIncompatibilities\n------------------\nDespite our efforts to stay backwards compatible we did deliberately break the\nway ``Facts`` without end dates are handled. We think allowing for them in any\npersistent backend creates a data consistency nightmare and so far there seems\nno conceivable use case for it, let alone an obvious semantic. What we do\nallow for is *one* ``ongoing fact``. That is a fact that has a start, but no\nend date. For details, please refer to the documentation.\n\nCredits\n---------\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-pypackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n\n\nHistory\n=======\n\n0.13.2 (2017-08-08)\n--------------------\n- Fix a bug that would not always return all partial overlaps for\n ``actManager._get_all``. This in effect fixes broken \"timeframe availability\"\n tests. [LIB-253]\n- Remove obsolete references to ``backports.ConfigParser``. [LIB-255]\n- Properly deal with raw fact that do/do-not include seconds. [LIB-254]\n\n0.13.1 (2017-06-19)\n--------------------\n* Remove check for ``start`` info when validating timeframes with with\n ``helpers.time.validate_start_end_range``. [LIB-250]\n\n0.13.0 (2017-06-07)\n--------------------\n* ``helpers.time.extract_time_info`` checks that ``end > start``. [LIB-30]\n* Some attributes of the internal ``XMLWriter`` class have been renamed. [LIB-109]\n* ``stop_tmp_fact`` now accepts hints about the end (date-)time. [LIB-129]\n* A new method ``update_tmp_fact`` has been added. [LIB-132]\n* Added ``Fact.serialized_string``. [LIB-216]\n* Raw fact parsing has been moved to a separate helper method. [LIB-230]\n* Added backend related config helpers. [LIB-235]\n* We now use the built-in ``configparser`` module under python 3. [LIB-236]\n\n0.12.0 (2016-08-05)\n--------------------\n* Added support for tags! ``hamster_lib.objects.Tag`` instances can be appended\n to ``Fact.tags`` and will be stored by the sqlalchemy backend. We also\n provide comprehensive CRUD methods as part of the brand new\n ``storage.TagManager``.\n* Major refactoring of *raw fact* parsing. In particular the way timeinfo is\n extracted from the string. We are now very clear and explicit about the\n supported timeinfo formats. Anything unmatched before the ``@`` token will be\n considered the ``activity.name``. This means in particular that our activity\n names may contain whitespace!\n* Added new ``partial`` parameter to ``time.complete_timeframe`` which defaults\n to ``False`` which maintains the functions previous behaviour. Setting it to\n ``True`` however will cause it to only 'complete' those bits of the timeframe\n where there is at least some partial (time or date) information available.\n* Moved time related helpers to a dedicated submodule:\n ``hamster_lib.helpers.time``\n* Added ``HamsterControl.update_config`` method to allow config updates at\n runtime.\n* Renamed ``get_config`` helper to ``load_config`` and limit it to deal just\n with config retrieval. It no longer ensures a default config is written and\n returned. Your client will need to handle any such fallback behaviour now.\n* Use ``tox-travis`` to ensure proper multi python version testing on Travis-CI\n* Minor fixes in ``config_helpers._get_config_instance``\n* Renamed requirements/\\*.txt to \\*.pip\n\n0.11.0 (2016-07-06)\n--------------------\n* Renamed this package to ``hamster-lib`` as it now an offical part of\n `projecthamster `_. It was previously\n named and distributed as `hamsterlib `_\n* Add documentation checker ``pep257`` to testsuite.\n* Fixed docstrings.\n* Removed ``hamster_lib.objects.Fact.serialized_name``.\n* Improved test factories\n* Made ``hamster_lib.objects.*`` *hashable*.\n* Provide consistent and improved ``__repr__`` methods for\n ``hamster_lib.objects`` classes.\n* ``FactManager._get_all`` can now return facts completely*or* partially within\n the timeframe. As a consequence, we removed\n ``FactManager._timeframe_is_free``.\n* Added a set of helper function to ease common configuration related tasks.\n In particular they make it easy to store a given config at its canonical\n file system location.\n* Improved ``ActivityManager.get_all`` to enable it to return *all* activities.\n\n0.10.0 (2016-04-20)\n-------------------\n* Add ``ical`` export facilities. Brand new writer using the ``icalendar`` library.\n* Add ``xml`` export facilities.\n* Switch to `semantic versioning `_\n* Added GPL3 boilerplate\n* Provide documentation on packaging and ``requirements.txt``.\n* Add support for `editorconfig `_\n* Introduce fine grained, storage backend dependent config options.\n\n0.0.3 (2016-04-08)\n-------------------\n* fact managers ``save`` method now enforces new ``fact_min_delta`` setting.\n* Fixed broken packing in ``setup.py``.\n* Storage manager methods now use extensive logging.\n* Documentation moved to 'alabaster' theme and content extended.\n* Remove usage of ``future.builtins.str``.\n* Adjusted ``release`` make target.\n\n0.0.2 (2016-04-07)\n------------------\n* First release on PyPi\n* Improved documentation\n* Support for *ongoing facts*.\n* Updated requirements\n\n0.0.1 (2016-04-03)\n---------------------\n* First release on github\n\n\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/projecthamster/hamster-lib", "keywords": "hamster-lib", "license": "GPL3", "maintainer": "", "maintainer_email": "", "name": "hamster-lib", "package_url": "https://pypi.org/project/hamster-lib/", "platform": "", "project_url": "https://pypi.org/project/hamster-lib/", "project_urls": { "Homepage": "https://github.com/projecthamster/hamster-lib" }, "release_url": "https://pypi.org/project/hamster-lib/0.13.2/", "requires_dist": [ "appdirs", "configparser (>=3.5.0b2)", "future", "icalendar", "six", "sqlalchemy" ], "requires_python": "", "summary": "A library for common timetracking functionality.", "version": "0.13.2" }, "last_serial": 3081492, "releases": { "0.11.0": [ { "comment_text": "", "digests": { "md5": "36dd4a5853d8840c60cf72751479ebd1", "sha256": "fa1e92c0b63b72411aeb96e753b464e0cc3867345868364a4181f34a4fb16aea" }, "downloads": -1, "filename": "hamster_lib-0.11.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "36dd4a5853d8840c60cf72751479ebd1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 68916, "upload_time": "2016-07-06T10:32:38", "url": "https://files.pythonhosted.org/packages/e2/0e/36e7183c8b54de1c0c78c2ba3680af117fac81fed067b0191ba820cd8c70/hamster_lib-0.11.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "150e41d2a6d5320e84f8f287e2bb4ee0", "sha256": "c499b41cc1f5340a7c7977397cfd46262710323c509d3d82704fc9920dc39618" }, "downloads": -1, "filename": "hamster-lib-0.11.0.tar.gz", "has_sig": true, "md5_digest": "150e41d2a6d5320e84f8f287e2bb4ee0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 83797, "upload_time": "2016-07-06T10:33:24", "url": "https://files.pythonhosted.org/packages/c2/15/b42771625bf20eddcb158e282eb759d08a703fb0ca8ab2f124a6ba89bb7b/hamster-lib-0.11.0.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "f136bc274f44eed839bc435b9dd2aedb", "sha256": "1a051fe12d1e11687863f6bed0c836c72326b205ca925ee0934119850e20abb0" }, "downloads": -1, "filename": "hamster_lib-0.11.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "f136bc274f44eed839bc435b9dd2aedb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 69099, "upload_time": "2016-07-06T23:10:53", "url": "https://files.pythonhosted.org/packages/51/e2/5272cadbcd7fb82861bda36a5cd94fc50f16269bb7afdbb3107a19c80b0f/hamster_lib-0.11.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31b39d328876d61533c032a6517076fc", "sha256": "fabb34f74525c25ece5987746c0ceb0eb01228e313d09fc5d887748d72a1b2b0" }, "downloads": -1, "filename": "hamster-lib-0.11.1.tar.gz", "has_sig": true, "md5_digest": "31b39d328876d61533c032a6517076fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84014, "upload_time": "2016-07-06T23:10:42", "url": "https://files.pythonhosted.org/packages/ad/e6/ed89ed15893dbfea4b28a2f0be9a0f4e030922b2ba4d765c432dafbb1995/hamster-lib-0.11.1.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "b080efd1d010820cc1571cab9d5d6fe4", "sha256": "d509416ca985f4aa209577b8eebf0c0381ed04df44eaa7c2d46431dfdbeca34c" }, "downloads": -1, "filename": "hamster_lib-0.12.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b080efd1d010820cc1571cab9d5d6fe4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 74129, "upload_time": "2016-08-05T14:35:23", "url": "https://files.pythonhosted.org/packages/75/8a/ee6cf2cbea44ec10ec12265dd83b88e830b4ba799a89c4cc1e4a0a534e3d/hamster_lib-0.12.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6eebb147b6f378f55ebdaa6275e0aaaf", "sha256": "160800d64d655adfcc17ecab96612ff5916f1db259996cbd08162b984b37ce20" }, "downloads": -1, "filename": "hamster-lib-0.12.0.tar.gz", "has_sig": true, "md5_digest": "6eebb147b6f378f55ebdaa6275e0aaaf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88433, "upload_time": "2016-08-05T14:33:31", "url": "https://files.pythonhosted.org/packages/1e/da/1c5d9c2fde734ef013ca62990745a9a3ec1b7361f61f31aaa5d7b131a5d4/hamster-lib-0.12.0.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "21f548352c15ae71fd1eafc335694e4a", "sha256": "06e7ee650858ec2910c76701ea8a6c9caedb3f3df4de80112276802187b5aa37" }, "downloads": -1, "filename": "hamster_lib-0.13.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "21f548352c15ae71fd1eafc335694e4a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 80604, "upload_time": "2017-06-07T11:51:52", "url": "https://files.pythonhosted.org/packages/6d/b1/e9349044162c63766a98b11cb7e8c9c5c7970bd50c9f1685a64bfbcf66aa/hamster_lib-0.13.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7583179c46c372dc33af403776f60ea5", "sha256": "5b39a2579f585fbb476cb424106c8ef97e1528b992002ef02fbebaf78a6a1db3" }, "downloads": -1, "filename": "hamster-lib-0.13.0.tar.gz", "has_sig": true, "md5_digest": "7583179c46c372dc33af403776f60ea5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94679, "upload_time": "2017-06-07T11:51:55", "url": "https://files.pythonhosted.org/packages/77/12/5477407e863282f1e3d6da17891d489f3fb12ea73c54d8ae848c6a63037b/hamster-lib-0.13.0.tar.gz" } ], "0.13.1": [ { "comment_text": "", "digests": { "md5": "5b5d5e5378de90a80f400ed402f448d9", "sha256": "07794595ed9ec17dbb7c55cf15538a56becdf5fafc187c35afe2fb4490393cbf" }, "downloads": -1, "filename": "hamster_lib-0.13.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5b5d5e5378de90a80f400ed402f448d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 80952, "upload_time": "2017-06-19T12:09:34", "url": "https://files.pythonhosted.org/packages/8a/28/c066e18ec5b475a4d5bf4254b02489941323c5b24c895498d42407b33b54/hamster_lib-0.13.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afc5b7585b225755fc558a78667eae14", "sha256": "da46bb982c23cf73c5fde171d1d0e66fc1d76b4bab9283dd432b0a43f18c9e21" }, "downloads": -1, "filename": "hamster-lib-0.13.1.tar.gz", "has_sig": true, "md5_digest": "afc5b7585b225755fc558a78667eae14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95103, "upload_time": "2017-06-19T12:09:37", "url": "https://files.pythonhosted.org/packages/c2/80/2ccfb7509133b56d7d90cdb3a3bb334507cdf8ec0217e892c074b2e9b6b4/hamster-lib-0.13.1.tar.gz" } ], "0.13.2": [ { "comment_text": "", "digests": { "md5": "68ef0939399da12f6495ffd3d383fb5b", "sha256": "89fb785ddfca5e90ec856ac279da4f21b01ed02a7f085aca736ea711922b6e11" }, "downloads": -1, "filename": "hamster_lib-0.13.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "68ef0939399da12f6495ffd3d383fb5b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 81612, "upload_time": "2017-08-08T15:32:12", "url": "https://files.pythonhosted.org/packages/7c/00/90f7c7e0aa977a02d8448726f58f94d0a8f90687a518ddaacce64ae7e3d7/hamster_lib-0.13.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68a9e188b158e8485174e07417beb065", "sha256": "fd136aca544ffc1f30b5bb55ed3055ae39989e0ab45d210710470b643a62d7d6" }, "downloads": -1, "filename": "hamster-lib-0.13.2.tar.gz", "has_sig": true, "md5_digest": "68a9e188b158e8485174e07417beb065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95749, "upload_time": "2017-08-08T15:32:15", "url": "https://files.pythonhosted.org/packages/05/fb/6f1b95101da136cc2ececda778bb2ebe1192ec433ce3008d957815b8d968/hamster-lib-0.13.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "68ef0939399da12f6495ffd3d383fb5b", "sha256": "89fb785ddfca5e90ec856ac279da4f21b01ed02a7f085aca736ea711922b6e11" }, "downloads": -1, "filename": "hamster_lib-0.13.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "68ef0939399da12f6495ffd3d383fb5b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 81612, "upload_time": "2017-08-08T15:32:12", "url": "https://files.pythonhosted.org/packages/7c/00/90f7c7e0aa977a02d8448726f58f94d0a8f90687a518ddaacce64ae7e3d7/hamster_lib-0.13.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68a9e188b158e8485174e07417beb065", "sha256": "fd136aca544ffc1f30b5bb55ed3055ae39989e0ab45d210710470b643a62d7d6" }, "downloads": -1, "filename": "hamster-lib-0.13.2.tar.gz", "has_sig": true, "md5_digest": "68a9e188b158e8485174e07417beb065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 95749, "upload_time": "2017-08-08T15:32:15", "url": "https://files.pythonhosted.org/packages/05/fb/6f1b95101da136cc2ececda778bb2ebe1192ec433ce3008d957815b8d968/hamster-lib-0.13.2.tar.gz" } ] }