doit - Automation Tool
Project description
Define tasks in Python. Run only what changed.
doit is a task management & automation tool like make, but in pure Python. It tracks file dependencies, caches results, and skips tasks that are already up-to-date. No DSL, no YAML - just Python functions.
Quick Example
Create a dodo.py:
def task_hello():
"""create a greeting file"""
return {
'actions': ['echo "Hello from doit" > hello.txt'],
'targets': ['hello.txt'],
'clean': True,
}
def task_shout():
"""convert greeting to uppercase"""
return {
'actions': ['tr a-z A-Z < hello.txt > shout.txt'],
'file_dep': ['hello.txt'],
'targets': ['shout.txt'],
'clean': True,
}
Run it:
$ pip install doit
$ doit
. hello
. shout
$ doit # nothing to do - already up-to-date
-- hello
-- shout
Key Features
Incremental builds - tracks file dependencies and targets, re-runs only what changed
DAG execution - tasks run in correct dependency order
Python-native - tasks are plain Python dicts and functions, use any library
Parallel execution - run independent tasks concurrently (multiprocessing or threading)
Subtask generation - yield multiple tasks from a single function
Computed dependencies - calc_dep for dynamic dependency graphs
Plugin architecture - extensible commands, reporters, backends, and task loaders
Project Details
Website & docs - https://pydoit.org
Project management on github - https://github.com/pydoit/doit
Discussion group - https://groups.google.com/forum/#!forum/python-doit
X/twitter - https://x.com/pydoit
license
The MIT License Copyright (c) 2008-2026 Eduardo Naufel Schettino
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doit-0.37.0.tar.gz.
File metadata
- Download URL: doit-0.37.0.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3c72e0e46a8fa1ddabea8f830762402dee090caf33c30c2295ac7010db8f09c
|
|
| MD5 |
bc6305bb451021905e484af609437ff2
|
|
| BLAKE2b-256 |
35f63a817d438799bda4d4e5fd136175cf7c328c074fadc1422dec3b374907e7
|
File details
Details for the file doit-0.37.0-py3-none-any.whl.
File metadata
- Download URL: doit-0.37.0-py3-none-any.whl
- Upload date:
- Size: 85.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9f181566aa90faac515e276f85e6526019554ed7e13c12cf9dc094ffecf3e1b
|
|
| MD5 |
5ade5ab207b6cd80cbd599fa1169fd3e
|
|
| BLAKE2b-256 |
9c383d6dcbf8379cb86d71a2325210ca3469a33767d8254b74d8c343db26ce87
|