v2.14.3 (2026-11-04)
What's Changed
Packaging
-
Build wheels for GraalPy 3.13 by @msimacek in #14136.
The previous v2.14.2 release published GraalPy 3.11 wheels, which were not working due to a PyO3 version bump. A CI workflow issue made it so that the wheel wasn't tested before publishing. This is now fixed: starting in v2.14.3, we no longer publish GraalPy 3.11 wheels, and GraalPy 3.13 wheels are now published together with the existing 3.12 one.
Performance
- Improve schema generation for fixed type handlers by @alexmojaki in #14130
- Skip general schema dispatch for builtin scalars by @alexmojaki in #14141
- Skip annotation handler setup when annotations are empty by @alexmojaki in #14149
- Fix quadratic serialization time with per-index
include/excludeon sequences by @Viicos in #14160 - Avoid type lookups when checking for
Noneduring serialization by @Viicos in #14167 - Improve performance of model serialization by @Viicos in #14171
- Improve performance of dict serialization by @Viicos in #14172
- Improve performance of type inference during serialization by @Viicos in #14173
- Avoid cloning the field name when using the default value during validation by @Viicos in #14175
- Do not evaluate
model_configannotations by @Viicos in #14195 - Avoid slow runtime
Protocolcheck when expandingGroupedMetadataannotations by @Viicos in #14196 - Use a lightweight
@contextmanagerimplementation internally by @Viicos in #14199
Fixes
- Fix various issues about GC tracking in
pydantic-coreby @Viicos in #13819 - Include
nullin serialization JSON Schema forunless-nonefield serializers by @Kropiunig in #13848 - Fix
RecursionErrorwhen copying or unpickling models withdefer_buildby @Viicos in #14115 - Remove dead
default_factorycheck in unsupportedField()attribute by @owtaylor in #14129 - Disallow non string extra keys during validation by @Viicos in #14135
- Fix deeply nested data being reported as a cyclic reference by @Viicos in #14164