DEV Community

Michał
Michał

Posted on

ParamFlow – lightweight layered configuration management for Python

What My Project Does

I kept running into the same friction in ML projects — managing config files,
environment variables, and CLI args separately, writing boilerplate to merge
them, and losing track of what parameters ran in which experiment.

ParamFlow solves this with a single call:

import paramflow as pf

params = pf.load('params.toml')
print(params.learning_rate)  # 0.001
print(params.batch_size)     # 64
Enter fullscreen mode Exit fullscreen mode

It merges config files, env vars, and CLI args in a defined order, activates
named profiles, and returns a plain Python dict — no conversion needed, works
with json.dumps, **unpacking, any serialization library.

No schemas, no type annotations — types are inferred from the config file values.

You can override any parameter at runtime without touching the code:

python train.py --profile large --learning_rate 0.0005
Enter fullscreen mode Exit fullscreen mode

or

P_LEARNING_RATE=0.0005 python train.py
Enter fullscreen mode Exit fullscreen mode

Target Audience

Python developers who need simple, flexible config management. Particularly
useful for ML/research projects where reproducibility matters — every run logs
exactly what parameters were used.

GitHub: https://github.com/mduszyk/paramflow
PyPI: https://pypi.org/project/paramflow/

Top comments (0)