Skip to main content

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

license

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

Project details


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.

Supported by

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