Hint

Start with the getting started tutorial, the cheatsheet, or…

Try doitoml Now

tutorials

learning-oriented tutorials

how-to

goal-oriented how-to guides

understanding

understanding-oriented discussions

reference

information-oriented reference material

doitoml#

Load declarative tasks for doit from TOML, JSON, YAML, and other files.

docs

install

build

docs

install from pypi install from conda-forge

build

See the full documentation for more information.

Install#

pip

conda (or mamba, micromamba)

pip install doitoml

conda install -c conda-forge doitoml

Features#

  • declarative automation in a single pyproject.toml, or…

    • other well-known configuration paths like package.json

    • any number of namespaced TOML, JSON, YAML files

      • from any key inside them

    • augment and simplify existing dodo.py workflows

  • reuse and transform paths and shell tokens

    • use globs and transforms to capture relationships between transformed files

  • flexibly configure environment variables

  • user-defined Python-based actions and up-to-date checkers

  • control the working directory and log paths of processes and actions

  • use templates like Jinja2 and JSON-e for advanced use cases

  • extensibility in any part of the task definition process

    • all core functionality implemented as entry_point-based plugins

Extras#

These features require additional pip or conda packages

pip

conda

feature

doitoml[all]

doitoml-with-all

all optional features

doitoml[jinja2]

doitoml-with-jinja2

Jinja2 task templates

doitoml[json-e]

doitoml-with-json-e

JSON-e task templates

doitoml[jsonschema]

doitoml-with-jsonschema

extra configuration validation

doitoml[yaml]

doitoml-with-yaml

YAML-based task sources

Usage#

doitoml provides no additional command line abilities, and is meant to drop in to the existing doit run CLI and other commands.

A Simple Example#

Note

The doitoml GitHub repository has many examples of different configurations, including the project’s own pyproject.toml and package.json.

The full documentation includes more information about building concise, declarative, reproducible tasks for your project.

The simplest way to use doitoml needs only a pyproject.toml, which doit will already check for configuration data.

# pyproject.toml
[project.optional-dependencies]
dev = ["doitoml"]

[tool.doit]
loader = "doitoml"
verbosity = 2

[tool.doitoml.tasks.hello]
actions = ['echo "Hello World!"']

After installing the dev extra dependency…

pip install -e .[dev]

… and running …

doit

… you would see …

.  hello:
Hello World!

Alternatives#

If you don’t like doitoml, or doit, or even Python, no worries! But please consider trying one of these lovely alternatives before giving up and making your team do everything The Hard Way:

Free Software#

doitoml is licensed under the BSD-3-Clause License.

documentation contents#