doit 0.37.0


pip install doit

  Latest version

Released: Feb 09, 2026


Meta
Author: Eduardo Naufel Schettino
Requires Python: >=3.10

Classifiers

Development Status
  • 5 - Production/Stable

Environment
  • Console

License
  • OSI Approved :: MIT License

Natural Language
  • English

Operating System
  • OS Independent
  • POSIX

Programming Language
  • Python :: 3
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

Intended Audience
  • Developers
  • Information Technology
  • Science/Research
  • System Administrators

Topic
  • Software Development :: Build Tools
  • Software Development :: Testing
  • Software Development :: Quality Assurance
  • Scientific/Engineering

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

license

The MIT License Copyright (c) 2008-2026 Eduardo Naufel Schettino

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies: