pydantic 2.11.5


pip install pydantic

  Latest version

Released: May 22, 2025


Meta
Author: Samuel Colvin, Eric Jolibois, Hasan Ramezani, Adrian Garcia Badaracco, Terrence Dorsey, David Montague, Serge Matveenko, Marcelo Trylesinski, Sydney Runkle, David Hewitt, Alex Hall, Victorien Plot
Requires Python: >=3.9

Classifiers

Development Status
  • 5 - Production/Stable

Framework
  • Hypothesis
  • Pydantic

Intended Audience
  • Developers
  • Information Technology

License
  • OSI Approved :: MIT License

Operating System
  • OS Independent

Programming Language
  • Python
  • Python :: 3
  • Python :: 3 :: Only
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Topic
  • Internet
  • Software Development :: Libraries :: Python Modules

Pydantic

CI Coverage pypi CondaForge downloads versions license Pydantic v2 llms.txt

Data validation using Python type hints.

Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.9+; validate it with Pydantic.

Pydantic Logfire :fire:

We've recently launched Pydantic Logfire to help you monitor your applications. Learn more

Pydantic V1.10 vs. V2

Pydantic V2 is a ground-up rewrite that offers many new features, performance improvements, and some breaking changes compared to Pydantic V1.

If you're using Pydantic V1 you may want to look at the pydantic V1.10 Documentation or, 1.10.X-fixes git branch. Pydantic V2 also ships with the latest version of Pydantic V1 built in so that you can incrementally upgrade your code base and projects: from pydantic import v1 as pydantic_v1.

Help

See documentation for more details.

Installation

Install using pip install -U pydantic or conda install pydantic -c conda-forge. For more installation options to make Pydantic even faster, see the Install section in the documentation.

A Simple Example

from datetime import datetime
from typing import Optional
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str = 'John Doe'
    signup_ts: Optional[datetime] = None
    friends: list[int] = []

external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
user = User(**external_data)
print(user)
#> User id=123 name='John Doe' signup_ts=datetime.datetime(2017, 6, 1, 12, 22) friends=[1, 2, 3]
print(user.id)
#> 123

Contributing

For guidance on setting up a development environment and how to make a contribution to Pydantic, see Contributing to Pydantic.

Reporting a Security Vulnerability

See our security policy.

Changelog

v2.11.5 (2025-05-22)

GitHub release

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

v2.11.4 (2025-04-29)

GitHub release

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)

GitHub release

What's Changed

Packaging

Fixes

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

v2.11.2 (2025-04-03)

GitHub release

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

v2.11.1 (2025-03-28)

GitHub release

What's Changed

Fixes

  • Do not override 'definitions-ref' schemas containing serialization schemas or metadata by @Viicos in #11644

v2.11.0 (2025-03-27)

GitHub release

What's Changed

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.

Packaging

New Features

  • 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

Fixes

  • Allow generic typed dictionaries to be used for unpacked variadic keyword parameters by @Viicos in #11571
  • Fix runtime error when computing model string representation involving cached properties and self-referenced models by @Viicos in #11579
  • Preserve other steps when using the ellipsis in the pipeline API by @Viicos in #11626
  • Fix deferred discriminator application logic by @Viicos in #11591

New Contributors

v2.11.0b2 (2025-03-17)

GitHub 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

v2.11.0b1 (2025-03-06)

GitHub release

What's Changed

Packaging

New Features

Changes

Performance

Fixes

New Contributors

v2.11.0a2 (2025-02-10)

GitHub release

What's Changed

Pydantic v2.11 is a version strongly focused on build time performance of Pydantic models (and core schema generation in general). This is another early alpha release, meant to collect early feedback from users having issues with core schema builds.

Packaging

Performance

Fixes

  • Use the correct JSON Schema mode when handling function schemas by @Viicos in #11367
  • Fix JSON Schema reference logic with examples keys by @Viicos in #11366
  • 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

New Contributors

v2.11.0a1 (2025-01-30)

GitHub release

What's Changed

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

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

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 deque schema gen to GenerateSchema class by @sydney-runkle in #11239
  • 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
  • Disable pydantic-core core schema validation by @sydney-runkle in #11271

Performance

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__ 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
  • 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, use main 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

v2.10.6 (2025-01-23)

GitHub release

What's Changed

Fixes

v2.10.5 (2025-01-08)

GitHub release

What's Changed

Fixes

v2.10.4 (2024-12-18)

GitHub release

What's Changed

Packaging

Fixes

  • 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
  • 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

New Contributors

v2.10.3 (2024-12-03)

GitHub release

What's Changed

Fixes

  • 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
  • Add a default_factory_takes_validated_data property to FieldInfo by @Viicos in #11034
  • Fix url json schema in serialization mode by @sydney-runkle in #11035

v2.10.2 (2024-11-25)

GitHub release

What's Changed

Fixes

  • Only evaluate FieldInfo annotations if required during schema building by @Viicos in #10769
  • 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
  • Add hashing support for URL types by @sydney-runkle in #10975
  • Hide BaseModel.__replace__ definition from type checkers by @Viicos in #10979

v2.10.1 (2024-11-21)

GitHub release

What's Changed

Packaging

Fixes

New Contributors

v2.10.0 (2024-11-20)

The code released in v2.10.0 is practically identical to that of v2.10.0b2.

GitHub release

See the v2.10 release blog post for the highlights!

What's Changed

Packaging

New Features

Changes

Performance

  • Schema cleaning: skip unnecessary copies during schema walking by @Viicos in #10286
  • Refactor namespace logic for annotations evaluation by @Viicos in #10530
  • Improve email regexp on edge cases by @AlekseyLobanov in #10601
  • CoreMetadata refactor with an emphasis on documentation, schema build time performance, and reducing complexity by @sydney-runkle in #10675

Fixes

New Contributors

v2.10.0b2 (2024-11-13)

Pre-release, see the GitHub release for details.

v2.10.0b1 (2024-11-06)

Pre-release, see the GitHub release for details.

... see here for earlier changes.

