Package: hamster-lib
(A badges refer tomaster)A library for common timetracking functionality.hamster-libaims to be a replacement forprojecthamsterbackend
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 tohamster-libmerely 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 wayhamster-libapproaches timetracking. We are firm believers indo 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.FeaturesFull python >=2.7 and >=3.4 compatibilityFull unicode support>= 95% test coverageExtensive documentationFocus on clean, maintainable code.Free software: GPL3All you need for production, test or dev environments comes out of the box
with regular python tools.First StepsBuild dev environment:make developBuild the documentation locally:make docsRun just the tests:make testRun entire test suite including linters and coverage:maketest-allAdditional ResourcesDocumentation by ‘read the docs’CI thanks to Travis-CICoverage reports by ‘codecov’Dependency monitoring by ‘requires.io’News: Version 0.13.0This release features only few public functional changes:Raw fact parsing has been moved to a helper method. This should make it easier
for clients to parse raw fact strings even if they do not qualify as valid
Fact instances.Facts now provide aserialied_stringmethod that encodes all relevant data.We now shipconfig helpersthat provide a baseline config that can easily be
extended instead of each client having to implement this all over
again.For a more detailed overview about what new as well as a list of all the
smaller improvements, please refer to the changelog.Happy tracking; Eric.TodoThis 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 originalprojecthamsterbackend
that we wish to allow for, but are not provided so far.  These are:Autocomplete related methodsTrophies (The jury is still out on if and how we want to support those.)Migrations from old databases.IncompatibilitiesDespite our efforts to stay backwards compatible we did deliberately break the
wayFactswithout 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 isoneongoing fact. That is a fact that has a start, but no
end date. For details, please refer to the documentation.CreditsTools used in rendering this package:Cookiecuttercookiecutter-pypackageHistory0.13.2 (2017-08-08)Fix a bug that would not always return all partial overlaps foractManager._get_all. This in effect fixes broken “timeframe availability”
tests. [LIB-253]Remove obsolete references tobackports.ConfigParser. [LIB-255]Properly deal with raw fact that do/do-not include seconds. [LIB-254]0.13.1 (2017-06-19)Remove check forstartinfo when validating timeframes with withhelpers.time.validate_start_end_range. [LIB-250]0.13.0 (2017-06-07)helpers.time.extract_time_infochecks thatend > start. [LIB-30]Some attributes of the internalXMLWriterclass have been renamed. [LIB-109]stop_tmp_factnow accepts hints about the end (date-)time. [LIB-129]A new methodupdate_tmp_facthas been added. [LIB-132]AddedFact.serialized_string. [LIB-216]Raw fact parsing has been moved to a separate helper method. [LIB-230]Added backend related config helpers. [LIB-235]We now use the built-inconfigparsermodule under python 3. [LIB-236]0.12.0 (2016-08-05)Added support for tags!hamster_lib.objects.Taginstances can be appended
toFact.tagsand will be stored by the sqlalchemy backend. We also
provide comprehensive CRUD methods as part of the brand newstorage.TagManager.Major refactoring ofraw factparsing. In particular the way timeinfo is
extracted from the string. We are now very clear and explicit about the
supported timeinfo formats. Anything unmatched before the@token will be
considered theactivity.name. This means in particular that our activity
names may contain whitespace!Added newpartialparameter totime.complete_timeframewhich defaults
toFalsewhich maintains the functions previous behaviour. Setting it toTruehowever will cause it to only ‘complete’ those bits of the timeframe
where there is at least some partial (time or date) information available.Moved time related helpers to a dedicated submodule:hamster_lib.helpers.timeAddedHamsterControl.update_configmethod to allow config updates at
runtime.Renamedget_confighelper toload_configand limit it to deal just
with config retrieval. It no longer ensures a default config is written and
returned. Your client will need to handle any such fallback behaviour now.Usetox-travisto ensure proper multi python version testing on Travis-CIMinor fixes inconfig_helpers._get_config_instanceRenamed requirements/*.txt to *.pip0.11.0 (2016-07-06)Renamed this package tohamster-libas it now an offical part ofprojecthamster. It was previously
named and distributed ashamsterlibAdd documentation checkerpep257to testsuite.Fixed docstrings.Removedhamster_lib.objects.Fact.serialized_name.Improved test factoriesMadehamster_lib.objects.*hashable.Provide consistent and improved__repr__methods forhamster_lib.objectsclasses.FactManager._get_allcan now return facts completely*or* partially within
the timeframe. As a consequence, we removedFactManager._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.ImprovedActivityManager.get_allto enable it to returnallactivities.0.10.0 (2016-04-20)Addicalexport facilities. Brand new writer using theicalendarlibrary.Addxmlexport facilities.Switch tosemantic versioningAdded GPL3 boilerplateProvide documentation on packaging andrequirements.txt.Add support foreditorconfigIntroduce fine grained, storage backend dependent config options.0.0.3 (2016-04-08)fact managerssavemethod now enforces newfact_min_deltasetting.Fixed broken packing insetup.py.Storage manager methods now use extensive logging.Documentation moved to ‘alabaster’ theme and content extended.Remove usage offuture.builtins.str.Adjustedreleasemake target.0.0.2 (2016-04-07)First release on PyPiImproved documentationSupport forongoing facts.Updated requirements0.0.1 (2016-04-03)First release on github