single |
# 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 Company :rocket:
We've started a company based on the principles that I believe have led to
Pydantic's success.
Learn more from the [Company Announcement].
## 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
```py
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.9.2 (2024-09-17)
[GitHub release]
### What's Changed
#### Fixes
* Do not error when trying to evaluate annotations of private attributes by
[@Viicos] in [#10358]
* Adding notes on designing sound `Callable` discriminators by
[@sydney-runkle] in [#10400]
* Fix serialization schema generation when using `PlainValidator` by
[@Viicos] in [#10427]
* Fix `Union` serialization warnings by [@sydney-runkle] in
[pydantic/pydantic-core#1449]
* Fix variance issue in `_IncEx` type alias, only allow `True` by [@Viicos]
in [#10414]
* Fix `ZoneInfo` validation with various invalid types by [@sydney-runkle]
in [#10408]
|