Skip to main content

Apache Airflow provider for the Data Contract CLI: run data contract tests as quality gates in your DAGs

Project description

Data Contract Provider for Apache Airflow

Run Data Contract CLI tests as quality gates in your Airflow DAGs.

CI

Features

  • DataContractTestOperator runs datacontract test against a contract and fails the task when the contract is violated, so bad data stops before it propagates downstream.
  • Per-check results are rendered in the task log (pass/fail, reason, model/field).
  • Structured results are pushed to XCom (key datacontract_result), so downstream tasks can branch on the outcome.
  • On Airflow 3, a "Data Contract Results" view in the UI shows recent test runs across all DAGs.
  • A "Test Results" button on the task instance links to the published results, e.g. in Entropy Data.

Installation

pip install airflow-provider-datacontract

Extras are passed through to the Data Contract CLI, e.g. for Snowflake:

pip install "airflow-provider-datacontract[snowflake]"

Available extras: duckdb (local files, csv/parquet), snowflake, databricks, bigquery, postgres, s3, azure, kafka, trino.

Usage

from datetime import datetime
from airflow.sdk import dag
from datacontract_provider.operators.datacontract import DataContractTestOperator


@dag(schedule="0 2 * * *", start_date=datetime(2026, 1, 1), catchup=False)
def nightly_datacontract_test():
    DataContractTestOperator(
        task_id="test_orders_contract",
        data_contract_file="https://demo.datacontract.com/orders-latest/datacontract.yaml",
        server="production",
    )


nightly_datacontract_test()

Operator parameters

Parameter Description
data_contract_file Path or URL of the data contract YAML (templated)
data_contract_str Contract as a YAML string, alternative to data_contract_file
server Server key from the contract's servers section to test against
schema_name Schema/model to test, defaults to all
check_categories Subset of schema, quality, servicelevel, custom
publish_url URL to publish test results to (optional)
results_web_url Web page of the published results, shown as a "Test Results" button (optional)
include_failed_samples Collect samples of failing rows
fail_on_warning Also fail the task on result warning
datacontract_kwargs Extra kwargs for the DataContract constructor, e.g. spark

Credentials for the server under test are read from environment variables by the Data Contract CLI, e.g. DATACONTRACT_SNOWFLAKE_USERNAME. Set them on the worker (secret-backed where possible).

XCom

The operator pushes two XCom entries:

  • datacontract_result: {result, data_contract_file, server, checks_total, checks_failed, checks: [{name, result, category, type, model, field, reason}]}
  • datacontract_results_url: the results_web_url, if configured

Results view in the Airflow UI (Airflow 3)

The provider ships a plugin that adds a Data Contract Results entry to the navigation, rendering the most recent test runs across all DAGs with expandable check details. It is served under /datacontract/results by the API server and reads the results from XCom. On Airflow 2 the plugin degrades gracefully and only registers the extra link.

Entropy Data (optional)

To publish test results to Entropy Data (formerly Data Mesh Manager), set the ENTROPY_DATA_API_KEY environment variable on the worker and configure:

DataContractTestOperator(
    task_id="test_orders_contract",
    data_contract_file="...",
    server="production",
    publish_url="https://api.entropy-data.com/api/test-results",
    results_web_url="https://app.entropy-data.com/...",  # optional deep link
)

Version support

  • Apache Airflow 2.10+ and 3.x (the UI results view requires Airflow 3)
  • Python 3.10+

Development

pip install -e ".[dev]"
ruff check src tests
pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airflow_provider_datacontract-0.1.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airflow_provider_datacontract-0.1.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file airflow_provider_datacontract-0.1.1.tar.gz.

File metadata

File hashes

Hashes for airflow_provider_datacontract-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0e27adad81fcb82df5b98c7eeb2c052987bb2e3278f365a0bb4173f14cfb920c
MD5 041bc2f86056dc5f9e2ed345d8906672
BLAKE2b-256 fc689e3e90e55c783271b7056f9b005a943c57a6e1e51b83d2702a9bde2bfbae

See more details on using hashes here.

Provenance

The following attestation bundles were made for airflow_provider_datacontract-0.1.1.tar.gz:

Publisher: release.yml on datacontract/airflow-provider-datacontract

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file airflow_provider_datacontract-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for airflow_provider_datacontract-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 13723e5159c51cda697bc6969587a5b52f26653790324094cf96831fd2c6939b
MD5 7812e7a6c65325391225a53d64450009
BLAKE2b-256 d3dc754b5c883cd67048d0daf0472ab0ce415cf0b8927dde74891702321070dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for airflow_provider_datacontract-0.1.1-py3-none-any.whl:

Publisher: release.yml on datacontract/airflow-provider-datacontract

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page