2.11.5 May 22, 2025
2.11.4 Apr 29, 2025
2.11.3 Apr 08, 2025
2.11.2 Apr 03, 2025
2.11.1 Mar 28, 2025
2.11.0 Mar 27, 2025
2.11.0b2 Mar 17, 2025
2.11.0b1 Mar 06, 2025
2.11.0a2 Feb 10, 2025
2.11.0a1 Jan 30, 2025
2.10.6 Jan 24, 2025
2.10.5 Jan 09, 2025
2.10.4 Dec 18, 2024
2.10.3 Dec 03, 2024
2.10.2 Nov 26, 2024
2.10.1 Nov 22, 2024
2.10.0 Nov 20, 2024
2.10.0b2 Nov 13, 2024
2.10.0b1 Nov 06, 2024
2.9.2 Sep 17, 2024
2.9.1 Sep 09, 2024
2.9.0 Sep 05, 2024
2.9.0b2 Aug 31, 2024
2.9.0b1 Aug 26, 2024
2.8.2 Jul 04, 2024
2.8.1 Jul 03, 2024
2.8.0 Jul 01, 2024
2.8.0b1 Jun 27, 2024
2.7.4 Jun 12, 2024
2.7.3 Jun 03, 2024
2.7.2 May 28, 2024
2.7.1 Apr 23, 2024
2.7.0 Apr 11, 2024
2.7.0b1 Apr 03, 2024
2.6.4 Mar 12, 2024
2.6.3 Feb 27, 2024
2.6.2 Feb 23, 2024
2.6.1 Feb 05, 2024
2.6.0 Jan 29, 2024
2.6.0b1 Jan 19, 2024
2.5.3 Dec 22, 2023
2.5.2 Nov 22, 2023
2.5.1 Nov 15, 2023
2.5.0 Nov 13, 2023
2.5.0b1 Nov 09, 2023
2.4.2 Sep 28, 2023
2.4.1 Sep 26, 2023
2.4.0 Sep 25, 2023
2.3.0 Aug 23, 2023
2.2.1 Aug 18, 2023
2.2.0 Aug 17, 2023
2.1.1 Jul 25, 2023
2.1.0 Jul 25, 2023
2.0.3 Jul 14, 2023
2.0.2 Jul 05, 2023
2.0.1 Jul 04, 2023
2.0 Jun 30, 2023
2.0b3 Jun 17, 2023
2.0b2 Jun 03, 2023
2.0b1 Jun 01, 2023
2.0a4 May 05, 2023
2.0a3 Apr 20, 2023
2.0a2 Apr 12, 2023
2.0a1 Apr 03, 2023
1.10.22 Apr 24, 2025
1.10.21 Jan 14, 2025
1.10.20 Jan 07, 2025
1.10.19 Nov 06, 2024
1.10.18 Aug 22, 2024
1.10.17 Jun 20, 2024
1.10.16 Jun 11, 2024
1.10.15 Apr 03, 2024
1.10.14 Jan 19, 2024
1.10.13 Sep 27, 2023
1.10.12 Jul 24, 2023
1.10.11 Jul 04, 2023
1.10.10 Jun 30, 2023
1.10.9 Jun 07, 2023
1.10.8 May 23, 2023
1.10.7 Mar 22, 2023
1.10.6 Mar 08, 2023
1.10.5 Feb 15, 2023
1.10.4 Dec 30, 2022
1.10.3 Dec 29, 2022
1.10.2 Sep 05, 2022
1.10.1 Aug 31, 2022
1.10.0 Aug 30, 2022
1.10.0b1 Aug 24, 2022
1.10.0a2 Aug 24, 2022
1.10.0a1 Aug 22, 2022
1.9.2 Aug 11, 2022
1.9.1 May 19, 2022
1.9.0 Dec 31, 2021
1.9.0a2 Dec 24, 2021
1.9.0a1 Dec 18, 2021
1.8.2 May 11, 2021
1.8.1 Mar 03, 2021
1.8 Feb 26, 2021
1.7.4 May 11, 2021
1.7.3 Nov 30, 2020
1.7.2 Nov 01, 2020
1.7.1 Oct 28, 2020
1.7 Oct 26, 2020
1.6.2 May 11, 2021
1.6.1 Jul 15, 2020
1.6 Jul 11, 2020
1.5.1 Apr 23, 2020
1.5 Apr 18, 2020
1.4 Jan 24, 2020
1.3 Dec 21, 2019
1.2 Nov 28, 2019
1.1.1 Nov 20, 2019
1.1 Nov 07, 2019
1.0 Oct 23, 2019
1.0b2 Oct 07, 2019
1.0b1 Oct 01, 2019
0.32.2 Aug 17, 2019
0.32.1 Aug 08, 2019
0.32 Aug 06, 2019
0.31.1 Jul 31, 2019
0.31 Jul 24, 2019
0.30.1 Jul 15, 2019
0.30 Jul 07, 2019
0.29 Jun 19, 2019
0.28 Jun 11, 2019
0.27 May 30, 2019
0.27a1 May 26, 2019
0.26 May 22, 2019
0.25 May 05, 2019
0.24 Apr 23, 2019
0.23 Apr 04, 2019
0.22 Mar 29, 2019
0.21 Mar 15, 2019
0.20.1 Feb 26, 2019
0.20 Feb 18, 2019
0.20a1 Feb 13, 2019
0.19 Feb 04, 2019
0.18.2 Jan 22, 2019
0.18.1 Jan 17, 2019
0.18 Jan 13, 2019
0.17 Dec 27, 2018
0.16.1 Dec 10, 2018
0.16 Dec 03, 2018
0.15 Nov 18, 2018
0.14 Oct 02, 2018
0.13.1 Sep 21, 2018
0.13 Aug 25, 2018
0.12.1 Jul 31, 2018
0.12 Jul 31, 2018
0.11.2 Jul 05, 2018
0.11.1 Jul 02, 2018
0.11 Jun 28, 2018
0.10 Jun 11, 2018
0.9.1 May 10, 2018
0.9 Apr 28, 2018
0.8 Mar 25, 2018
0.7.1 Feb 07, 2018
0.7 Feb 06, 2018
0.6.4 Feb 01, 2018
0.6.3 Nov 26, 2017
0.6.2 Nov 13, 2017
0.6.1 Nov 08, 2017
0.6 Nov 07, 2017
0.5 Oct 23, 2017
0.4 Jul 08, 2017
0.3 Jun 21, 2017
0.2.1 Jun 07, 2017
0.2 Jun 07, 2017
0.1 Jun 03, 2017
0.0.8 May 31, 2017
0.0.7 May 31, 2017
0.0.6 May 23, 2017
0.0.5 May 11, 2017
0.0.4 May 10, 2017
0.0.3 May 09, 2017
0.0.2 May 06, 2017
0.0.1 May 03, 2017

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
annotated-types (>=0.6.0)
pydantic-core (==2.33.2)
typing-extensions (>=4.12.2)
typing-inspection (>=0.4.0)