Skip to main content

A library for common timetracking functionality.

None

Project description

https://img.shields.io/travis/projecthamster/hamster-lib/master.svg https://img.shields.io/codecov/c/github/projecthamster/hamster-lib/master.svg Documentation Status Requirements Status

(A badges refer to master)

A library for common timetracking functionality.

hamster-lib aims to be a replacement for projecthamster backend library. While we are not able to function as a straight forward drop-in replacement we try very hard to stay as compatible as possible. As a consequence clients are able to switch to hamster-lib merely by changing some basic calls. Most of the semantics and return values will be as before.

This itself points to a major architectural shift in the way hamster-lib approaches timetracking. We are firm believers in do one thing, and do it well. The tried and tested unix toolbox principle. As such we focus on providing useful backend functionality and helper methods so clients (dbus interfaces, CLIs or graphical UIs) can build upon a solid and consistent base and focus on their specific requirements.

Features

  • Full python >=2.7 and >=3.4 compatibility

  • Full unicode support

  • >= 95% test coverage

  • Extensive documentation

  • Focus on clean, maintainable code.

  • Free software: GPL3

  • All you need for production, test or dev environments comes out of the box with regular python tools.

First Steps

  • Build dev environment: make develop

  • Build the documentation locally: make docs

  • Run just the tests: make test

  • Run entire test suite including linters and coverage: make test-all

Additional Resources

News: Version 0.11.0

This is the first release of hamster-lib as official part of projecthamster. As such it includes a lot of internal adjustments and minor fixes. Besides such housekeeping however, is also offers some genuine new features. You can now query ActivityManaget.get_all to return all activities, where it previously only returned all for given category. We also made Category, Activity and Fact hashable, so you can now use them as dict keys or set elements. For a more detailed overview about what new, please refer to the changelog. Happy tracking; Eric.

Todo

This early release is mainly meant as a rough proof-of-concept at this stage. It showcases our API as well as our general design decisions. As such there are a few functionalities/details of the original projecthamster backend that we wish to allow for, but are not provided so far. These are:

  • Tags (We accept them but they are not stored in the backend.)

  • Autocomplete related methods

  • Trophies (The jury is still out on if and how we want to support those.)

  • Migrations from old databases.

Incompatibilities

Despite our efforts to stay backwards compatible we did deliberately break the way Facts without end dates are handled. We think allowing for them in any persistent backend creates a data consistency nightmare and so far there seems no conceivable use case for it, let alone an obvious semantic. What we do allow for is one ongoing fact. That is a fact that has a start, but no end date. For details, please refer to the documentation.

Credits

Tools used in rendering this package:

History

0.11.0 (2016-07-06)

  • Renamed this package to hamster-lib as it now an offical part of projecthamster. It was previously named and distributed as hamsterlib

  • Add documentation checker pep257 to testsuite.

  • Fixed docstrings.

  • Removed hamster_lib.objects.Fact.serialized_name.

  • Improved test factories

  • Made hamster_lib.objects.* hashable.

  • Provide consistent and improved __repr__ methods for hamster_lib.objects classes.

  • FactManager._get_all can now return facts completely*or* partially within the timeframe. As a consequence, we removed FactManager._timeframe_is_free.

  • Added a set of helper function to ease common configuration related tasks. In particular they make it easy to store a given config at its canonical file system location.

  • Improved ActivityManager.get_all to enable it to return all activities.

0.10.0 (2016-04-20)

  • Add ical export facilities. Brand new writer using the icalendar library.

  • Add xml export facilities.

  • Switch to semantic versioning

  • Added GPL3 boilerplate

  • Provide documentation on packaging and requirements.txt.

  • Add support for editorconfig

  • Introduce fine grained, storage backend dependent config options.

0.0.3 (2016-04-08)

  • fact managers save method now enforces new fact_min_delta setting.

  • Fixed broken packing in setup.py.

  • Storage manager methods now use extensive logging.

  • Documentation moved to ‘alabaster’ theme and content extended.

  • Remove usage of future.builtins.str.

  • Adjusted release make target.

0.0.2 (2016-04-07)

  • First release on PyPi

  • Improved documentation

  • Support for ongoing facts.

  • Updated requirements

0.0.1 (2016-04-03)

  • First release on github

Project details

None

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hamster-lib-0.11.1.tar.gz (84.0 kB view hashes)

Uploaded Source

Built Distribution

hamster_lib-0.11.1-py2.py3-none-any.whl (69.1 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page