Skip to main content

Semantic diffing for mission-critical data pipelines.

Project description

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

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.
  • Discrepancy Artifacts: Export isolated Parquet files detailing added, removed, and changed records for downstream auditing.

Roadmap

Upcoming enterprise integrations:

  • Warehouse Pushdown: Direct SQL execution for Snowflake and Databricks.
  • Lakehouse Native: First-class support for Delta Lake and Apache Iceberg.
  • Advanced Heuristics: Fuzzy string matching and ML-driven schema mapping.
  • Reporting: Interactive HTML diff dashboards and CI/CD status checks.

View Detailed Roadmap


License

Distributed under the Apache 2.0 License.

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

veridelta-0.2.0.tar.gz (212.6 kB view details)

Uploaded Source

Built Distribution

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

veridelta-0.2.0-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file veridelta-0.2.0.tar.gz.

File metadata

  • Download URL: veridelta-0.2.0.tar.gz
  • Upload date:
  • Size: 212.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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}

File hashes

Hashes for veridelta-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ca39cbbc8c0b79080a2a149930e5b3560d9c58af55cb53cd9f7051df73a3fbf3
MD5 ecf12aa9202e0655fe204e2c8556aca6
BLAKE2b-256 b3ac128c707fe16fc1708f87b94afa28ef79529e24afada80f01913b6d5d8473

See more details on using hashes here.

File details

Details for the file veridelta-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: veridelta-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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}

File hashes

Hashes for veridelta-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 864483ffeefec2fe6b2a19c39511cd67f232db1bed87db5ef69c2b7c4043b944
MD5 77ebcc2033f59df4165337279b2aad64
BLAKE2b-256 2e138e89fc1e14c6dae9e7427d415f6badb2d15f23a73d31ec0f9870dfcdca82

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