NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #24 most downloaded on PyPI
Core functionality for Pydantic validation and serialization
Last release 21 days ago
09 Sep 2026
Release timing varies
gaps range from 2 weeks to 4 months
No release notes found
nothing matched a version
3 versions withdrawn
withdrawn after publishing
4 years old
159 releases · first in 2022
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The highlights of the v2.13 release are available in the blog post. Several minor changes (considered non-breaking changes according to our versioning…
The highlights of the v2.13 release are available in the blog post. Several minor changes (considered non-breaking changes according to our versioning policy) are also included in this release. Make sure to look into them before upgrading.
This release contains the updated pydantic.v1 namespace, matching version 1.10.26 which includes support for Python 3.14.
See the beta releases for all changes sinces 2.12.
Any when synthesizing _build_sources for BaseSettings.__init__() signature in the mypy plugin by @Viicos in #13049extra configuration by @Viicos in #13062Full Changelog: https://github.com/pydantic/pydantic/compare/v2.12.0...v2.13.0
> Check out the blog post for release highlights. Several minor changes (considered non-breaking changes according to our versioning policy) are also…
<!-- Release notes generated using configuration in .github/release.yml at v2.12.0 -->
[!NOTE] Check out the blog post for release highlights. Several minor changes (considered non-breaking changes according to our versioning policy) are also included in this release. Make sure to look into them before upgrading.
[!WARNING] The core functionality of Pydantic V1 is not compatible with Python 3.14 or greater. This was fixed in v1.10.26.
This is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support.
Changelog (see the 2.12.0a1 and 2.12.0b1 releases for additional changes since 2.11):
extra parameter to the validate functions by @anvilpete in #12233exclude_computed_fields serialization option by @Viicos in #12334preverse_empty_path URL options by @Viicos in #12336union_format parameter to JSON Schema generation by @Viicos in #12147__qualname__ parameter for create_model by @Atry in #12001TypeAdapter by @Viicos in #12324Any for context type annotation in TypeAdapter by @inducer in #12279FieldInfo in pydantic.fields.__all__ by @Viicos in #12339validation_alias in @validate_call by @Viicos in #12340Any as context annotation in plugin API by @Viicos in #12341stacklevel in warnings when possible by @Viicos in #12342Full Changelog: https://github.com/pydantic/pydantic/compare/v2.11.10...v2.12.0
This is the final 2.12 release. It features the work of 20 external contributors and provides useful new features, along with initial Python 3.14 support. Several minor changes (considered non-breaking changes according to our versioning policy) are also included in this release. Make sure to look into them before upgrading.
Note that Pydantic V1 is not compatible with Python 3.14 and greater.
See the beta releases for all changes sinces 2.11.
extra parameter to the validate functions by @anvilpete in #12233exclude_computed_fields serialization option by @Viicos in #12334preverse_empty_path URL options by @Viicos in #12336union_format parameter to JSON Schema generation by @Viicos in #12147__qualname__ parameter for create_model by @Atry in #12001TypeAdapter by @Viicos in #12324Any for context type annotation in TypeAdapter by @inducer in #12279FieldInfo in pydantic.fields.__all__ by @Viicos in #12339validation_alias in @validate_call by @Viicos in #12340Any as context annotation in plugin API by @Viicos in #12341stacklevel in warnings when possible by @Viicos in #12342Raise a deprecation warning when a field is annotated as final with a default value by @Viicos in https://github.com/pydantic/pydantic/pull/11168
<!-- Release notes generated using configuration in .github/release.yml at v2.11.0 -->
check_pydantic_core_version() function by @Viicos in https://github.com/pydantic/pydantic/pull/11324greenlet development dependency by @Viicos in https://github.com/pydantic/pydantic/pull/11351pydantic-core to v2.32.0 by @Viicos in https://github.com/pydantic/pydantic/pull/11567default_factory_takes_validated_data property to FieldInfo by @Viicos in https://github.com/pydantic/pydantic/pull/11034type[] by @Viicos in https://github.com/pydantic/pydantic/pull/11088encoded_string() method to the URL types by @YassinNouh21 in https://github.com/pydantic/pydantic/pull/11580defer_build with @validate_call decorator by @Viicos in https://github.com/pydantic/pydantic/pull/11584@with_config decorator to be used with keyword arguments by @Viicos in https://github.com/pydantic/pydantic/pull/11608generate_arguments_schema() function by @Viicos in https://github.com/pydantic/pydantic/pull/11572create_model field definitions format by @Viicos in https://github.com/pydantic/pydantic/pull/11032model_fields and model_computed_fields on instances by @Viicos in https://github.com/pydantic/pydantic/pull/11169GenerateSchema class by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10846Mapping schema gen to GenerateSchema to complete removal of prepare_annotations_for_known_type workaround by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11247get_type_ref by @Viicos in https://github.com/pydantic/pydantic/pull/10863pydantic-core core schema validation by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11271FieldInfo annotations if required during schema building by @Viicos in https://github.com/pydantic/pydantic/pull/10769__setattr__ performance of Pydantic models by caching setter functions by @MarkusSintonen in https://github.com/pydantic/pydantic/pull/10868_typing_extra module by @Viicos in https://github.com/pydantic/pydantic/pull/11255CoreConfig instance by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11384_internal/_validators.py by @tkasuz in https://github.com/pydantic/pydantic/pull/10763AnyUrl to preserve behavior from v2.9 by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10856TypeAdapter instance repr by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10872TypeAdapter by @Viicos in https://github.com/pydantic/pydantic/pull/10893model_fields and model_computed_fields by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10911'' by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10936Secret types and Url types by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10947Field.default to be compatible with Python 3.8 and 3.9 by @Viicos in https://github.com/pydantic/pydantic/pull/10972BaseModel.__replace__ definition from type checkers by @Viicos in https://github.com/pydantic/pydantic/pull/10979defer_build is set on Pydantic dataclasses by @Viicos in https://github.com/pydantic/pydantic/pull/10984dict core schema keys by @Viicos in https://github.com/pydantic/pydantic/pull/10989PlainSerializer and WrapSerializer functions by @Viicos in https://github.com/pydantic/pydantic/pull/11008serialization mode by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11035Literal values if using PEP 695 type aliases by @Viicos in https://github.com/pydantic/pydantic/pull/11114__subclasscheck__ on ModelMetaclass to avoid memory leak and performance issues by @Viicos in https://github.com/pydantic/pydantic/pull/11116len to _BaseUrl to avoid TypeError by @Kharianne in https://github.com/pydantic/pydantic/pull/11111Annotated form by @Viicos in https://github.com/pydantic/pydantic/pull/11109WithJsonSchema schema to avoid sharing mutated data by @thejcannon in https://github.com/pydantic/pydantic/pull/11014CoreMetadata definition by @Viicos in https://github.com/pydantic/pydantic/pull/11216_Definitions class by @Viicos in https://github.com/pydantic/pydantic/pull/11208root type in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11212deque schema gen to GenerateSchema class by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11239use_attribute_docstrings by @Viicos in https://github.com/pydantic/pydantic/pull/11246decimal_places_validator by @misrasaurabh1 in https://github.com/pydantic/pydantic/pull/11281validation_alias in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11295"examples" keys by @Viicos in https://github.com/pydantic/pydantic/pull/11305ClickHouseDsn by @Maze21127 in https://github.com/pydantic/pydantic/pull/11319Decimal instances by @Viicos in https://github.com/pydantic/pydantic/pull/11350examples keys by @Viicos in https://github.com/pydantic/pydantic/pull/11366additionalProperties: True for arbitrary dictionary schemas by @austinyu in https://github.com/pydantic/pydantic/pull/11392fallback parameter in serialization methods by @Viicos in https://github.com/pydantic/pydantic/pull/11398Sequence types by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11435__get_validators__ on classes where __get_pydantic_core_schema__ is also defined by @tlambert03 in https://github.com/pydantic/pydantic/pull/11444langchain third party tests by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11474validate_by_name to True when validate_by_alias is False by @sydney-runkle in https://github.com/pydantic/pydantic/pull/11503Any when synthesizing BaseSettings.__init__ signature in the mypy plugin by @Viicos in https://github.com/pydantic/pydantic/pull/11497typing-inspection library by @Viicos in https://github.com/pydantic/pydantic/pull/11479NotRequired qualifier not taken into account in stringified annotation by @Viicos in https://github.com/pydantic/pydantic/pull/11559Full Changelog: https://github.com/pydantic/pydantic/compare/v2.10.6...v2.11.0
Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). See the blog post for more details.
encoded_string() method to the URL types by @YassinNouh21 in #11580defer_build with @validate_call decorator by @Viicos in #11584@with_config decorator to be used with keyword arguments by @Viicos in #11608generate_arguments_schema() function by @Viicos in #11572pydantic-core to v2.33.0 by @Viicos in #11631Bump pydantic-core version to v2.27.1 by @sydney-runkle in #10938
pydantic-core version to v2.27.1 by @sydney-runkle in #10938TypeAdapter by @Viicos in #10893default_factory utils by @sydney-runkle in #10909model_fields and model_computed_fields by @sydney-runkle in #10911dataclasses by @sydney-runkle in #10928globals of the function when evaluating the return type of serializers and computed_fields by @Viicos in #10929'' by @sydney-runkle in #10936python mode serialization for complex inference by @sydney-runkle in pydantic-core#1549Full Changelog: https://github.com/pydantic/pydantic/compare/v2.10.0...v2.10.1
Fix class access of deprecated computed_fields by @Viicos in #10391
The code released in v2.10.0 is practically identical to that of v2.10.0b2. See the v2.10 release blog post for the highlights!
pydantic-core to v2.27.0 by @sydney-runkle in #10825fractions.Fraction by @sydney-runkle in #10318Hashable for json validation by @sydney-runkle in #10324SocketPath type for linux systems by @theunkn0wn1 in #10378examples by @sydney-runkle in #10417defer_build for Pydantic dataclasses by @Viicos in #10313TypedDict to type hint variadic keyword arguments with @validate_call by @Viicos in #10416protected_namespaces by @sydney-runkle in #10522propertyNames in JSON schema by @FlorianSW in #10478__replace__ protocol for Python 3.13+ support by @sydney-runkle in #10596sort method for JSON schema generation by @sydney-runkle in #10595@validate_call callable argument by @kc0506 in #10627experimental_allow_partial support by @samuelcolvin in #10748ValidationError and PydanticCustomError by @Youssefares in pydantic/pydantic-core#1413trailing-strings support to experimental_allow_partial by @sydney-runkle in #10825rebuild() method for TypeAdapter and simplify defer_build patterns by @sydney-runkle in #10537TypeAdapter instance repr by @sydney-runkle in #10872SchemaGenerator until interface is more stable by @sydney-runkle in #10303defer_build on TypeAdapters, removing experimental flag by @sydney-runkle in #10329mro of generic subclass by @kc0506 in #10100b64decode and b64encode for Base64Bytes type by @sydney-runkle in #10486@dataclass decorator and with the __pydantic_config__ attribute by @sydney-runkle in #10406Ellipsis (...) with Field by @Viicos in #10661Literals and Enums by @Viicos in #10692Any or Never when replacing type variables by @Viicos in #10338base64 bytes by @bschoenmaeckers in pydantic/pydantic-core#1448CoreMetadata refactor with an emphasis on documentation, schema build time performance, and reducing complexity by @sydney-runkle in #10675computed_field with field_serializer by @nix010 in #10390Predicate issue in v2.9.0 by @sydney-runkle in #10321annotated-types bound by @sydney-runkle in #10327tzdata install requirement into optional timezone dependency by @jakob-keller in #10331namedtuple core schemas by @Viicos in #10337IncEx type alias definition by @Viicos in #10339ModelMetaclass.mro by @Viicos in #10372computed_fields by @Viicos in #10391inspect.iscoroutinefunction works on coroutines decorated with @validate_call by @MovisLi in #10374NameError when using validate_call with PEP 695 on a class by @kc0506 in #10380ZoneInfo with various invalid types by @sydney-runkle in #10408PydanticUserError on empty model_config with annotations by @cdwilson in #10412_IncEx type alias, only allow True by @Viicos in #10414PlainValidator by @Viicos in #10427json_schema_input_type by @Viicos in #10439Representation by @Viicos in #10480max_digits and decimal_places) by @sydney-runkle in #10506__pydantic_core_schema__ from the current class during schema generation by @Viicos in #10518stacklevel on deprecation warnings for BaseModel by @sydney-runkle in #10520stacklevel in BaseModel.__init__ by @Viicos in #10526ConfigWrapper.core_config to take the title directly by @Viicos in #10562mode='python' by @sydney-runkle in #10594Base64Etc types by @sydney-runkle in #10584validate_call ignoring Field in Annotated by @kc0506 in #10610Self is invalid by @kc0506 in #10609core_schema.InvalidSchema instead of metadata injection + checks by @sydney-runkle in #10523type with typing.Self and type aliases by @kc0506 in #10621Field and PrivateAttr functions by @Viicos in #10651mypy plugin implementation by @Viicos in #10669typing_extensions variant of TypeAliasType by @Daraan in #10713BaseModel.model_copy() by @Viicos in #10751isinstance behavior for urls by @sydney-runkle in #10766cached_property can be set on Pydantic models by @Viicos in #10774host_required for URLs by @Viicos in pydantic/pydantic-core#1488coerce_numbers_to_str enabled and string has invalid Unicode character by @andrey-berenda in pydantic/pydantic-core#1515complex values in Enums by @changhc in pydantic/pydantic-core#1524_typing_extra module by @Viicos in #10725bytearray to TypeAdapter.validate_json signature by @samuelcolvin in #10802Field by @Viicos in #10816validate_call by @sydney-runkle in #10807IncEx type alias to be compatible with mypy by @Viicos in #10813__signature__ a lazy property, do not deepcopy defaults by @Viicos in #10818__signature__ lazy for dataclasses, too by @sydney-runkle in #10832AnyUrl to preserve behavior from v2.9 by @sydney-runkle in #10856Full Changelog: https://github.com/pydantic/pydantic/compare/v2.9.2...v2.10.0
Breaking Change: Merge dict type json_schema_extra by @sydney-runkle in #9792
The code released in v2.9.0 is practically identical to that of v2.9.0b2.
Check out our blog post to learn more about the release highlights!
ruff to v0.5.0 and pyright to v1.1.369 by @sydney-runkle in #9801pydantic-extra-types to v2.9.0 by @sydney-runkle in #9832pdm v2.18.1 by @Viicos in #10138v1 version stub to v1.10.18 by @sydney-runkle in #10214pydantic-core to v2.23.2 by @sydney-runkle in #10311ZoneInfo by @Youssefares in #9896Config.val_json_bytes by @josh-newman in #9770complex number by @changhc in #9654annotated_types.Not by @aditkumar72 in #10210WithJsonSchema to inject $refs w/ http or https links by @dAIsySHEng1 in #9863PathLike types by @nix010 in #9764str or callable discriminators to select the correct serializer by @sydney-runkle in in pydantic/pydantic-core#1397dict type json_schema_extra by @sydney-runkle in #9792
pattern for incompatible types by @sydney-runkle in #10158'allOf' JSON schema workarounds by @dpeachey in #10029typed_dict_cls data from CoreMetadata by @sydney-runkle in #10180Examples class by @Viicos in #10181initial_metadata from internal metadata construct by @sydney-runkle in #10194re.Pattern.search instead of re.Pattern.match for consistency with rust behavior by @tinez in pydantic/pydantic-core#1368pydantic-core serialization warning by @BoxyUwU in pydantic/pydantic-core#1377pydantic-core, change metadata type hint in core schemas from Any -> Dict[str, Any] | None by @sydney-runkle in pydantic/pydantic-core#1411self isn't returned from model validator by @sydney-runkle in #10255BaseModel by @sydney-runkle in #10013multiple_of_validator() by 31% in pydantic/_internal/_validators.py by @misrasaurabh1 in #9839ModelPrivateAttr.__set_name__() by 18% in pydantic/fields.py by @misrasaurabh1 in #9841dataclass() by 7% in pydantic/dataclasses.py by @misrasaurabh1 in #9843_field_name_for_signature by 37% in pydantic/_internal/_signature.py by @misrasaurabh1 in #9951GenerateSchema._unpack_refs_defs by 26% in pydantic/_internal/_generate_schema.py by @misrasaurabh1 in #9949apply_each_item_validators by 100% in pydantic/_internal/_generate_schema.py by @misrasaurabh1 in #9950ConfigWrapper.core_config by 28% in pydantic/_internal/_config.py by @misrasaurabh1 in #9953use_enum_values on Literal types by @kwint in #9787BaseModel/RootModel inheritance by @dmontagu in #9913str type annotation with Any in validator factories in documentation on validators by @maximilianfellhuber in #9885ComputedFieldInfo.wrapped_property pointer when a property setter is assigned by @tlambert03 in #9892main.IncEnx by @tlambert03 in #9924type[Annotated[...]] by @Viicos in #9932mypy plugin: handle frozen fields on a per-field basis by @dmontagu in #9935invalid-annotated-type error code by @sydney-runkle in #9948uuid, url, and ip types by @sydney-runkle in #9975date schemas to _generate_schema.py by @sydney-runkle in #9976decimal.Decimal validation to _generate_schema.py by @sydney-runkle in #9977_std_types_schema.py by @sydney-runkle in #9959GenerateSchema.match_type options by @sydney-runkle in #9961dataclass ignoring default_factory passed in Annotated by @kc0506 in #9971Sequence ignoring discriminator by @kc0506 in #9980IPvAnyAddress and IPvAnyInterface by @haoyun in #9990mypy plugin for from_orm check requiring from_attributes=True config by @radekwlsk in #9938strict=True to __init__ in mypy plugin by @kc0506 in #9998deque annotations by @sydney-runkle in #10018__pydantic_extra__ annotation in specific circumstances by @Viicos in #10070frozen enforcement for dataclasses by @sydney-runkle in #10066__get_pydantic_core_schema__ signature by @Viicos in #10075is_annotated consistently by @Viicos in #10095PydanticDeprecatedSince26 typo by @kc0506 in #10101pyright tests, refactor model decorators signatures by @Viicos in #10092ip serialization logic by @sydney-runkle in #10112dataclasses by @mochi22 in #10082when_used set to 'json-unless-none' and the default value is None by @Viicos in #10121ImportString special cases by @sydney-runkle in #10137__ prefixed annotations by @sydney-runkle in #10136nullable schemas with serialization schema available during JSON Schema generation by @Viicos in #10132BaseModel annotations by @kc0506 in #10110PrivateAttr with Annotated by @Viicos in #10157number type for literal and enum schemas by @Viicos in #10172Mapping and MutableMapping annotations to use mapping schema instead of dict schema by @sydney-runkle in #10020field_serializer with computed field when using * by @nix010 in pydantic/pydantic-core#1349Union serializer before inference by @sydney-runkle in pydantic/pydantic-core#1398float serialization behavior in strict mode by @sydney-runkle in pydantic/pydantic-core#1400exactness into Decimal validation logic to improve union validation behavior by @sydney-runkle in in pydantic/pydantic-core#1405pytest.warns() by @mgorny in #10241ModelMetaclass by @Viicos in #10242__init__ by @Viicos in #10264BigInt serialization for int subclasses by @kxx317 in pydantic/pydantic-core#1417info by @sydney-runkle in #10277__pydantic_complete__ is set when rebuilding dataclasses by @Viicos in #10291schema_generator config value in TypeAdapter by @sydney-runkle in #10300pydanticpydantic-coreBreaking Change: Improve smart union matching logic by @sydney-runkle in pydantic/pydantic-core#1322 You can read more about our smart union matching…
The code released in v2.8.0 is functionally identical to that of v2.8.0b1.
Check out our blog post to learn more about the release highlights!
v1.1.367 and add type checking tests for pipeline API by @adriangb in #9674pydantic.v1 stub to v1.10.17 by @sydney-runkle in #9707v2.8.0b1 by @sydney-runkle in #9741pydantic-core to v2.20.0 by @sydney-runkle in #9745pdm version used for pdm.lock to v2.16.1 by @sydney-runkle in #9761ruff v0.4.8 by @Viicos in #9585defer_build for TypeAdapter by @MarkusSintonen in #8939deprecated field in json schema by @NeevCohen in #9298fail_fast feature by @uriyyo in #9708ser_json_inf_nan='strings' mode to produce valid JSON by @josh-newman in pydantic/pydantic-core#1307Annotated field by @nix010 in #9170__validators__ values in create_model by @sydney-runkle in #9697smart union matching logic by @sydney-runkle in pydantic/pydantic-core#1322
You can read more about our smart union matching logic here. In some cases, if the old behavior
is desired, you can switch to left-to-right mode and change the order of your Union members._display_error_loc() by 25% in pydantic/v1/error_wrappers.py by @misrasaurabh1 in #9653_get_all_json_refs() by 34% in pydantic/json_schema.py by @misrasaurabh1 in #9650is_pydantic_dataclass() by 41% in pydantic/dataclasses.py by @misrasaurabh1 in #9652to_snake() by 27% in pydantic/alias_generators.py by @misrasaurabh1 in #9747unwrap_wrapped_function() by 93% in pydantic/_internal/_decorators.py by @misrasaurabh1 in #9727__spec__.parent with __package__ by @hramezani in #9331Sequence type by @anesmemisevic in #9303_frame_depth by @Viicos in #9353ImportString json schema compatible by @amitschang in #9344PrivateAttr) from __init__ signature in type checkers by @idan22moral in #9293TypeVar defaults robust to the CPython PEP-696 implementation by @AlexWaygood in #9426PlainSerializer with builtin types by @Viicos in #9450strict specification for StringConstraint(strict=False) by @vbmendes in #9476Self where possible by @Viicos in #9479RootModel.model_construct signature in the mypy plugin by @Viicos in #9480validation_context by @OhioDschungel6 in #9508dump_json/dump_python by @alexcouper in #9495Field() constructor by @bjmc in #9484TypeAdapter by @Viicos in #9570__setstate__ of BaseModel by @anhpham1509 in #9584PEP 746 by @adriangb in #9587TypeVar fields by @dmontagu in #9606regex flags in validation and json schema by @sydney-runkle in #9591IpvAnyAddress by @sydney-runkle in #9640__pydantic_extra__ by @dmontagu in #9659Optional[Decimal] by @lazyhope in #9754validate_call type params fix by @sydney-runkle in #9760pytest.warns() by @s-t-e-v-e-n-k in #9702re.Pattern object in regex patterns to allow for regex flags by @sydney-runkle in pydantic/pydantic-core#1318Full Changelog: https://github.com/pydantic/pydantic/compare/v2.7.4...v2.8.0/
Add support for deprecated fields by @Viicos in #8237
The code released in v2.7.0 is practically identical to that of v2.7.0b1.
pyproject.toml sections by @Viicos in #8899pydantic-core to v2.18.1 by @sydney-runkle in #9211jiter v0.2.0 by @samuelcolvin in pydantic/pydantic-core#1250FieldInfo.description by @Viicos in #6563with_config decorator to comply with typing spec by @Viicos in #8611ByteSize.human_readable by @jks15satoshi in #8706Secret base type by @conradogarciaberrotaran in #8519Sphinx inventories for cross references in docs by @Viicos in #8682deprecated fields by @Viicos in #8237field_serializer('*') by @ornariece in #9001model_config is defined as a model property by @alexeyt101 in #9004create_model() to support typing.Annotated as input by @wannieman98 in #8947ClickhouseDsn support by @solidguy7 in #9062re.Pattern[str] to pattern field by @jag-k in #9053serialize_as_any runtime setting by @sydney-runkle in #8830typing.Self by @Youssefares in #9023context to serialization by @ornariece in #8965Finalized in v2.7.0, rather than v2.7.0b1:
warnings parameter for serialization utilities to allow raising a warning by @Lance-Drane in #9166model_construct behavior with extra by @sydney-runkle in #8807RootModel subclasses by @sydney-runkle in #8857PEP570 syntax by @Viicos in #8940enum and type to the JSON schema for single item literals by @dmontagu in #8944update_json_schema internal function by @sydney-runkle in #9125enum validator improvements by @samuelcolvin in #9045enum validation and serialization to Rust by @samuelcolvin in #9064aarch64(Note: SIMD on x86 will be implemented in a future release) by @samuelcolvin in in pydantic/jiter#65Cow<str> from jiter by @davidhewitt in pydantic/pydantic-core#1231Sequences by @sydney-runkle in #8614__qualname__ by @anci3ntr0ck in #8642__pydantic_extra__ annotation being a string or inherited by @alexmojaki in #8659NameEmail by @Holi0317 in #8650BaseModel by @bluenote10 in #8651mypy plugin and no_strict_optional = True by @dmontagu in #8666ByteSize error type change by @sydney-runkle in #8681__pydantic_config__ ignored for TypeDict by @13sin in #8734pytest v8.0.0 due to pytest.warns() starting to work inside pytest.raises() by @mgorny in #8678is_valid_field from 1.x for mypy plugin by @DanielNoord in #8738mypy strict equality flag by @dmontagu in #8799FieldInfo.__repr_args__ by @sydney-runkle in #8801BaseModel type annotations to be resolvable by typing.get_type_hints by @devmonkey22 in #7680AliasGenerator by @sydney-runkle in #8810date -> datetime timezone assumption fix by @sydney-runkle in #8823ast.Str by @Viicos in #8837deprecated decorators by @Viicos in #8877NameEmail if name includes an email address by @NeevCohen in #8860TypeAdapter's typing compatible with special forms by @adriangb in #8923enums by @dmontagu in #8920model_json_schema usage by @sydney-runkle in #8928mypy plugin by @dmontagu in #9008PlainSerializer usage with std type constructor by @sydney-runkle in #9031Model.__getattr__() by @NeevCohen in #9082ClassVar forward ref inherited from parent class by @alexmojaki in #9097True by @andresliszt in #8977deque when passed to Sequence[blah blah blah] by @sydney-runkle in #9128model_post_init by @Viicos in #9134model_construct with validation_alias by @ornariece in #9144Literal null types by @bruno-f-cruz in #9135Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.4...v2.7.0/
Update pydantic-settings version in the docs by @hramezani in #8906
Upgrade to pydantic-core 2.16.3 by @sydney-runkle in #8879
pydantic-core 2.16.3 by @sydney-runkle in #8879Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.1...v2.6.2/
Upgrade to pydantic-core 2.16.2 by @sydney-runkle in #8717
pydantic-core 2.16.2 by @sydney-runkle in #8717mypy plugin and no_strict_optional = True by @dmontagu in #8666ByteSize error type change by @sydney-runkle in #8681Field annotations in dataclasses by @sydney-runkle in #8679PlainValidator by @sydney-runkle in #8710Union by @davidhewitt in pydantic/pydantic-core#1174computed_field JSON serializer exclude_none behavior by @sydney-runkle in pydantic/pydantic-core#1187Full Changelog: https://github.com/pydantic/pydantic/compare/v2.6.0...v2.6.1/
Move getattr warning in deprecated BaseConfig by @tlambert03 in #7183
The code released in v2.6.0 is practically identical to that of v2.6.0b1.
email-validator version >= 2.0 by @commonism in #6033ruff target version to Python 3.8 by @Elkiwa in #8341pydantic-extra-types==2.4.1 by @yezz123 in #8478pyright==1.1.345 by @Viicos in #8453NatsDsn by @ekeew in #6874ConfigDict.ser_json_inf_nan by @davidhewitt in #8159types.OnErrorOmit by @adriangb in #8222AliasGenerator usage by @sydney-runkle in #8282yyyy-MM-DD datetime parsing by @sydney-runkle in #8404ByteSize class #8415 by @luca-matei in #8507ByteSize by @geospackle in #8537eval_type_backport to handle union operator and builtin generic subscripting in older Pythons by @alexmojaki in #8209dataclass fields init by @dmontagu in #8552ValidationError by @davidhewitt in pydantic/pydantic-core#1119self in BaseModel constructor, so no field name can ever conflict with it by @ariebovenberg in #8072@validate_call return a function instead of a custom descriptor - fixes binding issue with inheritance and adds self/cls argument to validation errors by @alexmojaki in #8268BaseModel docstring from JSON schema description by @sydney-runkle in #8352classproperty decorator for model_computed_fields by @Jocelyn-Gas in #8437int extraction by @samuelcolvin in pydantic/pydantic-core#1155dataclass serialization speedups by @samuelcolvin in pydantic/pydantic-core#1162HashMap creation when looking up small JSON objects in LazyIndexMaps by @samuelcolvin in pydantic/jiter#55Peak with more efficient Peek by @davidhewitt in pydantic/jiter#48getattr warning in deprecated BaseConfig by @tlambert03 in #7183model_fields, not whole __dict__ by @alexmojaki in #7786mypy plugin by @dmontagu in #7411mypy error on untyped ClassVar by @vincent-hachin-wmx in #8138BaseModel.__eq__ instead of whole __dict__ by @QuentinSoubeyranAqemia in #7825strict docstring in model_validate method. by @LukeTonin in #8223computed_field by @Viicos in #8227validate_call decorator to be dynamically assigned to a class method by @jusexton in #8249unittest.mock deprecation warnings by @ibleedicare in #8262JsonValue contains subclassed primitive values by @jusexton in #8286mypy error on free before validator (classmethod) by @sydney-runkle in #8285to_snake conversion by @jevins09 in #8316ModelMetaclass.__prepare__ by @slanzmich in #8305config specification when initializing a TypeAdapter when the annotated type has config already by @sydney-runkle in #8365alias in dataclass signature by @NeevCohen in #8387Field(...) in a forward ref by @dmontagu in #8494__dict__ with model_construct call by @sydney-runkle in #8500path_type creation when globals does not contain __name__ by @hramezani in #8470from __future__ import annotations by @sydney-runkle in #8513@deprecated by @Viicos in #8294model_construct call by @sydney-runkle in #8525TypeAliasType for types with refs by @dmontagu in #8526pydantic.Field(repr=False) in dataclasses by @tigeryy2 in #8511dataclass_transform behavior for RootModel by @Viicos in #8163exclude_none for json serialization of computed_fields by @sydney-runkle in pydantic/pydantic-core#1098pydanticpydantic-coreThe code released in v2.5.0 is functionally identical to that of v2.5.0b1.
The code released in v2.5.0 is functionally identical to that of v2.5.0b1.
pyright==1.1.335 by @Viicos in #8075ValidationError errors by @adriangb in #7806__doc__ argument in create_model() by @chris-spann in #7863regex_engine flag - meaning you can use with the Rust or Python regex libraries in constraints by @utkini in #7768ComputedFieldInfo by @alexmojaki in #7889ruff formatter by @Luca-Blight in #7930validation_error_cause to config by @zakstucke in #7626CallableDiscriminator and Tag by @dmontagu in #7983
CallableDiscriminator renamed to Discriminator by @dmontagu in #8047examples and json_schema_extra to @computed_field by @alexmojaki in #8013JsonValue type by @dmontagu in #7998str as argument to Discriminator by @dmontagu in #8047SchemaSerializer.__reduce__ method to enable pickle serialization by @edoakes in pydantic/pydantic-core#1006ultra_strict with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by @davidhewitt in pydantic/pydantic-core#867extra='allow' by @sydney-runkle in #7683Enum types with no cases by @sydney-runkle in #7927Generic before BaseModel by @alexmojaki in #7891jiter by @samuelcolvin in pydantic/pydantic-core#974__getattr__ for all package imports, improve import time by @samuelcolvin in #7947mypy issue with subclasses of RootModel by @sydney-runkle in #7677FieldInfo when a forward ref gets evaluated by @dmontagu in #7698SecretStr from JSON (regression in v2.4) by @sydney-runkle in #7729defer_build behavior with TypeAdapter by @sydney-runkle in #7736mypy versions by @dmontagu in #7742TypeVar handling when default is not set by @pmmmwh in #7719strict on Enum type fields by @sydney-runkle in #7761weakref.ref instead of subclassing to fix cloudpickle serialization by @edoakes in #7780model_post_init in subclasses by @alexmojaki in #7775json_schema_extra by @alexmojaki in #7803strict specification for UUID types by @sydney-runkle in #7865pydantic.Field(kw_only=True) with inherited dataclasses by @PrettyWood in #7827validate_call decorator for methods in classes with __slots__ by @sydney-runkle in #7883dataclasses.field default by @hramezani in #7898importlib_metadata on python 3.7 by @sydney-runkle in #7904| operator (Union) in PydanticRecursiveRef by @alexmojaki in #7892display_as_type for TypeAliasType in python 3.12 by @dmontagu in #7929NotRequired generics in TypedDict by @sydney-runkle in #7932TypeAliasType specifications produce different schema definitions by @alexdrydew in #7893PrivateAttr is passed from Annotated default position by @tabassco in #8004classmethod instead of classmethod[Any, Any, Any] by @Mr-Pepe in #7979Optional field with validate_default only performing one field validation by @sydney-runkle in pydantic/pydantic-core#1002definition-ref bug with Dict keys by @sydney-runkle in pydantic/pydantic-core#1014bool types with coerce_numbers_to_str=True by @sydney-runkle in pydantic/pydantic-core#1017NaN in float and decimal constraints by @davidhewitt in pydantic/pydantic-core#1037lax_str and lax_int support for enum values not inherited from str/int by @michaelhly in pydantic/pydantic-core#1015Union of List types by @sydney-runkle in pydantic/pydantic-core#1039max_digits and decimals to pass if normalized or non-normalized input is valid by @sydney-runkle in pydantic/pydantic-core#1049ValidationError messages by @Iipin in pydantic/pydantic-core#1050'-' as datetime input by @davidhewitt in pydantic/speedate#52 & pydantic/pydantic-core#1060pydanticpydantic-coreFull Changelog: https://github.com/pydantic/pydantic/compare/v2.4.2...v2.5.0
Mark Extra as deprecated by @disrupted in #7299
Base64Url types by @dmontagu in #7286number to str coercion by @lig in #7508field_name and data in all validators if there is data and a field name by @samuelcolvin in #7542BaseModel.model_validate_strings and TypeAdapter.validate_strings by @hramezani in #7552plugins experimental implementation by @lig @samuelcolvin and @Kludex in #6820model_post_init in subclass with private attrs by @Viicos in #7302Extra as deprecated by @disrupted in #7299EncodedStr a dataclass by @Kludex in #7396annotated_handlers to be public by @samuelcolvin in #7569CoreSchema by @adriangb in #7523CoreSchema walking by @adriangb in #7528dict.get and dict.setdefault with more verbose versions in CoreSchema building hot paths by @adriangb in #7536CoreSchema discovery by @adriangb in #7535CoreSchema validation for faster startup times by @adriangb in #7565TypedDict from grandparent classes by @dmontagu in #7272strict config overridable in field for Path by @hramezani in #7281ser_json_<timedelta|bytes> on default in GenerateJsonSchema by @Kludex in #7269SkipValidation to referenced schemas by @adriangb in #7381__get_pydantic_core_schema__ signature by @hramezani in #7415TypeAdapter) by @sydney-runkle in #7435TypeError on model_validator in wrap mode by @pmmmwh in #7496repr work for instances that failed initialization when handling ValidationErrors by @dmontagu in #7439UUID values having UUID.version=None by @lig in #7566__iter__ returning private cached_property info by @sydney-runkle in #7570Full Changelog: https://github.com/pydantic/pydantic/compare/v2.3.0...v2.4.0
Nothing published for this version
🔥 Remove orphaned changes file from repo by @lig in https://github.com/pydantic/pydantic/pull/7168
Field(..., exclude: bool) docs by @samuelcolvin in https://github.com/pydantic/pydantic/pull/7214Base64Str and Base64Bytes by @Kludex in https://github.com/pydantic/pydantic/pull/7192config.defer_build for serialization first cases by @samuelcolvin in https://github.com/pydantic/pydantic/pull/7024validators.md to correct validate_default kwarg by @lmmx in https://github.com/pydantic/pydantic/pull/7229tzinfo.fromutc method for TzInfo in pydantic-core by @lig in https://github.com/pydantic/pydantic/pull/7019__get_validators__ by @hramezani in https://github.com/pydantic/pydantic/pull/7197Full Changelog: https://github.com/pydantic/pydantic/compare/v2.2.1...v2.2.2
Field(..., exclude: bool) docs by @samuelcolvin in #7214Base64Str and Base64Bytes by @Kludex in #7192config.defer_build for serialization first cases by @samuelcolvin in #7024validators.md to correct validate_default kwarg by @lmmx in #7229tzinfo.fromutc method for TzInfo in pydantic-core by @lig in #7019__get_validators__ by @hramezani in #7197Deprecate Field.include by @hramezani in https://github.com/pydantic/pydantic/pull/6852
<!-- Release notes generated using configuration in .github/release.yml at main -->
Field.include by @hramezani in https://github.com/pydantic/pydantic/pull/6852Path fields by @samuelcolvin in https://github.com/pydantic/pydantic/pull/6903ForwardRef wrapper for py 3.10.0 (shim until bpo-45166) by @randomir in https://github.com/pydantic/pydantic/pull/6919main branch for badge links by @Viicos in https://github.com/pydantic/pydantic/pull/6925ser_json_bytes regarding base64 encoding by @Viicos in https://github.com/pydantic/pydantic/pull/7052@validate_call to work on async methods by @adriangb in https://github.com/pydantic/pydantic/pull/7046Settings and SettingsConfigDict by @JeanArhancet in https://github.com/pydantic/pydantic/pull/7002short_version and use it in links by @hramezani in https://github.com/pydantic/pydantic/pull/7115RootModel by @Kludex in https://github.com/pydantic/pydantic/pull/7113Field.exclude by @Viicos in https://github.com/pydantic/pydantic/pull/7086validate_assignment to use Field.frozen by @Viicos in https://github.com/pydantic/pydantic/pull/7103_core_utils by @samuelcolvin in https://github.com/pydantic/pydantic/pull/7040round_trip in Json type documentation by @jc-louis in https://github.com/pydantic/pydantic/pull/7137Full Changelog: https://github.com/pydantic/pydantic/compare/v2.1.1...v2.2.0
Field.include by @hramezani in #6852Path fields by @samuelcolvin in #6903ForwardRef wrapper for py 3.10.0 (shim until bpo-45166) by @randomir in #6919main branch for badge links by @Viicos in #6925ser_json_bytes regarding base64 encoding by @Viicos in #7052@validate_call to work on async methods by @adriangb in #7046Settings and SettingsConfigDict by @JeanArhancet in #7002short_version and use it in links by @hramezani in #7115RootModel by @Kludex in #7113Field.exclude by @Viicos in #7086validate_assignment to use Field.frozen by @Viicos in #7103_core_utils by @samuelcolvin in #7040round_trip in Json type documentation by @jc-louis in #7137Nothing published for this version
Nothing published for this version
💚 Insert the version without double quotes on tweet by @Kludex in https://github.com/pydantic/pydantic/pull/6437
GenerateJsonSchema.generate_definitions signature by @dmontagu in https://github.com/pydantic/pydantic/pull/6436Full Changelog: https://github.com/pydantic/pydantic/compare/v2.0.1...v2.0.2
RootModel would change the value of __dict__, #6457 by @dmontaguconstr documentation, renamed old regex to new pattern, #6452 by @miiliGenerateJsonSchema.generate_definitions signature, #6436 by @dmontaguSee the full changelog here
📝 Add note about Bump Pydantic by @Kludex in https://github.com/pydantic/pydantic/pull/6281
model_parametrized_name in docs/usage/models.md by @hramezani in https://github.com/pydantic/pydantic/pull/6325__modify_schema__ to co-exist __get_pydantic_json_schema__ by @adriangb in https://github.com/pydantic/pydantic/pull/6334create_model function by @TimDiekmann in https://github.com/pydantic/pydantic/pull/6347setattr adds field to model_extra by @aaraney in https://github.com/pydantic/pydantic/pull/6365validate_call schema generation and doc error for TypedDict by @adriangb in https://github.com/pydantic/pydantic/pull/6370Mac Address documentation by @yezz123 in https://github.com/pydantic/pydantic/pull/6367docs/usage/types/encoded.md by @hramezani in https://github.com/pydantic/pydantic/pull/6377Field inside of Annotated by @adriangb in https://github.com/pydantic/pydantic/pull/6373pydantic-extra-types to integration tests by @yezz123 in https://github.com/pydantic/pydantic/pull/6344repr() on qualname retrieval by @Kludex in https://github.com/pydantic/pydantic/pull/6382TypeError in validators by @Viicos in https://github.com/pydantic/pydantic/pull/6391Field annotations by merging them by @adriangb in https://github.com/pydantic/pydantic/pull/6398validate_call to instance when decorating methods by @dmontagu in https://github.com/pydantic/pydantic/pull/6406__hash__ for WithJsonSchema and Examples by @Kludex in https://github.com/pydantic/pydantic/pull/6414BaseModel.__getattr__ to raise a better error in case of AttributeError in model property by @hramezani in https://github.com/pydantic/pydantic/pull/6417main-pv2 FastAPI branch in integration tests by @lig in https://github.com/pydantic/pydantic/pull/6432Full Changelog: https://github.com/pydantic/pydantic/compare/v2.0...v2.0.1
First patch release of Pydantic V2
setattr (i.e. m.some_extra_field = 'extra_value')
are added to .model_extra if model_config extra='allowed'. Fixed #6333, #6365 by @aaraneySee the full changelog here
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →