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.3.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.3.0
File Size Uploaded
veridelta-0.3.0.tar.gz 338.6 kB Details

Built distribution (wheel)

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

Total release size: 378.0 kB

Release files / veridelta-0.3.0.tar.gz

Download URL veridelta-0.3.0.tar.gz
Size 338.6 kB
Tags Source
SHA-256 checksum
How to use checksums
fcfb85558c4531fcf0954d9e0ebd775d3c4452ea85838607f9fdd9bdced44a67
BLAKE2b-256 checksum
How to use checksums
156639006f637f99cf5a43a9e0bf9abba67ebb71dd2ac47b6b77a73ff5cca209
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","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.3.0-py3-none-any.whl

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

0.5.0

2 release files

0.4.0

2 release files

This release

0.3.0 This release

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