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 injection —
settingsandrun_dirare 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."""
...
@cmd
def report(settings=None):
"""Summarize the latest run."""
...
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
Note: Typer treats an application with exactly one registered command as a single-command CLI, and the command name is then left off the command line. These examples register two commands, so every invocation names the one to run.
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.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iolaus-0.1.1.tar.gz | 133.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iolaus-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:140.6 kB
Release files / iolaus-0.1.1.tar.gz
| Download URL | iolaus-0.1.1.tar.gz |
|---|---|
| Size | 133.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
daf450d5262829025be7714b89cd1062fb89ccd839526a45d4b965f1076ba534
|
|
BLAKE2b-256 checksum How to use checksums |
d5adca576ced4349795627f830b3f1356ce306b44761198143d812b46f41197a
|
| 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 logRelease files / iolaus-0.1.1-py3-none-any.whl
| Download URL | iolaus-0.1.1-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f9138cba12187290227e8d18a5372187ffb128b9b3d03af40d02ffbe2ee26cdf
|
|
BLAKE2b-256 checksum How to use checksums |
f373380c74159ea3a07dcaa25a4ba3abfcb7665fb171d397324cf98285475e8d
|
| 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