# ⏱️ ⏰ 🕰️ Fastimer
[![PyPi](https://img.shields.io/pypi/v/fastimer)](https://pypi.org/project/fastimer/) [![pylint](https://github.com/vkostyanetsky/Fastimer/actions/workflows/pylint.yml/badge.svg)](https://github.com/vkostyanetsky/Fastimer/actions/workflows/pylint.yml) [![black](https://github.com/vkostyanetsky/Fastimer/actions/workflows/black.yml/badge.svg)](https://github.com/vkostyanetsky/Fastimer/actions/workflows/black.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
It is a simple CLI timer to track fasts, designed specifically to help you monitor your fasting intervals.
## 😮 Why did you make this?
Yeah, there are plenty of apps like this one, you are right. I wrote this one simply out of annoyance when the [Zero](https://www.zerolongevity.com/) app for Android once again refused to show me a fast I did. I was tapping on the calendar inside the application, but it was doing nothing.
I have no idea what was wrong with it. Anyway, the task is not that hard, so I just wrote my own timer ¯\\\_(ツ)\_/¯
## 🙃 How to install it?
I have nothing to surprise you here:
```commandline
pip install fastimer
```
## 🙂 How to use it?
It is a console application. So you can run this:
```commandline
fastimer --help
```
The script will show you the available commands.
By default, Fastimer expects to see your data in the user's home directory (`%USERPROFILE%\Fastimer` on Windows, for example). Of course, you can store it anywhere else using a directory junction or `--path` option.
To be short, you want a fasting timer to do four things.
### 1. To start a new fast
The first thing is creating a new fast. Usage:
```commandline
fastimer start 20
```
Twenty above is the number of hours you are going to spend fasting. You can omit this option (the default is 16).
### 2. To see how fasting is going
Once you have started a fast, it is convenient to use `fastimer show last` command. It shows elapsed time, remaining time, and something that looks like a progress bar to visualize your spilled blood, sweat, and tears :)
Here is an example:
```
ACTIVE FAST
From: Tue, 11:25
Goal: Wed, 07:25 (20 hours)
Fasting zones:
1. Anabolic: from Tue, 11:25
2. Catabolic: from Tue, 15:25 <-- you are here
3. Fat burning: from Wed, 03:25
4. Ketosis: from Wed, 11:25
5. Anabolic: from Fri, 11:25
######################------------------ 56.5%
Elapsed time: 11h 17m
Remaining: 08h 43m
```
Please note that the `fastimer show last` command is the default one. So you can simply type `fastimer show` or `fastimer`: both of them have the same meaning.
In addition, you can use `fastimer show prev` command to show a fast before the last one.
### 3. To stop or cancel the fast you've started
When the fast is active, the `fastimer stop` command allows you to stop your fast when you decide to do so. It means that the fast is over and you wish to store the fast in the app's history.
Usage:
```commandline
fastimer stop
```
Another option is to cancel the fast. It means you wish to delete the information about this fast by for some weird reason.
Usage:
```commandline
fastimer cancel
```
### 4. To see how well you're doing
```commandline
fastimer info
```
This command shows you statistical data and earned [achievements](ACHIEVEMENTS.md).
For instance:
```
FASTING STATISTICS
Completed Fasts: 33 out of 34
Total Fasting Time: 437h 26m
Average Fast Length: 13h 15m
Longest Fast Length: 18h 12m
Longest Fasting Streak: 20 days
Current Fasting Streak: 3 days
Achievements:
- COPPER WALKER (level 2 badge out of 9). Twenty five fasts completed!
- COPPER MAN OF HABIT (level 2 badge out of 9). Ten completed fasts in a row!
```
## 🤔 Questions
### Where can I see or edit my fasts?
The script stores all fasts in `fasts.yaml` file in the working directory. It has the [YAML](https://en.wikipedia.org/wiki/YAML) format, which is quite human-readable, so you can just open it in your lovely text editor.
For instance, the completed fast in the journal looks like this:
```yaml
- length: 16
started: 2022-07-20 19:59:14
stopped: 2022-07-21 12:00:33
```
The first parameter is the length of the fast, the second is the start date, and the third is the completion date.
For an ongoing fast, the third parameter is omitted.
Raw data
{
"_id": null,
"home_page": "https://github.com/vkostyanetsky/Fastimer",
"name": "fastimer",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "fasting fast",
"author": "Vlad Kostyanetsky",
"author_email": "vlad@kostyanetsky.me",
"download_url": "https://files.pythonhosted.org/packages/2e/72/b0eb870ce447ec757a8c40a28d34da5aded33eaa3ef2c4f0b5d8ef00969e/fastimer-1.3.1.tar.gz",
"platform": null,
"description": "# \u23f1\ufe0f \u23f0 \ud83d\udd70\ufe0f Fastimer\n\n[![PyPi](https://img.shields.io/pypi/v/fastimer)](https://pypi.org/project/fastimer/) [![pylint](https://github.com/vkostyanetsky/Fastimer/actions/workflows/pylint.yml/badge.svg)](https://github.com/vkostyanetsky/Fastimer/actions/workflows/pylint.yml) [![black](https://github.com/vkostyanetsky/Fastimer/actions/workflows/black.yml/badge.svg)](https://github.com/vkostyanetsky/Fastimer/actions/workflows/black.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nIt is a simple CLI timer to track fasts, designed specifically to help you monitor your fasting intervals. \n\n## \ud83d\ude2e Why did you make this?\n\nYeah, there are plenty of apps like this one, you are right. I wrote this one simply out of annoyance when the [Zero](https://www.zerolongevity.com/) app for Android once again refused to show me a fast I did. I was tapping on the calendar inside the application, but it was doing nothing.\n\nI have no idea what was wrong with it. Anyway, the task is not that hard, so I just wrote my own timer \u00af\\\\\\_(\u30c4)\\_/\u00af\n\n## \ud83d\ude43 How to install it?\n\nI have nothing to surprise you here:\n\n```commandline\npip install fastimer\n```\n\n## \ud83d\ude42 How to use it?\n\nIt is a console application. So you can run this:\n\n```commandline\nfastimer --help\n```\n\nThe script will show you the available commands. \n\nBy default, Fastimer expects to see your data in the user's home directory (`%USERPROFILE%\\Fastimer` on Windows, for example). Of course, you can store it anywhere else using a directory junction or `--path` option.\n\nTo be short, you want a fasting timer to do four things.\n\n### 1. To start a new fast\n\nThe first thing is creating a new fast. Usage:\n\n```commandline\nfastimer start 20\n```\n\nTwenty above is the number of hours you are going to spend fasting. You can omit this option (the default is 16).\n\n### 2. To see how fasting is going\n\nOnce you have started a fast, it is convenient to use `fastimer show last` command. It shows elapsed time, remaining time, and something that looks like a progress bar to visualize your spilled blood, sweat, and tears :)\n\nHere is an example:\n\n```\nACTIVE FAST\n\nFrom: Tue, 11:25\nGoal: Wed, 07:25 (20 hours)\n\nFasting zones:\n\n1. Anabolic: from Tue, 11:25\n2. Catabolic: from Tue, 15:25 <-- you are here\n3. Fat burning: from Wed, 03:25\n4. Ketosis: from Wed, 11:25\n5. Anabolic: from Fri, 11:25\n\n######################------------------ 56.5%\n\nElapsed time: 11h 17m\nRemaining: 08h 43m\n```\n\nPlease note that the `fastimer show last` command is the default one. So you can simply type `fastimer show` or `fastimer`: both of them have the same meaning.\n\nIn addition, you can use `fastimer show prev` command to show a fast before the last one. \n\n### 3. To stop or cancel the fast you've started\n\nWhen the fast is active, the `fastimer stop` command allows you to stop your fast when you decide to do so. It means that the fast is over and you wish to store the fast in the app's history.\n\nUsage:\n\n```commandline\nfastimer stop\n```\n\nAnother option is to cancel the fast. It means you wish to delete the information about this fast by for some weird reason.\n\nUsage:\n\n```commandline\nfastimer cancel\n```\n\n### 4. To see how well you're doing\n\n```commandline\nfastimer info\n```\n\nThis command shows you statistical data and earned [achievements](ACHIEVEMENTS.md).\n\nFor instance:\n\n```\nFASTING STATISTICS\n\nCompleted Fasts: 33 out of 34\nTotal Fasting Time: 437h 26m\nAverage Fast Length: 13h 15m\nLongest Fast Length: 18h 12m\nLongest Fasting Streak: 20 days\nCurrent Fasting Streak: 3 days\n\nAchievements:\n- COPPER WALKER (level 2 badge out of 9). Twenty five fasts completed!\n- COPPER MAN OF HABIT (level 2 badge out of 9). Ten completed fasts in a row!\n```\n\n## \ud83e\udd14 Questions \n\n### Where can I see or edit my fasts?\n\nThe script stores all fasts in `fasts.yaml` file in the working directory. It has the [YAML](https://en.wikipedia.org/wiki/YAML) format, which is quite human-readable, so you can just open it in your lovely text editor.\n\nFor instance, the completed fast in the journal looks like this:\n\n```yaml\n- length: 16\n started: 2022-07-20 19:59:14\n stopped: 2022-07-21 12:00:33\n```\n\nThe first parameter is the length of the fast, the second is the start date, and the third is the completion date.\n\nFor an ongoing fast, the third parameter is omitted.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A simple CLI tool to track food you consume",
"version": "1.3.1",
"project_urls": {
"Homepage": "https://github.com/vkostyanetsky/Fastimer"
},
"split_keywords": [
"fasting",
"fast"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d6e8686c037f390528f155f75259394bbb3b3bd1600aef8ebe110d32adb54fb2",
"md5": "8acb19729b722790247b58c9b286d420",
"sha256": "8c306fde0b7ba19301cba23095e83fe0ac0751339d516fc6dedb46a8d8164e7a"
},
"downloads": -1,
"filename": "fastimer-1.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8acb19729b722790247b58c9b286d420",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 8889,
"upload_time": "2023-08-22T19:26:16",
"upload_time_iso_8601": "2023-08-22T19:26:16.267740Z",
"url": "https://files.pythonhosted.org/packages/d6/e8/686c037f390528f155f75259394bbb3b3bd1600aef8ebe110d32adb54fb2/fastimer-1.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e72b0eb870ce447ec757a8c40a28d34da5aded33eaa3ef2c4f0b5d8ef00969e",
"md5": "63ff5cd7366db5d2633c7e38aa06a2bc",
"sha256": "bfde1afa6906e68fb08c60339631aa8abe263dd9daed0bbf050ade450b85e2b0"
},
"downloads": -1,
"filename": "fastimer-1.3.1.tar.gz",
"has_sig": false,
"md5_digest": "63ff5cd7366db5d2633c7e38aa06a2bc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 7886,
"upload_time": "2023-08-22T19:26:17",
"upload_time_iso_8601": "2023-08-22T19:26:17.299023Z",
"url": "https://files.pythonhosted.org/packages/2e/72/b0eb870ce447ec757a8c40a28d34da5aded33eaa3ef2c4f0b5d8ef00969e/fastimer-1.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-22 19:26:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "vkostyanetsky",
"github_project": "Fastimer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "fastimer"
}