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

Pretty Output (Python)

from turbodiff import DeepDiff

diff = DeepDiff({"a": {"b": 1}}, {"a": {"b": 2}})
print(diff.pretty())

# Optional controls
print(diff.pretty(no_color=True, compact=True, max_depth=5, context=0, path_header=False))

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.3.0.tar.gz (444.2 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.3.0-cp38-abi3-win_amd64.whl (274.0 kB view details)

Uploaded CPython 3.8+Windows x86-64

turbodiff-1.3.0-cp38-abi3-manylinux_2_34_x86_64.whl (427.8 kB view details)

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

turbodiff-1.3.0-cp38-abi3-macosx_11_0_arm64.whl (371.1 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for turbodiff-1.3.0.tar.gz
Algorithm Hash digest
SHA256 8f6cf3dff9b2eada6b6f56d09326ec53fa4e1b94a17ca47a4e40b63910b3b22f
MD5 002fb95516f37610354d34abfe0f7730
BLAKE2b-256 c5d9b2331809314a864ed0c23afcc7b3c0580774bb984343f09e57c2c071fc03

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.3.0.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.3.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: turbodiff-1.3.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 274.0 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.3.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 dda38ba544388451e5693baf0f834b0a05fef4b52484eb126ff8c4fdff711a91
MD5 c1894ca9600ebc7e59ca0a2e1a59e6d1
BLAKE2b-256 78141432d34a3661a21ef300a58d8fb5f267bb0110633859e978b77c175482dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.3.0-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.3.0-cp38-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for turbodiff-1.3.0-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3db4e29a3319bf75d49576ccc8f436a5f9e1c5da32de0a01e599dec32465dfe8
MD5 d81c67b564525e9287d0ee749347f4f0
BLAKE2b-256 40befd34e04cc5d9e1b240a5039ab01979820221a4d114cd67dc4893573b54eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.3.0-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.3.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turbodiff-1.3.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e716f2bd3b8ebadfb64e9ab5aa09a9d909a46c6a1afd58c33b7bc2d12e781663
MD5 24512233d15feb145166147703cfd83d
BLAKE2b-256 cb00cdd5312af7e492fafbb50f343a3f8c7f2100313e82611b107fce3f3e0eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbodiff-1.3.0-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