doitoml
Load declarative tasks for doit from TOML, JSON, YAML, and other files.
| docs | install | 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.pyworkflows
- other well-known configuration paths like
- 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
- all core functionality implemented as
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
doitomlGitHub repository has many examples of different configurations, including the project's ownpyproject.tomlandpackage.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.
Metadata
Release files for doitoml 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| doitoml-0.2.0.tar.gz | 84.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| doitoml-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 129.8 kB
Release files / doitoml-0.2.0.tar.gz
| Download URL | doitoml-0.2.0.tar.gz |
|---|---|
| Size | 84.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d81bc676ba42ef5558116accb5b35c08a40b679c3251f6d99484b0b6fa6f79f8
|
|
BLAKE2b-256 checksum How to use checksums |
9398ac4521ac9ee95317e3d6605a900a67d42d3f2e7b9d98742d58b91c75a57e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / doitoml-0.2.0-py3-none-any.whl
| Download URL | doitoml-0.2.0-py3-none-any.whl |
|---|---|
| Size | 45.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc8d188be44fcd2944995dc63d0e45274fd39388eae175ba605e94fa1087dee7
|
|
BLAKE2b-256 checksum How to use checksums |
142a582784dada5dec971be0a9c5d800f6176b614f8633f75b5a8fc7ca79b13b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|