Skip to main content

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doit-0.37.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

doit-0.37.0-py3-none-any.whl (85.8 kB view details)

Uploaded Python 3

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

Hashes for doit-0.37.0.tar.gz
Algorithm Hash digest
SHA256 d3c72e0e46a8fa1ddabea8f830762402dee090caf33c30c2295ac7010db8f09c
MD5 bc6305bb451021905e484af609437ff2
BLAKE2b-256 35f63a817d438799bda4d4e5fd136175cf7c328c074fadc1422dec3b374907e7

See more details on using hashes here.

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

Hashes for doit-0.37.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9f181566aa90faac515e276f85e6526019554ed7e13c12cf9dc094ffecf3e1b
MD5 5ade5ab207b6cd80cbd599fa1169fd3e
BLAKE2b-256 9c383d6dcbf8379cb86d71a2325210ca3469a33767d8254b74d8c343db26ce87

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.37.0 This release

2 files

0.36.0

2 files

0.35.0

2 files

0.34.2

2 files

0.34.1

2 files

0.34.0

2 files

0.33.1

2 files

0.33.0

2 files

0.32.0

1 file

0.31.1

2 files

0.31.0

1 file

0.30.3

1 file

0.30.2

1 file

0.30.1

1 file

0.30.0

1 file

0.29.0

1 file

0.28.0

1 file

0.27.0

1 file

0.26.0

1 file

0.25.0

1 file

0.24.0

1 file

0.23.0

1 file

0.22.1

1 file

0.22.0

1 file

0.21.1

1 file

0.21.0

1 file

0.20.0

1 file

0.19.0

1 file

0.18.1

1 file

0.18.0

1 file

0.17.0

1 file

0.16.1

1 file

0.16.0

1 file

0.15.0

1 file

0.14.0

1 file

0.13.0

1 file

0.12.0

1 file

0.11.0

1 file

0.10.0

1 file

0.9.0

1 file

0.8.0

1 file

0.7.0

1 file

0.6.0

1 file

0.5.1

1 file

0.5.0

1 file

0.4.0

1 file

0.3.0

1 file

0.2.0

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page