GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - pydoit/doit: CLI task management & automation tool

BranchesTags
Open more actions menu

Latest commit

 

History

1,529 Commits
1,529 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
doc
doc
 
 
doit
doit
 
 
tests
tests
 
 
.coveragerc
.coveragerc
 
 
.gitignore
.gitignore
 
 
AUTHORS
AUTHORS
 
 
CHANGES
CHANGES
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
DEV-README.rst
DEV-README.rst
 
 
LICENSE
LICENSE
 
 
README.rst
README.rst
 
 
TODO.txt
TODO.txt
 
 
bash_completion_doit
bash_completion_doit
 
 
dodo.py
dodo.py
 
 
pylintrc
pylintrc
 
 
pypi_long_description.rst
pypi_long_description.rst
 
 
pyproject.toml
pyproject.toml
 
 
setup.cfg
setup.cfg
 
 
uv_unreleased.toml
uv_unreleased.toml
 
 
zsh_completion_doit
zsh_completion_doit
 
 

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

  • Website & docs - https://pydoit.org
  • Project management on github - https://github.com/pydoit/doit
  • Discussions - https://github.com/pydoit/doit/discussions
  • X/twitter - https://x.com/pydoit

license

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

see LICENSE file

Funding

doit is maintained by a single person in spare time since 2008. Pull requests often wait for review because maintainer time is limited. Sponsorships pay for PR reviews, issue triage and releases.

  • GitHub Sponsors
  • Open Collective
  • Paid PR reviews, features & commercial support - see https://pydoit.org/support.html
https://opencollective.com/doit/tiers/backers.svg?avatarHeight=50

About

CLI task management & automation tool

pydoit.org

Topics

build-automationbuild-systembuild-toolclidata-pipelinedata-sciencehacktoberfestpythontask-runnerworkflowworkflow-automationworkflow-management

Resources

Readme
License

Contributing

Contributing
Activity
Custom properties

Stars

2.1k stars

Watchers

45 watching

Forks

205 forks
Report repository

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.