A lightweight task library for reproducible workflows
Project description
airoh
Because reproducible science takes clean tasks. And why don't you have a cup of relaxing jasmin tea?
airoh is a lightweight Python task library built with invoke, designed for reproducible research workflows. It provides pre-written, modular task definitions that can be easily reused in your own tasks.py file — no boilerplate, just useful automation.
Installation
Installation through PIP:
pip install airoh
For local deployment:
git clone https://github.com/simexp/airoh.git
cd airoh
pip install -e .
Usage
You can use airoh in your project simply by importing tasks in your tasks.py file.
Minimal Example
# tasks.py
from airoh.utils import run_figures, setup_env_python
Now you can call:
invoke run-figures
invoke setup-env-python
Available Tasks
From containers.py
docker-build— Build a Docker image from a Dockerfiledocker-archive— Archive the Docker image to.tar.gzdocker-setup— Download and load a Docker image from URLdocker-run— Run aninvoketask inside Dockerapptainer-archive— Build an Apptainer image from Dockerapptainer-run— Run aninvoketask inside Apptainer
From utils.py
ensure_submodule— Ensure a git submodule is present and up to dateinstall_local— Install a local Python package in editable mode using pipsetup-env-python— Install Python dependencies from a filerun-figures— Run Jupyter notebooks to generate figuresensure-dir-exist: Creates a directory listed ininvoke.yamlif it doesn't already exist.clean_folder— Remove an entire directory recursively. Use with caution!!!
From datalad.py
get-data— Install and retrieve a subdataset listed ininvoke.yamlimport-archive— Download a remote archive (e.g. from Zenodo), extract its contents withdatalad, and optionally drop the original fileimport-file— Download a remote file (e.g. from Zenodo), usingdatalad
Requirements
- Python ≥ 3.8
invoke≥ 2.0- Docker (for container tasks)
- Apptainer (optional, for
.sifsupport) jupyter(if usingrun-figures)
Philosophy
Inspired by Uncle Iroh from Avatar: The Last Airbender, airoh aims to bring simplicity, reusability, and clarity to research infrastructure — one well-structured task at a time. It is meant to support a concrete implementation of the YODA principles.
License
MIT © Lune Bellec
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file airoh-0.1.4.tar.gz.
File metadata
- Download URL: airoh-0.1.4.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ddd52ec4afd4576cdd7546103944b3cadf6d58b3ab2b7b5c441ebf92ee08a91
|
|
| MD5 |
8573c977cd14d1b6706b60dbc70c5a1d
|
|
| BLAKE2b-256 |
fb55382f333b2cd1c83353c22510fc4db0506aa435d701bdf167a0028eb9f159
|
File details
Details for the file airoh-0.1.4-py3-none-any.whl.
File metadata
- Download URL: airoh-0.1.4-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
012e60aec0f54ef58bd980d25e360fa427358924c76145face313700d865c450
|
|
| MD5 |
8089330e124a18566cc18751de251ee0
|
|
| BLAKE2b-256 |
df0f4d86410452d0d393cda0396424b05820bbe62e3aeb40dadbdb347ace41c3
|