Skip to main content

Iolaus

Warning: This project is under active development and is not yet stable. APIs may change without notice.

A lightweight Python framework for research data analysis projects. Iolaus wires together Dynaconf, Typer, and a custom run-logging system into a single decorator-based API that adds automatic configuration management and reproducible run artifacts on every invocation.

Documentation: www.vincentgregoire.com/iolaus

Features

  • Decorator-based API — feels like FastAPI/Typer, with zero boilerplate
  • Automatic config management — merge base settings, extra config files, and CLI overrides
  • Reproducible run artifacts — every command run produces a timestamped output directory with a config snapshot and log file
  • Opt-in injectionsettings and run_dir are only injected if your function declares them

Quick example

from pathlib import Path
from dynaconf import Dynaconf
import typer
from iolaus import command

app = typer.Typer()
settings = Dynaconf(settings_files=["settings.toml"], envvar_prefix="MYAPP")
cmd = command(app, settings)

@cmd
def analyze(
    input: Path,
    verbose: bool = False,
    settings=None,   # injected by Iolaus
    run_dir: Path = None,  # injected by Iolaus
):
    """Run the analysis pipeline."""
    ...

if __name__ == "__main__":
    app()
# Base invocation
python cli.py analyze data.csv

# Merge an extra config file
python cli.py analyze data.csv --config prod.yaml

# Override individual keys
python cli.py analyze data.csv --set model__lr=0.01 --set db__host=remote

Every run produces:

outputs/
└── analyze/
    └── 2025-03-29/
        └── 14-32-05/
            ├── run.log
            └── config.json

Installation

pip install iolaus

Or with uv:

uv add iolaus

Development

git clone https://github.com/vgreg/iolaus.git
cd iolaus
uv sync --all-extras
uv run pytest

Relationship to Hydra

Iolaus is inspired by Hydra, which established the pattern of composable configuration files combined with timestamped output directories for research code. Iolaus is deliberately a lightweight alternative implementing only the subset of Hydra's features that I actually use in my own projects, built on Dynaconf and Typer rather than on OmegaConf.

If Iolaus is not flexible enough, or if you need something it does not provide (config groups, multirun parameter sweeps, structured configs, object instantiation, or launcher plugins for clusters), you should use Hydra instead. It is a mature and well-documented project, and Iolaus makes no attempt to match its scope.

License

MIT

Release files for iolaus 0.1.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 iolaus 0.1.0
File Size Uploaded
iolaus-0.1.0.tar.gz 87.8 kB Details

Built distribution (wheel)

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

Total release size:94.4 kB

Release files / iolaus-0.1.0.tar.gz

Download URL iolaus-0.1.0.tar.gz
Size 87.8 kB
Tags Source
SHA-256 checksum
How to use checksums
94fff6bce8b86ad9fa5c4f193c9eff658d6d4dc9f132471e45f8ee75e309cb14
BLAKE2b-256 checksum
How to use checksums
28db1344ced94f2c15e53596d0fb72f46fe4d1f56b2f9273383c5dfced7454e7
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 22, 2026.

Transparency log

Release files / iolaus-0.1.0-py3-none-any.whl

Download URL iolaus-0.1.0-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
24faed45878f956ab3db6e3b70a4a975eb1c07bf8d62ba9d1484e1c24823c629
BLAKE2b-256 checksum
How to use checksums
f01a8b212be1d1c360968503d37c1e465d6202d4655ce920cccc5ae3e56d9c01
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 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

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