No project description provided
Project description
Time Turner
A Minimalistic Time Tracker.
This is a minimalistic time tracker that allows you to record when you start working, even if it is in the past, stop running activities now, and add activities from the past. It also ensures legal rest periods are included if you forgot to track them.
In the Harry Potter series, the Time-Turner is a magical device that allows the user to travel back in time. Time Turner is a time tracker that lets you "turn back time" and record activities from the past.
Warning, this is still an alpha release, the API is not stable yet.
Usage
Starting an Activity
To start tracking an activity, run the following command:
This will record the current time as the start of your activity.
If you forgot to start tracking an activity yesterday, you can provide the start time with an additional parameter, -10m
would mean 10 minutest ago. The full list of possible time values can be seen further down
Stopping an Activity
To stop tracking the current activity, run the following command:
This will record the current time as the end of your activity and calculate the total duration.
Adding a Past Activity
If you forgot to track an activity in the past, you can add it with timeturner add <start_time> - <end_time>
Adding a public holiday
To add May 1st as a public holiday, run the following command:
Adding your vacation
To add your vacation, run the following command:
Adding your vacation will add a segments that are not part of holidays, it will also split weekends and only add working days as vacation.
Configuration
Environment Variable | Default Value | Description |
---|---|---|
TIMETURNER_CONFIG_HOME | ~/$XDG_CONFIG_HOME/timeturner | The directory for configuration files. |
TIMETURNER_CONFIG_FILE | timeturner.toml | The configuration file to use. |
TIMETURNER_DATABASE__HOME | value of $TIMETURNER_CONFIG_HOME | The directory to store the database file in. |
TIMETURNER_DATABASE__FILE | timeturner.db | The database file to use. |
TIMETURNER_DATABASE__TABLE | pensive | The table to use in the database. |
Examples
Examples for times
<start_time> or <end_time> could be one of the following Examples:
Example | Description |
---|---|
now | |
9:00 | 9:00 today |
-1m | 1 minute ago |
-1h | 1 hour ago |
-1d | 1 day ago, you will be asked for the time |
-1d@9:00 | 1 day ago 9:00 |
+1m | 1 minute from now |
+1h | 1 hour from now |
12 7:00 | 7:00 on the 12th of the current month |
02-28 9:00 | 9:00 on February 28 of the current year |
2022-02-28 9:00 | 9:00 on February 28, 2022 |
Automatic Rest Periods
If you forget to track a rest period, the time tracker will reduce the required rest period before showing it. For periods greater than 4h 15 are reducted, for periods greater than 6:15 additional 30m are reducted.
TODOs:
- Add Configuration
- ignore seconds
- freeze time, to generate useful and pretty images for docs
- automatic rest periods
- default work time
- default work week days
- allow full day activities to coexist with other activities
- travel time and holiday could happen
- DB migrations
- show and generate tui output
- Add section about contributions
- Add precommit hook to ensure code is formatted
- Generate docstrings for DB methods
- Remove import command (it contains assumptions that will not be true for everyone)
- Document how to import data from other time trackers
- Add mode to convert hamster output to jsonl file.
- Add mode to import jsonl file
- Add logging
- allow different log levels for database and application
- add test that the last release version in Changelog is the same as in pyproject.toml and app
- README
- auto generate config options
TODOS by command:
-
add
-
end
- add tests
-
configure
- modify and write configfile
- allow to add aliases for commands
- e.g. new new add alias with setting passive to true
- add test when holiday tag name is changed in settings
-
list
- split up multiday activities
- summaries full day tags differently
- holidays should not count as work time
- it should also not count as missing work time
- group by year, month, week, daysplit up multiday activities
- add option to show only open activities
- add tests
- MM-DD or YYYY-MM-DD should only show show a single day
-
import holidays
-
export
- probably like list --format jsonl
-
undo (revert the last change)
-
confirm changes that would modify other entries
Design Goals
- minimalistic, little to type
- enforce as little as possible
- be clear
- be extensible
- TODO: support plugins (maybe a later version)
- be able to use it programmatically
- be able to use it as a library
Open Questions
- should the get_latest_segment return segments from the future (start_time in the future)?
Nice to have:
- Build a minimal Docker image (maybe)
- https://github.com/ines/termynal
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file timeturner-0.5.1.tar.gz
.
File metadata
- Download URL: timeturner-0.5.1.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.5 Linux/6.4.12-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b43299863436f01416d3b315410416b3c27af0543eed999aede7380bc6456892 |
|
MD5 | b11901030b3c5b75c2af0937e06b8757 |
|
BLAKE2b-256 | 0f3bcfbbd7d81250b546907436ea2b03cf9e4537bdce13c1307c1d9e36f5412d |
File details
Details for the file timeturner-0.5.1-py3-none-any.whl
.
File metadata
- Download URL: timeturner-0.5.1-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.4.2 CPython/3.11.5 Linux/6.4.12-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e09a32998a44ad2a18caae1f2e26ac0f6fcacccebecaf269335fde8e223dfba5 |
|
MD5 | 949ac2d545b3c0cac0f8a6ccf01a4cf8 |
|
BLAKE2b-256 | fe821b2a56a79e2c77db3efe03f4840bef0b295c64d8bc6d1848f4eeedc17b5d |