Skip to main content

doit - Automation Tool

Project description

doit comes from the idea of bringing the power of build-tools to execute any kind of task

doit can be uses as a simple Task Runner allowing you to easily define ad hoc tasks, helping you to organize all your project related tasks in an unified easy-to-use & discoverable way.

doit scales-up with an efficient execution model like a build-tool. doit creates a DAG (direct acyclic graph) and is able to cache task results. It ensures that only required tasks will be executed and in the correct order (aka incremental-builds).

The up-to-date check to cache task results is not restricted to looking for file modification on dependencies. Nor it requires “target” files. So it is also suitable to handle workflows not handled by traditional build-tools.

Tasks’ dependencies and creation can be done dynamically during it is execution making it suitable to drive complex workflows and pipelines.

doit is build with a plugin architecture allowing extensible commands, custom output, storage backend and “task loader”. It also provides an API allowing users to create new applications/tools leveraging doit functionality like a framework.

doit is a mature project being actively developed for more than 10 years. It includes several extras like: parallel execution, auto execution (watch for file changes), shell tab-completion, DAG visualisation, IPython integration, and more.

Sample Code

Define functions returning python dict with task’s meta-data.

Snippet from tutorial:

def task_imports():
    """find imports from a python module"""
    for name, module in PKG_MODULES.by_name.items():
        yield {
            'name': name,
            'file_dep': [module.path],
            'actions': [(get_imports, (PKG_MODULES, module.path))],
        }

def task_dot():
    """generate a graphviz's dot graph from module imports"""
    return {
        'targets': ['requests.dot'],
        'actions': [module_to_dot],
        'getargs': {'imports': ('imports', 'modules')},
        'clean': True,
    }

def task_draw():
    """generate image from a dot file"""
    return {
        'file_dep': ['requests.dot'],
        'targets': ['requests.png'],
        'actions': ['dot -Tpng %(dependencies)s -o %(targets)s'],
        'clean': True,
    }

Run from terminal:

$ doit list
dot       generate a graphviz's dot graph from module imports
draw      generate image from a dot file
imports   find imports from a python module
$ doit
.  imports:requests.models
.  imports:requests.__init__
.  imports:requests.help
(...)
.  dot
.  draw

Project Details

license

The MIT License Copyright (c) 2008-2021 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.34.1.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

doit-0.34.1-py3-none-any.whl (88.1 kB view details)

Uploaded Python 3

File details

Details for the file doit-0.34.1.tar.gz.

File metadata

  • Download URL: doit-0.34.1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for doit-0.34.1.tar.gz
Algorithm Hash digest
SHA256 49467c1bf8850a292e5fd0254ee1b219f6fd8202a0d3d4bf33af3c2dfb58d688
MD5 a412ed6f2460995e05a835cd9944409c
BLAKE2b-256 9b9aec336e8e8efded08f50b373f95a0e7315eb8bc43fd348e1237f8ccd77901

See more details on using hashes here.

File details

Details for the file doit-0.34.1-py3-none-any.whl.

File metadata

  • Download URL: doit-0.34.1-py3-none-any.whl
  • Upload date:
  • Size: 88.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.6

File hashes

Hashes for doit-0.34.1-py3-none-any.whl
Algorithm Hash digest
SHA256 772a6502f4fd2d31ef3520a9f36f4b6f81fba50c958c207943918f30a3444b30
MD5 ec95141ff19c40d9ee181d7824a1892f
BLAKE2b-256 ed8e388eefc0a92c69774e63f84e70a34a60f94d2516c961d3b5f9dd1112ebc8

See more details on using hashes here.

Supported by

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