Skip to main content

Data validation using Python type hints

Project description

Pydantic

CI Coverage pypi CondaForge downloads versions license Pydantic v2

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.8+; 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 List, 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.10.5 (2025-01-08)

GitHub release

What's Changed

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

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.

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic-2.10.5.tar.gz (761.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic-2.10.5-py3-none-any.whl (431.4 kB view details)

Uploaded Python 3

File details

Details for the file pydantic-2.10.5.tar.gz.

File metadata

  • Download URL: pydantic-2.10.5.tar.gz
  • Upload date:
  • Size: 761.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pydantic-2.10.5.tar.gz
Algorithm Hash digest
SHA256 278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff
MD5 be725b089172d10a9c95605fed30cdb1
BLAKE2b-256 6ac7ca334c2ef6f2e046b1144fe4bb2a5da8a4c574e7f2ebf7e16b34a6a2fa92

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic-2.10.5.tar.gz:

Publisher: ci.yml on pydantic/pydantic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pydantic-2.10.5-py3-none-any.whl.

File metadata

  • Download URL: pydantic-2.10.5-py3-none-any.whl
  • Upload date:
  • Size: 431.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pydantic-2.10.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53
MD5 f7d7b3a364bf140f40f825792431f63d
BLAKE2b-256 582682663c79010b28eddf29dcdd0ea723439535fa917fce5905885c0e9ba562

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic-2.10.5-py3-none-any.whl:

Publisher: ci.yml on pydantic/pydantic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page