All Versions
12
Latest Version
Avg Release Cycle
79 days
Latest Release
72 days ago

Changelog History
Page 1

  • v9.0.0 Changes

    March 30, 2026
    • migration note:

      • to_dict() and to_json() now accept a verbose_level parameter and always return a usable text-view dict. When the original view is 'tree', they default to verbose_level=2 for full detail. The old view_override parameter is removed. To get the previous results, you will need to pass the explicit verbose_level to to_json and to_dict if you are using the tree view.
    • ⬇️ Dropping support for Python 3.9

    • 👌 Support for python 3.14

    • ➕ Added support for callable group_by thanks to echan5

    • Added FlatDeltaDict TypedDict for to_flat_dicts return type

    • 🛠 Fixed colored view display when all list items are removed thanks to yannrouillard

    • Fixed hasattr() swallowing AttributeError in __slots__ handling for objects with __getattr__ thanks to tpvasconcelos

    • 🛠 Fixed ignore_order=True missing int-vs-float type changes

    • Always use t1 path for reporting thanks to devin13cox

    • Fixed _convert_oversized_ints failing on NamedTuples

    • 🛠 Fixed orjson TypeError for integers exceeding 64-bit range

    • Fixed parameter bug in to_flat_dicts where include_action_in_path and report_type_changes were not being passed through

    • Fixed ignore_keys issue in detailed __dict__ thanks to vitalis89

    • 🛠 Fixed logarithmic similarity type hint thanks to ljames8

  • v8.6.2 Changes

    March 25, 2026

    8.6.2 - Fix (CVE-2025-58367)

  • v8.6.1 Changes

    September 04, 2025

    DeepDiff 8-6-1

    • 🔒 Patched security vulnerability in the Delta class which was vulnerable to class pollution via its constructor, and when combined with a gadget available in DeltaDiff itself, it could lead to Denial of Service and Remote Code Execution (via insecure Pickle deserialization).
  • v8.5.0 Changes

    May 09, 2025
    • ⚡️ Updating deprecated pydantic calls
    • Switching to pyproject.toml
    • Fix for moving nested tables when using iterable_compare_func. by
    • 🛠 Fix recursion depth limit when hashing numpy.datetime64
    • Moving from legacy setuptools use to pyproject.toml
  • v8.4.1 Changes

    March 17, 2025
    • pytz is not required.
  • v8.4.0 Changes

    March 16, 2025
    • ➕ Adding BaseOperatorPlus base class for custom operators
    • 0️⃣ default_timezone can be passed now to set your default timezone to something other than UTC.
    • 🆕 New summarization algorithm that produces valid json
    • 👍 Better type hint support
  • v8.1.1 Changes

    December 16, 2024

    ➕ Adding Python 3.13 to setup.py

  • v8.1.0 Changes

    December 16, 2024
    • 🗄 Removing deprecated lines from setup.py
    • ➕ Added prefix option to pretty()
    • 🛠 Fixes hashing of numpy boolean values.
    • Fixes slots comparison when the attribute doesn't exist.
    • 😌 Relaxing orderly-set reqs
    • ➕ Added Python 3.13 support
    • Only lower if clean_key is instance of str #504
    • 🛠 Fixes issue where the key deep_distance is not returned when both compared items are equal #510
    • 🛠 Fixes exclude_paths fails to work in certain cases
    • exclude_paths fails to work #509
    • Fixes to_json() method chokes on standard json.dumps() kwargs such as sort_keys
    • to_dict() method chokes on standard json.dumps() kwargs #490
    • Fixes accessing the affected_root_keys property on the diff object returned by DeepDiff fails when one of the dicts is empty
    • Fixes accessing the affected_root_keys property on the diff object returned by DeepDiff fails when one of the dicts is empty #508
  • v8.0.1 Changes

    October 24, 2024

    🚚 8.0.1 - extra import of numpy is removed

  • v8.0.0 Changes

    August 27, 2024

    With the introduction of threshold_to_diff_deeper, the values returned are different than in previous versions of DeepDiff. You can still get the older values by setting threshold_to_diff_deeper=0. However to signify that enough has changed in this release that the users need to update the parameters passed to DeepDiff, we will be doing a major version update.

    • use_enum_value=True makes it so when diffing enum, we use the enum's value. It makes it so comparing an enum to a string or any other value is not reported as a type change.
    • threshold_to_diff_deeper=float is a number between 0 and 1. When comparing dictionaries that have a small intersection of keys, we will report the dictionary as a new_value instead of reporting individual keys changed. If you set it to zero, you get the same results as DeepDiff 7.0.1 and earlier, which means this feature is disabled. The new default is 0.33 which means if less that one third of keys between dictionaries intersect, report it as a new object.
    • 📦 Deprecated ordered-set and switched to orderly-set. The ordered-set package was not being maintained anymore and starting Python 3.6, there were better options for sets that ordered. I forked one of the new implementations, modified it, and published it as orderly-set.
    • 🌲 Added use_log_scale:bool and log_scale_similarity_threshold:float. They can be used to ignore small changes in numbers by comparing their differences in logarithmic space. This is different than ignoring the difference based on significant digits.
    • json serialization of reversed lists.
    • Fix for iterable moved items when iterable_compare_func is used.
    • 👍 Pandas and Polars support.