v2.11.0a1 2025-01-30
Pre-release
Pre-release
v2.11.0a1 (2025-01-30)
What's Changed
Note
Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general).
This is an early alpha release, meant to collect early feedback from users having issues with core schema builds.
Packaging
- Bump dawidd6/action-download-artifact from 6 to 7 by @dependabot in #11018
- Re-enable memray related tests on Python 3.12+ by @Viicos in #11191
- Bump astral-sh/setup-uv to 5 by @dependabot in #11205
- Bump
ruffto v0.9.0 by @sydney-runkle in #11254 - Regular
uv.lockdeps update by @sydney-runkle in #11333 - Add a
check_pydantic_core_version()function by @Viicos in #11324 - Remove
greenletdevelopment dependency by @Viicos in #11351 - Bump
pydantic-coreto v2.28.0 by @Viicos in #11364
New Features
- Support unsubstituted type variables with both a default and a bound or constraints by @FyZzyss in #10789
- Add a
default_factory_takes_validated_dataproperty toFieldInfoby @Viicos in #11034 - Raise a better error when a generic alias is used inside
type[]by @Viicos in #11088 - Properly support PEP 695 generics syntax by @Viicos in #11189
- Properly support type variable defaults by @Viicos in #11332
Changes
- Rework
create_modelfield definitions format by @Viicos in #11032 - Raise a deprecation warning when a field is annotated as final with a default value by @Viicos in #11168
- Deprecate accessing
model_fieldsandmodel_computed_fieldson instances by @Viicos in #11169 - Move core schema generation logic for path types inside the
GenerateSchemaclass by @sydney-runkle in #10846 - Move
dequeschema gen toGenerateSchemaclass by @sydney-runkle in #11239 - Move
Mappingschema gen toGenerateSchemato complete removal ofprepare_annotations_for_known_typeworkaround by @sydney-runkle in #11247 - Remove Python 3.8 Support by @sydney-runkle in #11258
- Disable
pydantic-corecore schema validation by @sydney-runkle in #11271
Performance
- Only evaluate
FieldInfoannotations if required during schema building by @Viicos in #10769 - Optimize calls to
get_type_refby @Viicos in #10863 - Improve
__setattr__performance of Pydantic models by caching setter functions by @MarkusSintonen in #10868 - Improve annotation application performance by @Viicos in #11186
- Improve performance of
_typing_extramodule by @Viicos in #11255 - Refactor and optimize schema cleaning logic by @Viicos and @MarkusSintonen in #11244
Fixes
- Add validation tests for
_internal/_validators.pyby @tkasuz in #10763 - Improve
TypeAdapterinstance repr by @sydney-runkle in #10872 - Revert "ci: use locally built pydantic-core with debug symbols by @sydney-runkle in #10942
- Re-enable all FastAPI tests by @tamird in #10948
- Fix typo in HISTORY.md. by @felixxm in #11077
- Infer final fields with a default value as class variables in the mypy plugin by @Viicos in #11121
- Recursively unpack
Literalvalues if using PEP 695 type aliases by @Viicos in #11114 - Override
__subclasscheck__onModelMetaclassto avoid memory leak and performance issues by @Viicos in #11116 - Remove unused
_extract_get_pydantic_json_schema()parameter by @Viicos in #11155 - Add FastAPI and SQLModel to third-party tests by @sydney-runkle in #11044
- Fix conditional expressions syntax for third-party tests by @Viicos in #11162
- Move FastAPI tests to third-party workflow by @Viicos in #11164
- Improve discriminated union error message for invalid union variants by @Viicos in #11161
- Unpack PEP 695 type aliases if using the
Annotatedform by @Viicos in #11109 - Include
openapi-python-clientcheck in issue creation for third-party failures, usemainbranch by @sydney-runkle in #11182 - Add pandera third-party tests by @Viicos in #11193
- Add ODMantic third-party tests by @sydney-runkle in #11197
- Add missing stacklevel in
deprecated_instance_propertywarning by @Viicos in #11200 - Copy
WithJsonSchemaschema to avoid sharing mutated data by @thejcannon in #11014 - Do not cache parametrized models when in the process of parametrizing another model by @Viicos in #10704
- Re-enable Beanie third-party tests by @Viicos in #11214
- Add discriminated union related metadata entries to the
CoreMetadatadefinition by @Viicos in #11216 - Consolidate schema definitions logic in the
_Definitionsclass by @Viicos in #11208 - Support initializing root model fields with values of the
roottype in the mypy plugin by @Viicos in #11212 - Fix various issues with dataclasses and
use_attribute_docstringsby @Viicos in #11246 - Only compute normalized decimal places if necessary in
decimal_places_validatorby @misrasaurabh1 in #11281 - Fix two misplaced sentences in validation errors documentation by @ananiavito in #11302
- Fix mkdocstrings inventory example in documentation by @pawamoy in #11311
- Add support for
validation_aliasin the mypy plugin by @Viicos in #11295 - Do not transform model serializer functions as class methods in the mypy plugin by @Viicos in #11298
- Simplify
GenerateJsonSchema.literal_schema()implementation by @misrasaurabh1 in #11321 - Add additional allowed schemes for
ClickHouseDsnby @Maze21127 in #11319 - Coerce decimal constraints to
Decimalinstances by @Viicos in #11350 - Fix
ValueErroron year zero by @davidhewitt in pydantic-core#1583
New Contributors
- @FyZzyss made their first contribution in #10789
- @tamird made their first contribution in #10948
- @felixxm made their first contribution in #11077
- @alexprabhat99 made their first contribution in #11082
- @Kharianne made their first contribution in #11111
- @mdaffad made their first contribution in #11177
- @thejcannon made their first contribution in #11014
- @thomasfrimannkoren made their first contribution in #11251
- @usernameMAI made their first contribution in #11275
- @ananiavito made their first contribution in #11302
- @pawamoy made their first contribution in #11311
- @Maze21127 made their first contribution in #11319