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
ruff
to v0.9.0 by @sydney-runkle in #11254 - Regular
uv.lock
deps update by @sydney-runkle in #11333 - Add a
check_pydantic_core_version()
function by @Viicos in #11324 - Remove
greenlet
development dependency by @Viicos in #11351 - Bump
pydantic-core
to 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_data
property toFieldInfo
by @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_model
field 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_fields
andmodel_computed_fields
on instances by @Viicos in #11169 - Move core schema generation logic for path types inside the
GenerateSchema
class by @sydney-runkle in #10846 - Move
deque
schema gen toGenerateSchema
class by @sydney-runkle in #11239 - Move
Mapping
schema gen toGenerateSchema
to complete removal ofprepare_annotations_for_known_type
workaround by @sydney-runkle in #11247 - Remove Python 3.8 Support by @sydney-runkle in #11258
- Disable
pydantic-core
core schema validation by @sydney-runkle in #11271
Performance
- Only evaluate
FieldInfo
annotations if required during schema building by @Viicos in #10769 - Optimize calls to
get_type_ref
by @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_extra
module by @Viicos in #11255 - Refactor and optimize schema cleaning logic by @Viicos and @MarkusSintonen in #11244
Fixes
- Add validation tests for
_internal/_validators.py
by @tkasuz in #10763 - Improve
TypeAdapter
instance 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
Literal
values if using PEP 695 type aliases by @Viicos in #11114 - Override
__subclasscheck__
onModelMetaclass
to 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
Annotated
form by @Viicos in #11109 - Include
openapi-python-client
check in issue creation for third-party failures, usemain
branch 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_property
warning by @Viicos in #11200 - Copy
WithJsonSchema
schema 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
CoreMetadata
definition by @Viicos in #11216 - Consolidate schema definitions logic in the
_Definitions
class by @Viicos in #11208 - Support initializing root model fields with values of the
root
type in the mypy plugin by @Viicos in #11212 - Fix various issues with dataclasses and
use_attribute_docstrings
by @Viicos in #11246 - Only compute normalized decimal places if necessary in
decimal_places_validator
by @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_alias
in 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
ClickHouseDsn
by @Maze21127 in #11319 - Coerce decimal constraints to
Decimal
instances by @Viicos in #11350 - Fix
ValueError
on 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