Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pydoit/doit

Open more actions menu

Repository files navigation

README

https://github.com/pydoit/doit/actions/workflows/ci.yml/badge.svg?branch=master https://codecov.io/gh/pydoit/doit/branch/master/graph/badge.svg?token=wxKa1h11zn

pydoit - automation tool

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
$ doit clean      # remove generated files
$ doit            # runs again
.  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

Links

license

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

see LICENSE file

Financial contributions on Open Collective

https://opencollective.com/doit/tiers/backers.svg?avatarHeight=50
Morty Proxy This is a proxified and sanitized view of the page, visit original site.