Skip to main content

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. Access the documentation of the library on the airoh docs website for a list of available airoh tasks.

Installation

Installation through PIP:

pip install airoh

For local deployment:

git clone https://github.com/airoh-pipeline/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_notebooks, setup_env_python

Now you can call:

invoke run-notebooks
invoke setup-env-python

Keeping a project honest

Two modules exist for the parts of reproducibility that no pipeline run can check by itself.

airoh.verify compares a project against its own documentation — the task list in the README, the packages in requirements.txt versus pyproject.toml, the paths the docs name, the entries in each data folder versus its CONTENT.md, the size and type of what git tracks. It runs a flat list of independent checks and exits non-zero when any fails. Wire it up as its own task and run it before committing; never call it from run, so that reproducing results never depends on documentation hygiene.

airoh.provenance writes two records: record_sources describes what every declared asset actually resolved to (a URL, a real path behind a symlink, the commit of the repository it belongs to), and record_run describes what produced the current outputs (project commit, environment, input manifest, output checksums). Neither can fail a pipeline — a provenance record is documentation, not a precondition. Where datalad is in use it remains the only thing that can retrieve a past state; these records are what you get without it.

# tasks.py
from airoh.verify import verify            # noqa: F401  (exposes `invoke verify`)
from airoh.provenance import record_run, record_sources

The Inkscape montage pattern

airoh.figures solves a problem every multi-panel-figure pipeline has: the layout is authored by hand in Inkscape, but the panels are rendered by matplotlib, and the two disagree about size. The montage SVG is the single source of truth for layout — figure_layout reads out the box each linked panel is placed in and writes it to panel_sizes.json, then a notebook calls panel_size(name, default) to render that panel at exactly the size it will be placed at, so text is never stretched. compose_figure renders the montage to PNG/PDF/SVG/EPS via Inkscape, an optional system binary — a missing one warns and skips the export rather than failing the run.

# tasks.py
from airoh.figures import clean_figure, compose_figure, figure_layout

Requirements

  • Python ≥ 3.8
  • invoke ≥ 2.0
  • Docker (for container tasks)
  • Apptainer (optional, for .sif support)
  • jupyter (if using run-notebooks)
  • Inkscape (optional, only for compose-figure)

Note that a few more requirements are required for development, in particular pdoc which is used to generate the documentation website.

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 © airoh contributors

Metadata

Release files for airoh 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airoh 0.5.0
File Size Uploaded Provenance
airoh-0.5.0.tar.gz 48.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for airoh 0.5.0
File Interpreter ABI Platform
airoh-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 84.9 kB

Release files / airoh-0.5.0.tar.gz

Download URL airoh-0.5.0.tar.gz
Size 48.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0d5827048d4b271681f43d47b8f60eb1462cb80e2c71bab4b1e724c4fb5c9d86
BLAKE2b-256 checksum
How to use checksums
f194b8651b7efe7d6cca691b31b63c950c65ad0b8a06b0b869c23378221e719a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release files / airoh-0.5.0-py3-none-any.whl

Download URL airoh-0.5.0-py3-none-any.whl
Size 36.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6132e7f15603213a4513b7a4652837e8595ecc011ce671f03c7ce1de008e1d5a
BLAKE2b-256 checksum
How to use checksums
0d85dfab7e52494ce2a7a3bee8d8ba7b14c65a6dbb9df7fae1df3062c2b3a30a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Security for airoh 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for airoh-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page