DeepDiff is now part of Qluster.
If you're building workflows around data validation and correction, Qluster gives your team a structured way to manage rules, review failures, approve fixes, and reuse decisions—without building the entire system from scratch.
- DeepDiff: Deep Difference of dictionaries, iterables, strings, and ANY other object.
- DeepSearch: Search for objects within other objects.
- DeepHash: Hash any object based on their content.
- Delta: Store the difference of objects and apply them to other objects.
- Extract: Extract an item from a nested Python object using its path.
- commandline: Use DeepDiff from commandline.
Tested on Python 3.10+ and PyPy3.
Please check the ChangeLog file for the detailed information.
DeepDiff 9-0-0
- migration note:
to_dict()andto_json()now accept averbose_levelparameter and always return a usable text-view dict. When the original view is'tree', they default toverbose_level=2for full detail. The oldview_overrideparameter is removed. To get the previous results, you will need to pass the explicit verbose_level toto_jsonandto_dictif you are using the tree view.
- Dropping support for Python 3.9
- Support for python 3.14
- Added support for callable
group_bythanks to @echan5 - Added
FlatDeltaDictTypedDict forto_flat_dictsreturn type - Fixed colored view display when all list items are removed thanks to @yannrouillard
- Fixed
hasattr()swallowingAttributeErrorin__slots__handling for objects with__getattr__thanks to @tpvasconcelos - Fixed
ignore_order=Truemissing int-vs-float type changes - Always use t1 path for reporting thanks to @devin13cox
- Fixed
_convert_oversized_intsfailing on NamedTuples - Fixed orjson
TypeErrorfor integers exceeding 64-bit range - Fixed parameter bug in
to_flat_dictswhereinclude_action_in_pathandreport_type_changeswere not being passed through - Fixed
ignore_keysissue indetailed__dict__thanks to @vitalis89 - Fixed logarithmic similarity type hint thanks to @ljames8
- Added
Fractionnumeric support thanks to @akshat62
pip install deepdiff
If you want to use DeepDiff from commandline:
pip install "deepdiff[cli]"
If you want to improve the performance of DeepDiff with certain functionalities such as improved json serialization:
pip install "deepdiff[optimize]"
Install optional packages:
- yaml
- tomli (python 3.10 and older) and tomli-w for writing
- clevercsv for more robust CSV parsing
- orjson for speed and memory optimized parsing
- pydantic
https://zepworks.com/deepdiff/current/
Please take a look at the CHANGELOG file.
📣 Please fill out our fast 5-question survey so that we can learn how & why you use DeepDiff, and what improvements we should make. Thank you! 👯
-
Clone the repo
-
Switch to the dev branch
-
Create your own branch
-
Install dependencies
- Method 1: Use
uvto install the dependencies:uv sync --all-extras. - Method 2: Use pip:
pip install -e ".[cli,coverage,dev,docs,static,test]"
- Method 1: Use
-
Build
uv build
- Please make your PR against the dev branch
- Please make sure that your PR has tests. Since DeepDiff is used in many sensitive data driven projects, we strive to maintain around 100% test coverage on the code.
Please run pytest --cov=deepdiff --runslow to see the coverage report. Note that the --runslow flag will run some slow tests too. In most cases you only want to run the fast tests which so you won't add the --runslow flag.
Or to see a more user friendly version, please run: pytest --cov=deepdiff --cov-report term-missing --runslow.
Thank you!
Please take a look at the AUTHORS file.