Repolode
pydoit

pydoit/doit

A Python task runner and build tool that defines tasks as plain Python functions and skips work that is already up-to-date.

Stars
2,099
Forks
204
Open issues
112
Last commit
16 hours ago

What is it?

doit is a task management and automation tool similar to make, but tasks are written as ordinary Python functions and dictionaries instead of a dedicated DSL or YAML. Tasks are declared in a dodo.py file, and doit runs them in dependency order.

It tracks file dependencies and targets, caches results, and skips any task whose inputs have not changed since the last run. Tasks can generate subtasks from a single function, compute dependencies dynamically with calc_dep, and run concurrently using multiprocessing or threading.

The tool is extensible through a plugin architecture covering commands, reporters, backends and task loaders, so the Python code in tasks can use any library.

Key features

  • 01Incremental builds that re-run only tasks whose dependencies changed
  • 02Tasks defined as plain Python functions and dictionaries
  • 03Dependency-ordered execution of a task graph
  • 04Parallel execution via multiprocessing or threading
  • 05Subtask generation and dynamic dependencies with calc_dep
  • 06Plugin system for commands, reporters, backends and loaders

Use cases

  • Automating build steps for projects that need file-based incremental rebuilds
  • Orchestrating data processing pipelines written in Python
  • Replacing ad-hoc shell scripts with versioned, dependency-aware Python tasks

Quick start

  1. 1

    Install doit from PyPI

    pip install doit
  2. 2

    Create a dodo.py file with task functions (see the Quick Example in the README)

  3. 3

    Run doit in the directory containing dodo.py

    doit

In collections

Topics

FAQ

What is doit?
A Python task runner and build tool that defines tasks as plain Python functions and skips work that is already up-to-date. doit is a task management and automation tool similar to make, but tasks are written as ordinary Python functions and dictionaries instead of a dedicated DSL or YAML. Tasks are declared in a dodo.py file, and doit runs them in dependency order.
Is doit free to use? What license does it have?
doit is open source under the MIT license. Check the license terms before using it in commercial products.
Is doit still maintained?
Actively maintained. The last commit to doit was on Nov 7, 2026.
What can I use doit for?
Automating build steps for projects that need file-based incremental rebuilds Orchestrating data processing pipelines written in Python Replacing ad-hoc shell scripts with versioned, dependency-aware Python tasks
How do I install doit?
Install doit from PyPI: pip install doit Create a dodo.py file with task functions (see the Quick Example in the README) Run doit in the directory containing dodo.py: doit
Where can I get doit?
The source code and installation instructions are on GitHub: https://github.com/pydoit/doit

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects