Releases: pydantic/pydantic
Releases Β· pydantic/pydantic
v2.11.7 2025-06-14
v2.11.6 2025-06-13
v2.11.6 (2025-06-13)
What's Changed
Fixes
- Rebuild dataclass fields before schema generation by @Viicos in #11949
- Always store the original field assignment on
FieldInfo
by @Viicos in #11946
Full Changelog: v2.11.5...v2.11.6
v2.11.5 2025-05-22
v2.11.4 2025-04-29
What's Changed
Packaging
Changes
- Allow config and bases to be specified together in
create_model()
by @Viicos in #11714.
This change was backported as it was previously possible (although not meant to be supported)
to providemodel_config
as a field, which would make it possible to provide both configuration
and bases.
Fixes
- Remove generics cache workaround by @Viicos in #11755
- Remove coercion of decimal constraints by @Viicos in #11772
- Fix crash when expanding root type in the mypy plugin by @Viicos in #11735
- Fix issue with recursive generic models by @Viicos in #11775
- Traverse
function-before
schemas during schema gathering by @Viicos in #11801
v2.11.3 2025-04-08
v2.11.2 2025-04-03
What's Changed
Fixes
- Bump
pydantic-core
to v2.33.1 by @Viicos in #11678 - Make sure
__pydantic_private__
exists before setting private attributes by @Viicos in #11666 - Do not override
FieldInfo._complete
when using field from parent class by @Viicos in #11668 - Provide the available definitions when applying discriminated unions by @Viicos in #11670
- Do not expand root type in the mypy plugin for variables by @Viicos in #11676
- Mention the attribute name in model fields deprecation message by @Viicos in #11674
- Properly validate parameterized mappings by @Viicos in #11658
- Prepare release v2.11.2 by @Viicos in #11684
Full Changelog: v2.11.1...v2.11.2
v2.11.1 2025-03-28
What's Changed
Fixes
- Do not override
'definitions-ref'
schemas containing serialization schemas or metadata by @Viicos in #11644
Full Changelog: v2.11.0...v2.11.1
v2.11.0 2025-03-27
What's Changed
Packaging
- Re-enable memray related tests on Python 3.12+ by @Viicos in #11191
- Bump astral-sh/setup-uv from 4 to 5 by @dependabot in #11205
- Add a
check_pydantic_core_version()
function by @Viicos in #11324 - Remove
greenlet
development dependency by @Viicos in #11351 - Bump ruff from 0.9.2 to 0.9.5 by @Viicos in #11407
- Improve release automation process by @austinyu in #11427
- Bump dawidd6/action-download-artifact from 8 to 9 by @dependabot in #11513
- Bump
pydantic-core
to v2.32.0 by @Viicos in #11567
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
- Add support for validating v6, v7, v8 UUIDs by @astei in #11436
- Improve alias configuration APIs by @sydney-runkle in #11468
- Add experimental support for free threading by @Viicos in #11516
- Add
encoded_string()
method to the URL types by @YassinNouh21 in #11580 - Add support for
defer_build
with@validate_call
decorator by @Viicos in #11584 - Allow
@with_config
decorator to be used with keyword arguments by @Viicos in #11608 - Simplify customization of default value inclusion in JSON Schema generation by @Viicos in #11634
- Add
generate_arguments_schema()
function by @Viicos in #11572
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
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
- Optimize calls to
get_type_ref
by @Viicos in #10863 - 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 - 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 in #11244
- Create a single dictionary when creating a
CoreConfig
instance by @sydney-runkle in #11384 - Reuse cached core schemas for parametrized generic Pydantic models by @MarkusSintonen in #11434
Fixes
- Add validation tests for
_internal/_validators.py
by @tkasuz in #10763 - Subclass all single host url classes from
AnyUrl
to preserve behavior from v2.9 by @sydney-runkle in #10856 - Improve
TypeAdapter
instance repr by @sydney-runkle in #10872 - Use the correct frame when instantiating a parametrized
TypeAdapter
by @Viicos in #10893 - Relax check for validated data in default factory utils by @sydney-runkle in #10909
- Fix type checking issue with
model_fields
andmodel_computed_fields
by @sydney-runkle in #10911 - Use the parent configuration during schema generation for stdlib dataclasses by @sydney-runkle in #10928
- Use the globals of the function when evaluating the return type of serializers and computed_fields by @Viicos in #10929
- Fix url constraint application by @sydney-runkle in #10922
- Fix URL equality with different validation methods by @sydney-runkle in #10934
- Fix JSON schema title when specified as
''
by @sydney-runkle in #10936 - Do not evaluate annotations for private fields by @Viicos in #10962
- Support serialization as any for
Secret
types andUrl
types by @sydney-runkle in #10947 - Fix type hint of
Field.default
to be compatible with Python 3.8 and 3.9 by @Viicos in #10972 - hashing support for urls by @sydney-runkle in #10975
- Hide
BaseModel.__replace__
definition from type checkers by @Viicos in #10979 - Set fields when
defer_build
is set on Pydantic dataclasses by @Viicos in #10984 - Do not resolve the JSON Schema reference for
dict
core schema keys by @Viicos in #10989 - Use the globals of the function when evaluating the return type for
PlainSerializer
andWrapSerializer
functions by @Viicos in #11008 - Fix host required enforcement for urls to be compatible with v2.9 behavior by @sydney-runkle in #11027
- Fix url json schema in
serialization
mode by @sydney-runkle in #11035 - Fix for comparison of AnyUrl objects by @alexprabhat99 in #11082
- Properly fetch PEP 695 type params for functions, do not fetch annotations from signature by @Viicos in #11093
- 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 - Include JSON Schema input core schema in function schemas by @Viicos in #11085
- Add
len
to_BaseUrl
to avoid TypeError by @Kharianne in #11111 - Make sure the type reference is removed from the seen references by @Viicos in #11143
- Add FastAPI and SQLModel to third-party tests by @sydney-runkle in #11044
- 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 - Remove custom MRO implementation of Pydantic models by @Viicos in #11184
- Add pandera third-party tests by @Viicos in #11193
- Add ODMantic third-party tests by @sydney-runkle in #11197
- 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
- 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 - Fix url serialization for unions by @sydney-runkle in #11227
- Support initializing root model fields with values of the
root
type in the mypy plugin by @Viicos in #11212 - Move
deque
schema gen toGenerateSchema
class by @sydney-runkle in https://github.com/pydantic/pydanti...
v2.11.0b2 2025-03-17
v2.11.0b1 2025-03-06
What's Changed
Note
Addendum: 2.11 introduced a small behavior change with Final
attributes with an underscore:
class Model(BaseModel):
_var: Final[int] = 1
In 2.10, _var
would be considered as a class variable, but as a private attribute in 2.11.
As documented in the blog post, you can make use of ClassVar
instead of Final
to keep it as a class variable.
Packaging
- Add a
check_pydantic_core_version()
function by @Viicos in #11324 - Remove
greenlet
development dependency by @Viicos in #11351 - Use the
typing-inspection
library by @Viicos in #11479 - Bump
pydantic-core
tov2.31.1
by @sydney-runkle in #11526
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
- Add support for validating v6, v7, v8 UUIDs by @astei in #11436
- Improve alias configuration APIs by @sydney-runkle in #11468
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 - Breaking Change: Move core schema generation logic for path types inside the
GenerateSchema
class by @sydney-runkle in #10846 - Remove Python 3.8 Support by @sydney-runkle in #11258
- Optimize calls to
get_type_ref
by @Viicos in #10863 - 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 - 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 in #11244
- Create a single dictionary when creating a
CoreConfig
instance by @sydney-runkle in #11384 - Bump
pydantic-core
and thus useSchemaValidator
andSchemaSerializer
caching by @sydney-runkle in #11402 - Reuse cached core schemas for parametrized generic Pydantic models by @MarkusSintonen in #11434
Fixes
- Improve
TypeAdapter
instance repr by @sydney-runkle in #10872 - Use the correct frame when instantiating a parametrized
TypeAdapter
by @Viicos in #10893 - 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 - 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 - 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
- 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 - Add support for
validation_alias
in the mypy plugin by @Viicos in #11295 - Fix JSON Schema reference collection with
"examples"
keys by @Viicos in #11305 - 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 - Use the correct JSON Schema mode when handling function schemas by @Viicos in #11367
- Improve exception message when encountering recursion errors during type evaluation by @Viicos in #11356
- Always include
additionalProperties: True
for arbitrary dictionary schemas by @austinyu in #11392 - Expose
fallback
parameter in serialization methods by @Viicos in #11398 - Fix path serialization behavior by @sydney-runkle in #11416
- Do not reuse validators and serializers during model rebuild by @Viicos in #11429
- Collect model fields when rebuilding a model by @Viicos in #11388
- Allow cached properties to be altered on frozen models by @Viicos in #11432
- Fix tuple serialization for
Sequence
types by @sydney-runkle in #11435 - Fix: do not check for
__get_validators__
on classes where__get_pydantic_core_schema__
is also defined by @tlambert03 in #11444 - Allow callable instances to be used as serializers by @Viicos in #11451
- Improve error thrown when overriding field with a property by @sydney-runkle in #11459
- Fix JSON Schema generation with referenceable core schemas holding JSON metadata by @Viicos in #11475
- Support strict specification on union member types by @sydney-runkle in #11481
- Implicitly set
validate_by_name
toTrue
whenvalidate_by_alias
isFalse
by @sydney-runkle in #11503 - Change type of
Any
when synthesizingBaseSettings.__init__
signature in the mypy plugin by @Viicos in #11497 - Support type variable defaults referencing other type variables by @Viicos in #11520
- Fix
ValueError
on year zero by @davidhewitt in pydantic/pydantic-core#1583 dataclass
InitVar
shouldn't be required on serialization by @sydney-runkle in pydantic/pydantic-core#1602
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 c...