HTTP/2 301
server: Varnish
retry-after: 0
location: https://pypi.org/pypi/deepdiff
content-type: text/html; charset=UTF-8
accept-ranges: bytes
date: Sun, 27 Jul 2025 17:12:42 GMT
x-served-by: cache-hyd1100025-HYD
x-cache: HIT
x-cache-hits: 0
x-timer: S1753636362.100479,VS0,VE0
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-frame-options: deny
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=()
content-length: 122
HTTP/2 301
content-security-policy: base-uri 'self'; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://gitlab.com/api/ https://analytics.python.org fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com https://billing.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://analytics.python.org *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com
referrer-policy: origin-when-cross-origin
location: https://pypi.org/pypi/deepdiff/
content-type: text/html; charset=UTF-8
accept-ranges: bytes
date: Sun, 27 Jul 2025 17:12:42 GMT
x-served-by: cache-iad-kjyo7100159-IAD, cache-iad-kjyo7100169-IAD, cache-bom-vanm7210098-BOM
x-cache: MISS, MISS, MISS
x-cache-hits: 0, 0, 0
x-timer: S1753636362.181100,VS0,VE237
vary: Accept-Encoding
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-frame-options: deny
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=()
content-length: 212
HTTP/2 301
content-security-policy: base-uri 'self'; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://gitlab.com/api/ https://analytics.python.org fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com https://billing.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://analytics.python.org *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com
referrer-policy: origin-when-cross-origin
location: https://pypi.org/project/deepdiff/
content-type: text/html; charset=UTF-8
accept-ranges: bytes
date: Sun, 27 Jul 2025 17:12:42 GMT
x-served-by: cache-iad-kcgs7200163-IAD, cache-iad-kcgs7200163-IAD, cache-bom-vanm7210098-BOM
x-cache: MISS, MISS, MISS
x-cache-hits: 0, 0, 0
x-timer: S1753636362.437153,VS0,VE260
vary: Accept-Encoding
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-frame-options: deny
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=()
content-length: 215
HTTP/2 200
content-security-policy: base-uri 'self'; connect-src 'self' https://api.github.com/repos/ https://api.github.com/search/issues https://gitlab.com/api/ https://analytics.python.org fastly-insights.com *.fastly-insights.com *.ethicalads.io https://api.pwnedpasswords.com https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/sre/mathmaps/ https://2p66nmmycsj3.statuspage.io; default-src 'none'; font-src 'self' fonts.gstatic.com; form-action 'self' https://checkout.stripe.com https://billing.stripe.com; frame-ancestors 'none'; frame-src 'none'; img-src 'self' https://pypi-camo.freetls.fastly.net/ *.fastly-insights.com *.ethicalads.io ethicalads.blob.core.windows.net; script-src 'self' https://analytics.python.org *.fastly-insights.com *.ethicalads.io 'sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0=' https://cdn.jsdelivr.net/npm/mathjax@3.2.2/ 'sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=' 'sha256-0POaN8stWYQxhzjKS+/eOfbbJ/u4YHO5ZagJvLpMypo='; style-src 'self' fonts.googleapis.com *.ethicalads.io 'sha256-2YHqZokjiizkHi1Zt+6ar0XJ0OeEy/egBnlm+MDMtrM=' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JLEjeN9e5dGsz5475WyRaoA4eQOdNPxDIeUhclnJDCE=' 'sha256-mQyxHEuwZJqpxCw3SLmc4YOySNKXunyu2Oiz1r3/wAE=' 'sha256-OCf+kv5Asiwp++8PIevKBYSgnNLNUZvxAp4a7wMLuKA=' 'sha256-h5LOiLhk6wiJrGsG5ItM0KimwzWQH/yAcmoJDJL//bY='; worker-src *.fastly-insights.com
content-type: text/html; charset=UTF-8
etag: "6P2uDPUt0o3WaRZll7ty+Q"
referrer-policy: origin-when-cross-origin
content-encoding: gzip
accept-ranges: bytes
date: Sun, 27 Jul 2025 17:12:42 GMT
x-served-by: cache-iad-kcgs7200131-IAD, cache-iad-kcgs7200131-IAD, cache-bom-vanm7210098-BOM
x-cache: MISS, HIT, MISS
x-cache-hits: 0, 75, 0
x-timer: S1753636363.716272,VS0,VE201
vary: Accept-Encoding, Cookie
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-frame-options: deny
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-permitted-cross-domain-policies: none
permissions-policy: publickey-credentials-create=(self),publickey-credentials-get=(self),accelerometer=(),ambient-light-sensor=(),autoplay=(),battery=(),camera=(),display-capture=(),document-domain=(),encrypted-media=(),execution-while-not-rendered=(),execution-while-out-of-viewport=(),fullscreen=(),gamepad=(),geolocation=(),gyroscope=(),hid=(),identity-credentials-get=(),idle-detection=(),local-fonts=(),magnetometer=(),microphone=(),midi=(),otp-credentials=(),payment=(),picture-in-picture=(),screen-wake-lock=(),serial=(),speaker-selection=(),storage-access=(),usb=(),web-share=(),xr-spatial-tracking=()
content-length: 13868
deepdiff · PyPI
Skip to main content
Switch to mobile version
Warning
Some features may not work without JavaScript. Please try enabling it if you encounter problems.
Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other.
Project description
DeepDiff v 8.5.0
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.9+ and PyPy3.
What is new?
Please check the ChangeLog file for the detailed information.
DeepDiff 8-4-2
fixes the type hints for the base
fixes summarize so if json dumps fails, we can still get a repr of the results
adds ipaddress support
DeepDiff 8-4-1
Adding BaseOperatorPlus base class for custom operators
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
Breaking change in DeepHash where we raise Exception instead of logging if we can't hash a value.
Added the log_stacktrace parameter to DeepDiff. When True, it will log the stacktrace along with the error.
DeepDiff 8-3-0
Fixed some static typing issues
Added the summarize module for better repr of nested values
DeepDiff 8-2-0
Small optimizations so we don't load functions that are not needed
Updated the minimum version of Orderly-set
Normalize all datetimes into UTC. Assume timezone naive datetimes are UTC.
DeepDiff 8-1-0
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
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:
Documentation
https://zepworks.com/deepdiff/current/
A message from Sep, the creator of DeepDiff
👋 Hi there,
Thank you for using DeepDiff!
As an engineer, I understand the frustration of wrestling with unruly data in pipelines.
That's why I developed a new tool - Qluster to empower non-engineers to control and resolve data issues at scale autonomously and stop bugging the engineers ! 🛠️
If you are going through this pain now, I would love to give you early access to Qluster and get your feedback.
ChangeLog
Please take a look at the CHANGELOG file.
Survey
:mega: 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! :dancers:
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 wont 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.
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
Built Distribution
File details
Details for the file deepdiff-8.5.0.tar.gz
.
File metadata
Download URL: deepdiff-8.5.0.tar.gz
Upload date:
May 9, 2025
Size: 538.5 kB
Tags: Source
Uploaded using Trusted Publishing? No
Uploaded via: python-requests/2.32.3
File hashes
Hashes for deepdiff-8.5.0.tar.gz
Algorithm
Hash digest
SHA256
a4dd3529fa8d4cd5b9cbb6e3ea9c95997eaa919ba37dac3966c1b8f872dc1cd1
Copy
MD5
059bc73a8d346533606138344d677269
Copy
BLAKE2b-256
0a0f9cd2624f7dcd755cbf1fa21fb7234541f19a1be96a56f387ec9053ebe220
Copy
See more details on using hashes here.
File details
Details for the file deepdiff-8.5.0-py3-none-any.whl
.
File metadata
Download URL: deepdiff-8.5.0-py3-none-any.whl
Upload date:
May 9, 2025
Size: 85.1 kB
Tags: Python 3
Uploaded using Trusted Publishing? No
Uploaded via: python-requests/2.32.3
File hashes
Hashes for deepdiff-8.5.0-py3-none-any.whl
Algorithm
Hash digest
SHA256
d4599db637f36a1c285f5fdfc2cd8d38bde8d8be8636b65ab5e425b67c54df26
Copy
MD5
20b73c38f91479efd53ed3611b7ebe27
Copy
BLAKE2b-256
4a3b2e0797200c51531a6d8c97a8e4c9fa6fb56de7e6e2a15c1c067b6b10a0b0
Copy
See more details on using hashes here.