Metadata-Version: 2.4
Name: aqualisys
Version: 0.1.0
Summary: Polars-first data-quality and data-validation toolkit.
Author-email: Aqualisys Maintainers <maintainers@aqualisys.dev>
License: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: click>=8.1.7
Requires-Dist: polars>=0.20.0
Requires-Dist: pyyaml>=6.0.1
Provides-Extra: dev
Requires-Dist: black>=24.3.0; extra == 'dev'
Requires-Dist: mypy>=1.8.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=7.4.4; extra == 'dev'
Requires-Dist: ruff>=0.2.1; extra == 'dev'
Description-Content-Type: text/markdown

# Aqualisys

Polars-first data-quality toolkit delivering deterministic validation, structured logging, and a composable rule registry.

## Why Aqualisys?
- **Declarative rules**: ship reusable expectations such as not-null, uniqueness, accepted-values, and referential checks.
- **Deterministic logging**: every run is persisted to SQLite (JSON-friendly) for audits and debugging.
- **Pipeline-ready**: run from Python code or via `aqualisys validate configs/orders.yml` in CI.

## Quick Start
```bash
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
pytest
aqualisys validate configs/orders.yml
```

## Usage Example
```python
import polars as pl
from aqualisys import DataQualityChecker, NotNullRule, UniqueRule, SQLiteRunLogger

df = pl.DataFrame({"order_id": [1, 2, 3], "status": ["pending", "shipped", "shipped"]})
checker = DataQualityChecker(
    rules=[NotNullRule("order_id"), UniqueRule("order_id")],
    logger=SQLiteRunLogger("artifacts/example_runs.db"),
)
report = checker.run(df, dataset_name="orders")
assert report.passed
```

## Project Structure
- `src/aqualisys/`: library source (rules, checker, logging, CLI).
- `tests/`: pytest suites (unit + integration).
- `configs/`: sample validation suite definitions.
- `docs/`: roadmap and design notes.

See `docs/PUBLISHING.md` for uv-based build and release steps once you are ready to publish a new version.

See `docs/ROADMAP.md` for the multi-week implementation plan inspired by the Start Data Engineering guide.
