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()

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.5.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.5.0
File Size Uploaded
veridelta-0.5.0.tar.gz 356.0 kB Details

Built distribution (wheel)

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

Total release size: 404.0 kB

Release files / veridelta-0.5.0.tar.gz

Download URL veridelta-0.5.0.tar.gz
Size 356.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7c88f4127e3a97a9e1957e80a7b06636e6a506b0552dfb46139ee9e85b6b20cd
BLAKE2b-256 checksum
How to use checksums
930cba24267791c2a567c24fbbb5926d7af1f7d8538d90151bf3fc1d947fc4d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","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.5.0-py3-none-any.whl

Download URL veridelta-0.5.0-py3-none-any.whl
Size 48.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae9327a0fc1bf21aaa9557b7e51f7b9986716f2e1713cf29e74b47d4e9dbf8da
BLAKE2b-256 checksum
How to use checksums
579de4df386e8c3197b42474589230ca7077e3bc18d5574f78443ce7e060a21b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.12 {"installer":{"name":"uv","version":"0.12.12","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

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

This release

0.5.0 This release

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