Skip to main content

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 Dockerfile
  • docker-archive — Archive the Docker image to .tar.gz
  • docker-setup — Download and load a Docker image from URL
  • docker-run — Run an invoke task inside Docker
  • apptainer-archive — Build an Apptainer image from Docker
  • apptainer-run — Run an invoke task inside Apptainer

From utils.py

  • ensure_submodule — Ensure a git submodule is present and up to date
  • install_local — Install a local Python package in editable mode using pip
  • setup-env-python — Install Python dependencies from a file
  • run-figures — Run Jupyter notebooks to generate figures
  • ensure-dir-exist: Creates a directory listed in invoke.yaml if 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 in invoke.yaml
  • import-archive — Download a remote archive (e.g. from Zenodo), extract its contents with datalad, and optionally drop the original file
  • import-file — Download a remote file (e.g. from Zenodo), using datalad

Requirements

  • Python ≥ 3.8
  • invoke ≥ 2.0
  • Docker (for container tasks)
  • Apptainer (optional, for .sif support)
  • jupyter (if using run-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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airoh-0.1.4.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airoh-0.1.4-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

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

Hashes for airoh-0.1.4.tar.gz
Algorithm Hash digest
SHA256 7ddd52ec4afd4576cdd7546103944b3cadf6d58b3ab2b7b5c441ebf92ee08a91
MD5 8573c977cd14d1b6706b60dbc70c5a1d
BLAKE2b-256 fb55382f333b2cd1c83353c22510fc4db0506aa435d701bdf167a0028eb9f159

See more details on using hashes here.

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

Hashes for airoh-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 012e60aec0f54ef58bd980d25e360fa427358924c76145face313700d865c450
MD5 8089330e124a18566cc18751de251ee0
BLAKE2b-256 df0f4d86410452d0d393cda0396424b05820bbe62e3aeb40dadbdb347ace41c3

See more details on using hashes here.

Supported by

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