Skip to main content

Rust-powered DeepDiff core

Project description

turbodiff logo

Turbodiff

PyPI - Version GitHub CI

Zero dependencies ✨ Rust-based 🦀 Super fast 🚀

Turbodiff is a super fast diffing library built from the ground up in Rust for speed and consistency. It focuses on core diffing behavior and exposes both a Rust API and Python bindings.

turbodiff speed

Credits

This project is inspired by and compatible with the design of DeepDiff.

It was vibe-coded with gpt-5.2-codex. Contributions are welcome.

Features

  • DeepDiff-style output keys: values_changed, dictionary_item_added, dictionary_item_removed, iterable_item_added, iterable_item_removed, type_changes
  • Options for order ignoring, numeric type tolerance, significant digits, epsilon comparisons, include/exclude paths, and verbose level
  • Rust core + Python bindings via pyo3/maturin

Status

This is an early, focused implementation. It targets the most common DeepDiff use cases and is intended as a drop-in replacement for the supported subset.

Installation (Python)

Install from PyPI with pip:

pip install turbodiff

For local development builds, the Python package is built with maturin:

maturin develop --features python

Usage (Python)

from turbodiff import DeepDiff

diff = DeepDiff({"a": 1}, {"a": 2})
print(diff.to_dict())
# {'values_changed': {"root['a']": {'old_value': 1, 'new_value': 2}}}

# Truthiness follows DeepDiff semantics
assert not diff # will raise AssertionError

Supported keyword options (Python)

All options are passed as keyword arguments to DeepDiff(...).

Option Type Behavior
ignore_order bool Treat arrays as multisets (order-insensitive).
ignore_numeric_type_changes bool Treat int/float type changes as value changes.
ignore_string_type_changes bool Treat str/bytes type changes as value changes.
ignore_type_in_groups list[tuple[type, ...]] Treat types in each group as compatible (type changes become value changes). Example: [(int, float), (bool, str)].
significant_digits int | None Compare numbers rounded to N significant digits.
math_epsilon float | None Absolute tolerance for numeric comparison (alias for atol).
atol float | None Absolute tolerance for numeric comparison.
rtol float | None Relative tolerance for numeric comparison. Uses abs(a-b) <= max(atol, rtol * max(abs(a), abs(b))).
include_paths list[str] Only diff paths that match these prefixes.
exclude_paths list[str] Skip any paths that match these prefixes.
verbose_level int (0 or 1) 0 returns paths only for values_changed.

Usage (Rust)

use serde_json::json;
use turbodiff::{DeepDiff, DeepDiffOptions};

let t1 = json!({"a": 1});
let t2 = json!({"a": 2});
let diff = DeepDiff::new(t1, t2);
println!("{}", diff.to_value());

let options = DeepDiffOptions::default().ignore_order(true);
let diff = DeepDiff::with_options(json!([1, 2]), json!([2, 1]), options);
assert_eq!(diff.to_value(), json!({}));

Development

  • Rust tests: cargo test
  • Python tests: pytest

Contributing

Issues and PRs are welcome. Please include a minimal repro and tests where possible.

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

turbodiff-1.2.1.tar.gz (438.1 kB view details)

Uploaded Source

Built Distributions

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

turbodiff-1.2.1-cp38-abi3-win_amd64.whl (222.4 kB view details)

Uploaded CPython 3.8+Windows x86-64

turbodiff-1.2.1-cp38-abi3-manylinux_2_34_x86_64.whl (371.8 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.34+ x86-64

turbodiff-1.2.1-cp38-abi3-macosx_11_0_arm64.whl (320.5 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file turbodiff-1.2.1.tar.gz.

File metadata

  • Download URL: turbodiff-1.2.1.tar.gz
  • Upload date:
  • Size: 438.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for turbodiff-1.2.1.tar.gz
Algorithm Hash digest
SHA256 71ed3ec02b287460470aaec1ad85a49f30de5d97d788acea215afc63d0bbaaef
MD5 d42971846f777e5d68a84fc6141c5e0c
BLAKE2b-256 a8705cfe9cd761e9e59c6a6a3ed4c8e9ee5019b62f6f5ff01a1af7415a2d39ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.2.1.tar.gz:

Publisher: ci.yml on BrightNight-Energy/turbodiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbodiff-1.2.1-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: turbodiff-1.2.1-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 222.4 kB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for turbodiff-1.2.1-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 26c3483198500ccf545c36b0b2fd21eb99ca86c483451ddef607f23ca16f10c9
MD5 19b5a557b1d14c1494c58d7908f45e59
BLAKE2b-256 ffa07afd56d4637285ddd73bb46436df08b9e9f2b26e0d3a06c659100adc21d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.2.1-cp38-abi3-win_amd64.whl:

Publisher: ci.yml on BrightNight-Energy/turbodiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbodiff-1.2.1-cp38-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for turbodiff-1.2.1-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 921e575c313429bd088ff75112357709330a6dced92c8a647497823426033fa4
MD5 0d28a93169512ea236b67f9137d152e4
BLAKE2b-256 7ed2ff3b8cd0c7c8da8580c27f94347f1447bdd3f5c03e7dce3f940fa05177a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.2.1-cp38-abi3-manylinux_2_34_x86_64.whl:

Publisher: ci.yml on BrightNight-Energy/turbodiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbodiff-1.2.1-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turbodiff-1.2.1-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79b38d8e593a89f3dffd111a8e3642117dbb807b350d74840a3e756e4e1847ed
MD5 1b6088bd56cbacc02b3349e7855f09c0
BLAKE2b-256 b32cac06064f9a1ff9c2a46df4343e1b430e23116cbc437efd337934874c17f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.2.1-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: ci.yml on BrightNight-Energy/turbodiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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