Welcome to tasks3’s documentation!¶
tasks3¶
A commandline tool to create and manage tasks and todos.
Most task management tools are their own applications, so to manage tasks you have to perform context switching by leaving what you’re working on to go to the task manager application.
tasks3
aims to solve that by bringing your tasks to you instead.
Each task is automatically assigned to the directory it was created in and you can easily retrieve tasks under a directory.
- Free software: GNU General Public License v3
- Documentation: https://tasks3.readthedocs.io.
Features¶
Help¶
It is easy to explore all capabilities of tasks3
by running tasks3 --help
.
Each command also has its own help page which can be accessed by running:
$ tasks3 <command> --help
Create Tasks¶
Easily create tasks from the commandline and delegate them to folders.
Create a task in a specific folder with default settings.
$ tasks3 add --title "Think of a cool name" \
--folder "~/Documents/story" \
--yes
Added Task:
[e1c100] Think of a cool name (⏰⏰ ) (🚨🚨 )
[path: ~/Documents/story]
Create a task in a current folder with custom settings and description.
$ tasks3 add --title "Try new model" \
--urgency 4 --importance 3 \
--description "Try:\n - model with 3 layers.\n - model with 4 layers." \
--yes
Added Task:
[a0a5f4] Try new model (⏰⏰⏰⏰) (🚨🚨🚨 )
Try:
- model with 3 layers.
- model with 4 layers.
Edit Existing Tasks¶
You can edit existing tasks with the tasks3 edit
command.
For example: You can use edit
to update the urgency of a task.
$ tasks3 edit --urgency 4 e1c100
Updated Task:
[e1c100] Think of a cool name (⏰⏰⏰⏰) (🚨🚨 )
[path: ~/Documents/story]
Search Tasks¶
You can search for tasks using various filters.
You can search for tasks with a specific importance value.
$ tasks3 search --importance 2
[4a14d0] What is right here and now
[f79155] Think of a cool name [path: /home/<user>/Documents/project]
[2ce91b] See home [path: /home]
You can restrict search to a folder and its sub-directories.
$ tasks3 search --folder ~/Documents/project --output-format yaml
title: Think of a Cool name
urgency: 2
importance: 2
tags: null
folder: /home/<user>/Documents/project
You can also search for sub-strings in task title or description.
It is also possible to restrict the search to tasks that have a specific set of tags.
Run tasks3 search --help
to get see a full list off options.
Show Tasks¶
You can show all tasks under current directory.
$ tasks3 show
[a0a5f4] Try new model (⏰⏰⏰⏰) (🚨🚨🚨 )
Try:
model with 3 layers.
model with 4 layers.
[4a14d0] What is right here and now (⏰⏰ ) (🚨🚨 )
You can also show a particular task by specifying its id.
$ tasks3 show 1d8a9a
[1d8a9a] Give a Title to this Task. (⏰⏰ ) (🚨🚨🚨🚨)
(Hello tasks3)
Task with
multi-line
desc
If you prefer to see the task in a different format, you can use the --output-format
option.
$ tasks3 show --output-format json 1d8a9a
{
"id": "1d8a9a",
"title": "Give a Title to this Task.",
"urgency": 2,
"importance": 4,
"tags": [
"Hello tasks3"
],
"folder": "/home/<user>/Documents/tasks3",
"description": "Task with \nmulti-line \ndesc"
}
Complete Tasks¶
You can use the tasks3 mark <task_id>
or tasks3 edit --done <task_id>
command to mark a task as completed.
$ tasks3 mark 2e0b84
[2e0b84] A̶d̶d̶i̶n̶g̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶f̶o̶r̶ ̶t̶a̶s̶k̶ ̶c̶o̶m̶p̶l̶e̶t̶i̶o̶n̶ (⏰⏰ ) (🚨🚨 )
Delete Tasks¶
You can use the tasks3 delete <task_id>
command to delete a task.
Note
Deleting is a destructive action, prefer to mark the task as complete to hide it.
$ tasks3 remove --yes 2e0b84
Removed Task: [2e0b84] Adding support for task deletion (⏰⏰ ) (🚨🚨 )
Shell Integration¶
tasks3 supports shell integration for bash, zsh, and fish; tasks3 will automatically
run tasks3 show -o oneline
when you cd
into a directory to show
the tasks in that directory.
You can setup shell integration by adding the following command to your .rc
file.
eval "$(tasks3 shell $(basename $SHELL))"
Note
Pull requests to support additional shells are greatly appreciated. Please see Contributing page for information on how to contribute.
Credits¶
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
Installation¶
Stable release¶
To install tasks3, run this command in your terminal:
$ pip install tasks3
This is the preferred method to install tasks3, as it will always install the most recent stable release.
If you don’t have pip installed, this Python installation guide can guide you through the process.
From sources¶
The sources for tasks3 can be downloaded from the Github repo.
You can either clone the public repository:
$ git clone git://github.com/hXtreme/tasks3
Or download the tarball:
$ curl -OJL https://github.com/hXtreme/tasks3/tarball/master
Once you have a copy of the source, you can install it with:
$ pip install -e .
$ pip install -r requirements_dev.txt
Contributing¶
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
You can contribute in many ways:
Types of Contributions¶
Report Bugs¶
Report bugs at https://git.parekh.page/tasks3/issues.
If you are reporting a bug, please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
Fix Bugs¶
Look through the GitHub issues for bugs. Anything tagged with “bug” and “help wanted” is open to whoever wants to implement it.
Implement Features¶
Look through the GitHub issues for features. Anything tagged with “enhancement” and “help wanted” is open to whoever wants to implement it.
Write Documentation¶
tasks3 could always use more documentation, whether as part of the official tasks3 docs, in docstrings, or even on the web in blog posts, articles, and such.
Submit Feedback¶
The best way to send feedback is to file an issue at https://git.parekh.page/tasks3/issues.
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that contributions are welcome :)
Get Started!¶
Ready to contribute? Here’s how to set up tasks3 for local development.
Fork the tasks3 repo on GitHub.
Clone your fork locally:
$ git clone git@github.com:your_name_here/tasks3.git
Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:
$ mkvirtualenv tasks3 $ cd tasks3/ $ pip install -e . $ pip install -r requirements_dev.txt
Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:
$ flake8 tasks3 tests $ tox
To get flake8 and tox, just pip install them into your virtualenv.
Commit your changes and push your branch to GitHub:
$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
[Optional] Add your details (alias, email, website) to
AUTHORS.rst
file.Submit a pull request through the GitHub website.
Pull Request Guidelines¶
Before you submit a pull request, check that it meets these guidelines:
- The pull request should include tests.
- If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
- The pull request should work for Python 3.9, 3.10, and for PyPy. Check https://git.parekh.page/tasks3/actions/workflows/tox-test.yml and make sure that the tests pass for all supported Python versions.
Deploying¶
A reminder for the maintainers on how to deploy. Make sure all your changes are committed (including an entry in HISTORY.rst). Then run:
$ bump2version patch # possible: major / minor / patch
$ git push
$ git push --tags
A github workflow will trigger if tests pass and it will deploy the package to PyPI.
Credits¶
Development Lead¶
- Harsh Parekh <harsh_parekh@outlook.com>
Contributors¶
None yet. Why not be the first?
History¶
0.8.0: (2023-02-22)¶
- Add support to mark tasks as done.
- Update dependencies
0.7.0: (2022-07-30)¶
- Added support to delete a task from the cli.
- Updated dependencies.
0.6.0 (2022-05-16)¶
- Added support to edit existing tasks.
- Update dev-requirements.
0.5.1 (2022-05-06)¶
- Added shell integration for fish.
0.5.0 (2022-05-06)¶
- Added shell integration for zsh and bash.
- Improve the index page.
- Add more info to Contributing page.
0.4.4 (2022-05-03)¶
- Improve docs
0.4.3 (2022-05-03)¶
- Fix python version in setup.py
0.4.2 (2022-05-03)¶
- Upgrade development status to Alpha.
0.4.1 (2022-05-03)¶
- Resolve a SNAFU with tags.
0.4.0 (2022-05-03)¶
- Add the ability to search for tasks.
- Add json output format for tasks.
- Implement the
tasks3 task show
cli endpoint. - Update docs.
- Add Output format preference to config.
- Make the cli interface easier to use (flatten the task command tree)
0.3.3 (2022-05-02)¶
- Switch docs theme to
sphinx_rtd_theme
.
0.3.2 (2022-05-02)¶
- Add workflow to check for package compatability with PyPI. This should make sure that the issue with v0.3.0 does not occur again.
0.3.1 (2022-05-02)¶
- Fix README to render on PyPI.
0.3.0 (2022-05-02)¶
- Remove
tasks3 db init
cli command. - Implement
tasks3 task add
cli command. - Implement
task.yaml
,task.short
,task.one_line
methods to display task.
0.2.8 (2022-05-01)¶
- Use dataclass to store configuration settings.
- Flatten tasks3.config module into config.py file.
0.2.7 (2022-04-30)¶
- Remove usage of deprecated SQLAlchemy api
db_engine.table_names
. - Remove deprecated pytest configuration option
collect_ignore
.
0.2.6 (2022-04-30)¶
- Flatten tasks3.db.model module into models.py
- Linting changes
- Minor refactoring
0.2.4 (2022-04-30)¶
- Remove pytest from dependency and let tox handle testing.
0.2.3 (2022-04-30)¶
- Migrate testing to github-workflow
- Update SQLAlchemy package version.
- Switch deployment workflow to python 3.9
0.2.0 (2022-04-30)¶
- Drop support for python<=3.8
0.1.0 (2020-08-17)¶
- Implement tasks3.add
- Implement tasks3.edit
- Implement tasks3.remove
0.0.11 (2020-08-04)¶
- Add support for a yaml configuration file.
- Add database to store Tasks, db models and api to interact with db.
- Switch to using requirements.txt for managing dependency and add back the support for py35.
- Add a bunch of type annotations.
- Update dependency:
- pip to 20.2
- pytest to 6.0.1
- tox to 3.18.1
- coverage to 5.2.1
0.0.9 - 0.0.10 (2020-07-26)¶
- Fix version numbers and git tags.
0.0.8 (2020-07-26)¶
- Implement a CLI for tasks3.
- Add black (formatter).
- Add some basic test-cases.
0.0.2 - 0.0.7 (2020-07-20)¶
- Move deployment away from Travis to Github workflow.
0.0.1 (2020-07-20)¶
- First release on PyPI.
tasks3¶
A commandline tool to create and manage tasks and todos.
Most task management tools are their own applications, so to manage tasks you have to perform context switching by leaving what you’re working on to go to the task manager application.
tasks3
aims to solve that by bringing your tasks to you instead.
Each task is automatically assigned to the directory it was created in and you can easily retrieve tasks under a directory.
- Free software: GNU General Public License v3
- Documentation: https://tasks3.readthedocs.io.
Features¶
Help¶
It is easy to explore all capabilities of tasks3
by running tasks3 --help
.
Each command also has its own help page which can be accessed by running:
$ tasks3 <command> --help
Create Tasks¶
Easily create tasks from the commandline and delegate them to folders.
Create a task in a specific folder with default settings.
$ tasks3 add --title "Think of a cool name" \
--folder "~/Documents/story" \
--yes
Added Task:
[e1c100] Think of a cool name (⏰⏰ ) (🚨🚨 )
[path: ~/Documents/story]
Create a task in a current folder with custom settings and description.
$ tasks3 add --title "Try new model" \
--urgency 4 --importance 3 \
--description "Try:\n - model with 3 layers.\n - model with 4 layers." \
--yes
Added Task:
[a0a5f4] Try new model (⏰⏰⏰⏰) (🚨🚨🚨 )
Try:
- model with 3 layers.
- model with 4 layers.
Edit Existing Tasks¶
You can edit existing tasks with the tasks3 edit
command.
For example: You can use edit
to update the urgency of a task.
$ tasks3 edit --urgency 4 e1c100
Updated Task:
[e1c100] Think of a cool name (⏰⏰⏰⏰) (🚨🚨 )
[path: ~/Documents/story]
Search Tasks¶
You can search for tasks using various filters.
You can search for tasks with a specific importance value.
$ tasks3 search --importance 2
[4a14d0] What is right here and now
[f79155] Think of a cool name [path: /home/<user>/Documents/project]
[2ce91b] See home [path: /home]
You can restrict search to a folder and its sub-directories.
$ tasks3 search --folder ~/Documents/project --output-format yaml
title: Think of a Cool name
urgency: 2
importance: 2
tags: null
folder: /home/<user>/Documents/project
You can also search for sub-strings in task title or description.
It is also possible to restrict the search to tasks that have a specific set of tags.
Run tasks3 search --help
to get see a full list off options.
Show Tasks¶
You can show all tasks under current directory.
$ tasks3 show
[a0a5f4] Try new model (⏰⏰⏰⏰) (🚨🚨🚨 )
Try:
model with 3 layers.
model with 4 layers.
[4a14d0] What is right here and now (⏰⏰ ) (🚨🚨 )
You can also show a particular task by specifying its id.
$ tasks3 show 1d8a9a
[1d8a9a] Give a Title to this Task. (⏰⏰ ) (🚨🚨🚨🚨)
(Hello tasks3)
Task with
multi-line
desc
If you prefer to see the task in a different format, you can use the --output-format
option.
$ tasks3 show --output-format json 1d8a9a
{
"id": "1d8a9a",
"title": "Give a Title to this Task.",
"urgency": 2,
"importance": 4,
"tags": [
"Hello tasks3"
],
"folder": "/home/<user>/Documents/tasks3",
"description": "Task with \nmulti-line \ndesc"
}
Complete Tasks¶
You can use the tasks3 mark <task_id>
or tasks3 edit --done <task_id>
command to mark a task as completed.
$ tasks3 mark 2e0b84
[2e0b84] A̶d̶d̶i̶n̶g̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶f̶o̶r̶ ̶t̶a̶s̶k̶ ̶c̶o̶m̶p̶l̶e̶t̶i̶o̶n̶ (⏰⏰ ) (🚨🚨 )
Delete Tasks¶
You can use the tasks3 delete <task_id>
command to delete a task.
Note
Deleting is a destructive action, prefer to mark the task as complete to hide it.
$ tasks3 remove --yes 2e0b84
Removed Task: [2e0b84] Adding support for task deletion (⏰⏰ ) (🚨🚨 )
Shell Integration¶
tasks3 supports shell integration for bash, zsh, and fish; tasks3 will automatically
run tasks3 show -o oneline
when you cd
into a directory to show
the tasks in that directory.
You can setup shell integration by adding the following command to your .rc
file.
eval "$(tasks3 shell $(basename $SHELL))"
Note
Pull requests to support additional shells are greatly appreciated. Please see Contributing page for information on how to contribute.
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.