Quail is a lightweight framework for running data quality checks and tasks, inspired by workflow engines like Snakemake but tailored for modern data pipelines.
git clone https://github.com/your-username/quail.git
cd quail
### 2. Create and activate a virtual environment
```bash
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activateFor development (auto-reflects changes):
pip install -e .Or build and install the wheel:
python -m pip install --upgrade build
python -m build
pip install dist/*.whlQuail workflows should be defined in files ending with the .ql extension.
Example:
my_pipeline.qlThese define your tasks and checks.
Every project should include a quail.yml that describes:
- Environments (e.g. dev, prod)
- Database connections
- Parameters
- Targets / tables
Example quail.yml:
profile: dev
envs:
dev:
url: sqlite:///quail.db
params:
schema: public
targets:
daily:
tasks:
- reflect_tables
- run_checksquail run my_pipeline.ql --config quail.yml --targets dailypython -m quail --config quail.ymlfrom quail.core import Runner, qtask, qcheck
@qcheck(id="row_count")
def row_count(ctx):
# return a CheckResult here
...
Runner(config="quail.yml").run("my_pipeline.ql")For local testing you can use prototype/main.py:
from quail.core import some_func
if __name__ == "__main__":
print("Prototype running")
print(some_func())Run it:
python prototype/main.pyWe use pytest:
pip install -e ".[dev]"
pytest -qMIT License © 2025 Linnaeus Bundalian
