Contributing¶
Issues and pull requests are welcome.
Development setup¶
git clone https://github.com/ParmenidesSartre/Akad.git
cd Akad
pip install uv
uv sync --all-extras
uv run pytest
Before submitting a change¶
uv run pytest # full suite must pass
uv sync --group lint
uv run ruff check . # lint
uv run mypy # type-check
All three run automatically on every push/PR via CI — a PR won't merge cleanly if any of them fail. Please keep new functionality covered by tests — the project maintains ~99% coverage. Unit tests live in tests/unit/ and should not touch real storage or the network (use validate_dataframe() and the injectable _http_client/_registry_client parameters). Integration tests in tests/integration/ may use a real SQLite database and a FastAPI TestClient.
Project structure¶
akad/
├── akad/ # Core package — install this on Airflow workers
│ ├── models/ # Contract and result Pydantic models
│ ├── readers/ # ParquetReader, SQLReader
│ ├── validators/ # Schema, Freshness, Volume, Quality validators
│ ├── notifiers/ # Webhook, Email notifiers
│ ├── engine.py # Orchestrates readers + validators
│ ├── sdk.py # DataContractValidator — main public API
│ ├── profiler.py # akad infer — dataset profiling, starter contract generation
│ ├── cli.py # akad CLI
│ └── registry_client.py # HTTP client for the registry
├── registry/ # FastAPI registry service
├── dashboard/ # FastAPI + Jinja2 + Tailwind observability dashboard
├── lab/ # End-to-end Docker test lab
├── tests/
│ ├── unit/ # Validator unit tests
│ ├── integration/ # Engine + registry API tests
│ └── fixtures/ # Sample contract YAML files
├── contracts/ # Example contracts
├── .github/workflows/ # CI (test + lint), docs deploy, PyPI publish
├── docker-compose.yml
└── pyproject.toml
See the Changelog for release history.
License¶
MIT © Faizal Azman