Skip to main content

airflow-turbine

Apache Airflow operator for Turbine. Drop TurbineCheckOperator into a DAG, point it at a Turbine server with an Airflow Connection, and your data-quality checks run as native Airflow tasks. The operator is deferrable — it releases the worker slot while Turbine evaluates, then resumes to log every Check Outcome and fail the task on any breach.

Install

uv add airflow-turbine

Python 3.12 or newer. Pulls only apache-airflow and turbine-client — the Turbine engine never enters your Airflow environment.

Minimal example

from airflow_turbine import TurbineCheckOperator

quality = TurbineCheckOperator(
    task_id="quality",
    turbine_conn_id="turbine",
)

The Connection's host / port / schema build the base URL; password (when set) becomes a static bearer token. With no other configuration the operator runs every contract registered with the server.

Contract Selection

TurbineCheckOperator(
    task_id="quality",
    turbine_conn_id="turbine",
    contracts=["orders", "customers"],   # list, single id, or None to fan out across every contract
)

contracts=None (the default) fans out across every registered contract; contracts=[] is a no-op that succeeds without running anything (useful when the list is templated from an upstream task).

Check Window from the DAG's data interval

Opt in to forward data_interval_start / data_interval_end as the Check Window:

TurbineCheckOperator(
    task_id="quality",
    turbine_conn_id="turbine",
    use_data_interval=True,
)

Off by default — every scheduled DAG has a data interval, and forwarding it unconditionally would spray warnings on contracts whose SLAs do not declare a latency element. Setting use_data_interval=True together with incremental=True is rejected at task construction.

Run options

TurbineCheckOperator(
    task_id="quality",
    turbine_conn_id="turbine",
    incremental=True,    # check rows newer than the last watermark; mutually exclusive with use_data_interval
    flag_rows=True,      # persist failing-row PKs to the flag matrix
)

Auth

Three modes, picked from the Connection:

Connection shape Resolved auth
password set, no OAuth extra BearerAuth(token=password)
OAuth fields in extra (tenant_id, client_id, client_secret, scope) AzureADClientCredentials(...)
No password, no OAuth extra None (in-cluster, unauthenticated)

Override the Connection-derived auth explicitly:

from turbine_client import BearerAuth

TurbineCheckOperator(
    task_id="quality",
    turbine_conn_id="turbine",
    auth=BearerAuth(token="explicit"),
)

Any explicit auth=... requires turbine_conn_id to be set — the trigger re-reads the connection on the triggerer process to rebuild the auth without carrying credentials across the deferral boundary.

Behaviour on failure

Each Check Outcome is logged on resume. The task raises RuntimeError when:

  • The Check Run finishes with RunStatus.FAILED.
  • Any Check Outcome is FAILED or ERRORED.

WARNED outcomes log at WARNING level but do not fail the task — advisory checks (severity: warn in the Quality Spec) surface as a soft signal.

Compatibility

airflow-turbine >= 0.5.12 requires turbine-data >= 0.5.12 on the server.

Metadata

Release files for airflow-turbine 0.5.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airflow-turbine 0.5.13
File Size Uploaded Provenance Actions
airflow_turbine-0.5.13.tar.gz 11.2 kB Without provenance Details for airflow_turbine-0.5.13.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for airflow-turbine 0.5.13
File Interpreter ABI Platform Actions
airflow_turbine-0.5.13-py3-none-any.whl Python 3 none any Details for airflow_turbine-0.5.13-py3-none-any.whl

Total release size: 21.1 kB

Release files / airflow_turbine-0.5.13.tar.gz

Download URL airflow_turbine-0.5.13.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
496765e46bf714e06e299c4cc208a2a37ba0b68744818487523f26c5572be553
BLAKE2b-256 checksum
How to use checksums
ccbb2b27ab020c96478b85e477fe79afeaa2c3a522109b3fa627025b9c4abd11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / airflow_turbine-0.5.13-py3-none-any.whl

Download URL airflow_turbine-0.5.13-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8747bd36163fac459ffc6b3adbe7361ec266676e83f1ae3c2ea622cb7a49e69e
BLAKE2b-256 checksum
How to use checksums
1735f1c1c8539baf10ea36850187d9d4bad793163876d4a283b1d192c0e9ad54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for airflow-turbine 0.5.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.5.13 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page