Skip to main content

Veridelta

CI Pipeline codecov PyPI version License

Semantic diffing for data pipelines. Define expected variance, validate intentional changes, and detect regressions with confidence.

Veridelta is a declarative data comparison engine powered by Polars. It applies semantic and mathematical rules to filter out expected pipeline noise, such as floating-point drift or formatting changes, and programmatically isolates true data regressions at scale.

Documentation & API Reference


Installation

uv add veridelta

Warehouse and lakehouse drivers are optional extras (snowflake, databricks, delta, iceberg, or all):

uv add 'veridelta[snowflake]'

YAML examples, routing rules, and time travel live in the configuration guide.


Usage

Veridelta supports configuration-driven CLI execution and programmatic Python API integration.

CLI Configuration (YAML)

Declare comparison rules and tolerances via YAML:

# veridelta.yaml
primary_keys: ["transaction_id"]
schema_mode: "intersection"

source:
  path: "legacy_system.parquet"
  format: "parquet"

target:
  path: "modern_system.parquet"
  format: "parquet"

rules:
  - column_names: ["grand_total"]
    relative_tolerance: 0.01

  - column_names: ["contact_number"]
    regex_replace: {"[^0-9]": ""}

Execute the comparison:

veridelta run --config veridelta.yaml

Python API

Integrate directly into programmatic workflows (e.g., Airflow, Databricks). The DiffEngine natively consumes Polars LazyFrame objects for memory-safe, big-data execution.

import polars as pl
from veridelta import DiffConfig, DiffRule, DiffEngine

source_lazy = pl.scan_parquet("legacy_data.parquet")
target_lazy = pl.scan_parquet("modern_data.parquet")

config = DiffConfig(
    primary_keys=["user_id"],
    default_treat_null_as_equal=True,
    rules=[
        DiffRule(
            pattern="^AMT_.*",
            absolute_tolerance=0.05
        )
    ]
)

engine = DiffEngine(config, source_lazy, target_lazy)
summary = engine.run().summary

if not summary.is_match:
    print(f"Regression detected: {summary.changed_count} rows differ.")

Core Capabilities

  • Structural Alignment: Map legacy column names to modern schemas automatically.
  • Semantic Normalization: Coerce string markers to nulls, standardize whitespace, and cast types dynamically before mathematical comparison.
  • Warehouse Pushdown: Compile comparison SQL for Snowflake and Databricks so diffs run in-warehouse (changed, added, and removed counts) without extracting full tables.
  • Lakehouse Native: Scan Delta Lake and Apache Iceberg tables as unevaluated Polars LazyFrames, including optional version and snapshot time travel.
  • Discrepancy Artifacts: Export isolated Parquet files detailing added, removed, and changed records for downstream auditing.

Roadmap

Upcoming work:

  • Advanced Heuristics: Fuzzy string matching and ML-driven schema mapping.
  • Reporting: Interactive HTML diff dashboards and CI/CD status checks.
  • Additional warehouses: BigQuery pushdown.

View Detailed Roadmap


License

Distributed under the Apache 2.0 License.

Metadata

Release files for veridelta 0.7.0

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

Source distribution (sdist)

Source distribution for veridelta 0.7.0
File Size Uploaded
veridelta-0.7.0.tar.gz 387.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for veridelta 0.7.0
File Interpreter ABI Platform
veridelta-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 444.0 kB

Release files / veridelta-0.7.0.tar.gz

Download URL veridelta-0.7.0.tar.gz
Size 387.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3f77d8eae5cf94011ba06b5a43d69604502ed7b482ab3ff002dc4fa5e753655c
BLAKE2b-256 checksum
How to use checksums
e6a96fb0be65114a29b31169ca8bcaa3db54e78254fe02c07704c9aa9698bbe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / veridelta-0.7.0-py3-none-any.whl

Download URL veridelta-0.7.0-py3-none-any.whl
Size 56.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
055558cc4abf69b0c5f385d0fe232dd55b52f7db0b38d14873fd047ecdfff426
BLAKE2b-256 checksum
How to use checksums
ae754a98d00046e4f0805da145da9af46ba0e3060b7c75dfac092e3d16a3aa1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

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