# What changed in deepdiff

> 19 changes in deepdiff 8 to 9 from its official release notes, upgrade guides and advisories: 4 breaking, 2 security, 3 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/deepdiff/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## deepdiff 9

### Breaking changes

- ignore_order=True now reports int-versus-float type changes. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- Support for Python 3.9 is dropped. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- The view_override parameter is removed; pass an explicit verbose_level to get previous tree-view results. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- The view_override parameter is removed; pass an explicit verbose_level to get previous tree-view results. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)

### New APIs and options

- A TypedDict is added for the return type of to_flat_dicts. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- to_dict() accepts verbose_level and returns a usable text-view dict; tree view defaults to verbose_level=2 for full detail. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- to_json() accepts verbose_level and returns a usable text-view dict; tree view defaults to verbose_level=2 for full detail. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)

### Behavior and default changes

- group_by now supports callable values. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)

### Fixes and other changes

- Colored view display is fixed when all list items are removed. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- An issue with ignore_keys in detailed__dict__ is fixed. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- The type hint for logarithmic similarity is fixed. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- Fixes an orjson TypeError for integers exceeding the 64-bit range. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- Path reporting always uses the t1 path. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- Python 3.14 is supported. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- AttributeError is no longer swallowed by hasattr() for objects with __getattr__ during __slots__ handling. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- include_action_in_path is now passed through by to_flat_dicts. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)
- report_type_changes is now passed through by to_flat_dicts. (9.0.0) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/9.0.0)

## deepdiff 8

### Security

- Fixes CVE-2025-58367; the notes provide no further details about the vulnerability or fix. (8.6.2) — [release notes](https://github.com/qlustered/deepdiff/releases/tag/8.6.2)
- DeepDiff has Memory Exhaustion DoS through SAFE_TO_IMPORT (8.6.2) — [security advisory](https://github.com/advisories/GHSA-54JJ-PX8X-5W5Q)
