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 + quarantine — Bitmask flags on individual rows; isolate bad data
  • 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.12+ and uv

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

# Scaffold a project
uv run turbine dev init

# Validate your contract
uv run turbine lint

# Run quality checks
uv run turbine check

# Calculate quality score
uv run turbine score

Supported Databases

Database Install extra
PostgreSQL enexis-turbine[postgres]
Snowflake enexis-turbine[snowflake]
ClickHouse enexis-turbine[clickhouse]
DuckDB enexis-turbine[duckdb]

Documentation

Full docs live in 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

enexis_turbine-1.3.5.tar.gz (10.1 MB view details)

Uploaded Source

Built Distribution

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

enexis_turbine-1.3.5-py3-none-any.whl (261.6 kB view details)

Uploaded Python 3

File details

Details for the file enexis_turbine-1.3.5.tar.gz.

File metadata

  • Download URL: enexis_turbine-1.3.5.tar.gz
  • Upload date:
  • Size: 10.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for enexis_turbine-1.3.5.tar.gz
Algorithm Hash digest
SHA256 4b3608e30154cd373b9b2efccbb835499a944bfa84b972a28b950f02e451f9d3
MD5 03764b8d19c3d259a80c5cf300fb2fa3
BLAKE2b-256 50f17f69b83e0935e8fc09e0f98c8791ba060799556d926091e3897c8b0d388c

See more details on using hashes here.

File details

Details for the file enexis_turbine-1.3.5-py3-none-any.whl.

File metadata

  • Download URL: enexis_turbine-1.3.5-py3-none-any.whl
  • Upload date:
  • Size: 261.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for enexis_turbine-1.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4a6fb1de42cfcb64fa70846836fdcf207b2edaa6ddeaf526b4677149859b55d4
MD5 5e83e6be4d38c3ac23954e136cfe97d9
BLAKE2b-256 1a3df7e9a12be509a8a572728029d749fa4d5048dde02e579cbd544be27a3e24

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