Skip to content

Releases: pydantic/pydantic

v2.11.7 2025-06-14

14 Jun 08:34
Compare
Choose a tag to compare

What's Changed

Fixes

  • Copy FieldInfo instance if necessary during FieldInfo build by @Viicos in #11980

Full Changelog: v2.11.6...v2.11.7

v2.11.6 2025-06-13

13 Jun 09:01
Compare
Choose a tag to compare

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

23 May 08:58
Compare
Choose a tag to compare

What's Changed

Fixes

  • Check if FieldInfo is complete after applying type variable map by @Viicos in #11855
  • Do not delete mock validator/serializer in model_rebuild() by @Viicos in #11890
  • Do not duplicate metadata on model rebuild by @Viicos in #11902

Full Changelog: v2.11.4...v2.11.5

v2.11.4 2025-04-29

29 Apr 20:25
Compare
Choose a tag to compare

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 provide model_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

08 Apr 13:26
876bf76
Compare
Choose a tag to compare

What's Changed

Packaging

Fixes

  • Preserve field description when rebuilding model fields by @Viicos in #11698

Full Changelog: v2.11.2...v2.11.3

v2.11.2 2025-04-03

03 Apr 13:14
bd1f8cf
Compare
Choose a tag to compare

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

28 Mar 21:04
6c38dc9
Compare
Choose a tag to compare

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

27 Mar 18:01
58e61fa
Compare
Choose a tag to compare

What's Changed

Packaging

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 to FieldInfo 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 and model_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 to GenerateSchema to complete removal of prepare_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 and model_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 and Url 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 and WrapSerializer 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__ on ModelMetaclass 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 to GenerateSchema class by @sydney-runkle in https://github.com/pydantic/pydanti...
Read more

v2.11.0b2 2025-03-17

17 Mar 16:17
d76d942
Compare
Choose a tag to compare
v2.11.0b2 2025-03-17 Pre-release
Pre-release

What's Changed

Packaging

New Features

  • Add experimental support for free threading by @Viicos in #11516

Fixes

  • Fix NotRequired qualifier not taken into account in stringified annotation by @Viicos in #11559

New Contributors

Full Changelog: v2.11.0b1...v2.11.0b2

v2.11.0b1 2025-03-06

06 Mar 16:23
bff7477
Compare
Choose a tag to compare
v2.11.0b1 2025-03-06 Pre-release
Pre-release

GitHub release

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

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 to FieldInfo 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 and model_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 use SchemaValidator and SchemaSerializer 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__ on ModelMetaclass 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 to True when validate_by_alias is False by @sydney-runkle in #11503
  • Change type of Any when synthesizing BaseSettings.__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

Read more