18 curated breaking changes across major versions of traitlets. Use this as a migration checklist before bumping dependencies.
Use extension:filetype mapping in sphinx configuration [#928](https://github.com/ipython/traitlets/pull/928) ([@Carreau](https://github.com/Carreau))
Accept integer-valued numbers for Integer [#919](https://github.com/ipython/traitlets/pull/919) ([@minrk](https://github.com/minrk), [@ivanov](https://github.com/ivanov))
Update `__new__` method to use Self type for improved type hinting [#918](https://github.com/ipython/traitlets/pull/918) ([@fleming79](https://github.com/fleming79), [@minrk](https://github.com/minrk))
Fix whitespace formatting in CLI help. [#917](https://github.com/ipython/traitlets/pull/917) ([@Carreau](https://github.com/Carreau), [@minrk](https://github.com/minrk))
Fix `traitlets.__all__` [#933](https://github.com/ipython/traitlets/pull/933) ([@kylebarron](https://github.com/kylebarron), [@minrk](https://github.com/minrk))
The --config option with absolute paths will be loaded only once. [#923](https://github.com/ipython/traitlets/pull/923) ([@ryumasai](https://github.com/ryumasai), [@minrk](https://github.com/minrk))
Avoid using `return t.cast` which can prevent attribute access during process teardown [#913](https://github.com/ipython/traitlets/pull/913) ([@minrk](https://github.com/minrk), [@Carreau](https://github.com/Carreau))
Suppress exceptions when closing handlers during `__del__` [#912](https://github.com/ipython/traitlets/pull/912) ([@minrk](https://github.com/minrk), [@Carreau](https://github.com/Carreau))
Fix downstream test `package_spec` [#914](https://github.com/ipython/traitlets/pull/914) ([@minrk](https://github.com/minrk))
CI: Start testing on Python 3.13 [#910](https://github.com/ipython/traitlets/pull/910) ([@EwoutH](https://github.com/EwoutH), [@minrk](https://github.com/minrk))
Moved definitions of K and V outside of TYPE_CHECKING condition [#935](https://github.com/ipython/traitlets/pull/935) ([@JohanMabille](https://github.com/JohanMabille), [@Carreau](https://github.com/Carreau))
Pin virtualenv\<21 in tests because of breaking change incompatible wi… [#937](https://github.com/ipython/traitlets/pull/937) ([@JohanMabille](https://github.com/JohanMabille), [@SylvainCorlay](https://github.com/SylvainCorlay))
Added upper bound to mypy on pypy [#936](https://github.com/ipython/traitlets/pull/936) ([@JohanMabille](https://github.com/JohanMabille), [@Carreau](https://github.com/Carreau))
Start testing on 3.14 and 3.14t [#929](https://github.com/ipython/traitlets/pull/929) ([@Carreau](https://github.com/Carreau))
Require Python 3.9 (drop 3.8) [#924](https://github.com/ipython/traitlets/pull/924) ([@minrk](https://github.com/minrk))
Deprecate empty `isidentifier` utility [#915](https://github.com/ipython/traitlets/pull/915) ([@minrk](https://github.com/minrk), [@Carreau](https://github.com/Carreau))
Removed pinning on virtualenv [#939](https://github.com/ipython/traitlets/pull/939) ([@JohanMabille](https://github.com/JohanMabille))
Remove py2-compat hack from `bunch.__dir__` [#906](https://github.com/ipython/traitlets/pull/906) ([@sethtroisi](https://github.com/sethtroisi), [@minrk](https://github.com/minrk))
Get this data programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/breaking/pypi/traitlets