DeepDiff v 9.1.0
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.
Modules
- 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.
What is new?
Please check the ChangeLog file for the detailed information.
DeepDiff 9-1-0
- Added multiprocessing support for DeepDiff: parallel distance computation and parallel subtree diffing with aggregated worker stats, deterministic ordering, and automatic fallback to serial when unsafe (e.g.
custom_operators,*_obj_callback,ignore_order_func) - Added wildcard/glob pattern support for
exclude_pathsandinclude_pathsthanks to @akshat62 - Reimplemented internal cache for improved performance
- Memoized
GlobPathMatcherto remove exponential-time matching cliff - Comprehensive type-hint corrections across
deephash.py,helper.py,delta.py,diff.py,distance.py,path.py, andserialization.py(also fixed real bugs: misplaced paren inpath._guess_typecall, andlen(other.indexes > 1)→len(other.indexes) > 1indiff._compare_in_order) - Security: Delta dunder-attribute traversal in
check_elem()now raises immediately instead of going through_raise_or_log(), with full-path preflight validation in_get_elements_and_details()so theset_item_addedpath cannot silently skip malicious dunder paths - Fixed nested NamedTuple set/frozenset Delta updates dropping the outer container
- Fixed tuple Deltas using iterable opcodes silently doing nothing for insert/delete-only changes
- Fixed Delta with both moved and added iterable items mutating the Delta's own internal diff data
- Fixed crash during path sorting when removing multiple dictionary items with complex keys
- Packaging: added missing files to sdist and removed obsolete
MANIFEST.inthanks to @mgorny - Updated GitHub Actions workflows and dependencies
Installation
Install from PyPi:
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
Documentation
https://zepworks.com/deepdiff/current/
ChangeLog
Please take a look at the CHANGELOG file.
Survey
:mega: Please fill out our fast 10-question survey so that we can learn how & why you use DeepDiff, and what improvements we should make. Thank you! :dancers:
Local dev
-
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
Contribute
- 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!
Authors
Please take a look at the AUTHORS file.
Release files for deepdiff 9.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deepdiff-9.1.0.tar.gz | 382.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deepdiff-9.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 566.8 kB
Release files / deepdiff-9.1.0.tar.gz
| Download URL | deepdiff-9.1.0.tar.gz |
|---|---|
| Size | 382.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07e9e366fab4297755153c4eab795ad4ef3cbd0d51660e847f5751c6bd727687
|
|
BLAKE2b-256 checksum How to use checksums |
f96b6a4a5aaf38535eb332c2856aa08e73ed7c549d0851b1215401af0a2db1a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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":null}
|
Release files / deepdiff-9.1.0-py3-none-any.whl
| Download URL | deepdiff-9.1.0-py3-none-any.whl |
|---|---|
| Size | 184.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
80c0460e1993b04f6f0ca79abf25548b129fd218478c4ebb08f80560f5d10610
|
|
BLAKE2b-256 checksum How to use checksums |
c7264a2bad8eb430d8d805a4642c4bff25103a37548d74ab346f8b1e024abcc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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":null}
|