Skip to content

Releases: govtech-data-practice/vowl

v0.0.1

02 Apr 10:21
a0c9f8a

Choose a tag to compare

🦉 vowl v0.0.1 - Initial Public Release

Release Date: 2 April 2026


🎉 Celebrating Open Source

We're excited to announce the first public release of vowl (vee-owl) - a validation engine for Open Data Contract Standard (ODCS) data contracts.

vowl originated as an internal tool for demonstrating data contracts within our prototyping workflows. Over time, we recognised its potential value to the wider international community. With that in mind, we refined the library and are publishing it as open source under the MIT license.

As the project is still in its early stages, there may be rough edges and bugs. We appreciate your patience and warmly welcome contributions to help improve vowl for everyone.


📦 Installation

pip install vowl

Optional extras: vowl[spark], vowl[all]

Requires: Python >= 3.10


✨ Highlights

SQL-Powered Validation Engine

Core data quality validation engine backed by Ibis and DuckDB. SQL checks run server-side through Ibis without materialising tables on the client.

Declarative ODCS Contracts

Define your validation rules once in a YAML/JSON contract following the Open Data Contract Standard, and get rich, actionable reports on your data quality.

Any DataFrame, Any Backend

  • Load any Narwhals-compatible DataFrame (pandas, Polars, PySpark, cuDF, Modin, etc.)
  • Connect to 20+ database backends via Ibis (PostgreSQL, Snowflake, BigQuery, and more)
  • SQL dialect translation handled by SQLGlot

Auto-Generated Rules

Checks are automatically derived from contract metadata (logicalType, logicalTypeOptions, required, unique, primaryKey) and library metrics (nullValues, missingValues, invalidValues, duplicateValues, rowCount).

Multi-Source Validation

Validate across tables in different source systems with cross-database joins and multi-table materialisation support.

Rich Reporting

Detailed summaries, row-level failure analysis, saveable reports, and a chainable ValidationResult API.

No Silent Gaps

Unimplemented or unrecognised checks surface as ERROR, not quietly skipped - nothing slips through the cracks.


🚀 Quick Start

import pandas as pd
from vowl import validate_data

df = pd.read_csv("my_data.csv")
result = validate_data("my_contract.yaml", df=df)
result.display_full_report()

📚 What's Included

Component Description
Core Engine SQL-powered validation with CTE wrapper for robust query transformation
Contracts YAML/JSON schema-based contract definitions
Adapters IbisAdapter, MultiSourceAdapter, and extensible BaseAdapter
Executors IbisSQLExecutor, SQLExecutor, and extensible BaseExecutor
Export Export validation results as Arrow tables
Examples Jupyter notebook examples and demo outputs
Documentation MkDocs site covering architecture, contracts, and usage patterns

🔗 Links


📄 License

vowl is released under the MIT License.

Copyright (c) 2026 Government Technology Agency.