Skip to main content

A CLI tool for working with data products and contracts

Project description

Turbine

Contract-driven data quality for data products — powered by ODCS and Soda Core.

pipeline coverage python ODCS

turbine check

How It Works

Contract ➜ Lint ➜ Check ➜ Score ➜ Flag ➜ Observe
  1. Contract — Define expectations in YAML using ODCS v3.1.0
  2. Lint — Validate contract schema before anything touches a database
  3. Check — Run quality checks against live data (SodaCL, SQL, Python, window, group)
  4. Score — Calculate a dimension-aware quality score
  5. Flag — Tag failing rows with bitmask flags for downstream filtering
  6. Observe — Export traces and metrics via OpenTelemetry

Features

  • YAML contracts — ODCS v3.1.0 with Soda extensions for quality checks
  • 13 check types — missing, duplicate, invalid, freshness, row_count, SQL, Python, typed multi-table Python, group, and window (zscore, spike, flatline)
  • Schema drift detection — Compare live database schemas against your contract
  • Dimension-aware scoring — Weight quality dimensions (completeness, accuracy, …) per check
  • Row-level flagging — Per-cell Roaring-bitmap matrix tracks which rows failed which checks across runs
  • Code generation — Scaffold SQLModel models and FastAPI routers from contracts
  • Dependency management — Lockfile-based contract dependency resolution
  • IDE support — Language server (LSP) with extensions for VSCode and JetBrains

Quick Start

Prerequisites: Python 3.13+ and uv

# Install with your database driver
uv add "turbine-data[snowflake]"    # or: postgres, duckdb

# Initialize the recommended src/{project_name} layout
uv run turbine init --defaults

# Copy .env.example to .env and fill your warehouse credentials
cp .env.example .env

# Validate the starter Contract
uv run turbine lint src/{project_name}/contracts/example.yml

# Run quality checks against the starter Datasource named default
uv run turbine check --datasource default src/{project_name}/contracts/example.yml

Supported Databases

Database Install extra
PostgreSQL turbine-data[postgres]
Snowflake turbine-data[snowflake]
DuckDB turbine-data[duckdb]

Documentation

Full docs live in docs/user/docs/ — covering getting started, guides, concepts, and CLI reference.

Contributing

See the contributing guide for dev setup, testing, and code style.

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

turbine_data-0.5.4.tar.gz (6.4 MB view details)

Uploaded Source

Built Distribution

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

turbine_data-0.5.4-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file turbine_data-0.5.4.tar.gz.

File metadata

  • Download URL: turbine_data-0.5.4.tar.gz
  • Upload date:
  • Size: 6.4 MB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for turbine_data-0.5.4.tar.gz
Algorithm Hash digest
SHA256 ec542da4584eead9b639a53635e3b98503407ffb0234829a926e8d020a3039eb
MD5 0cf6c608fed0d0bd7c939b0058b70604
BLAKE2b-256 584a7d4bfbd13b0a89fc6498c7e7dc03c45c97ba2b86f60fd7180793f8caca4a

See more details on using hashes here.

File details

Details for the file turbine_data-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: turbine_data-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for turbine_data-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1d0e54939e809425f04e6a0b7fb41a9bfdeddd90078e05e83a81444d2577517f
MD5 77789ef20c4fb79fefe9eb99e2a72dfa
BLAKE2b-256 7df1e984059aaf6c4d5b50abb0e71d6a5b386ea630b3db056732d44c838be9d4

See more details on using hashes here.

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