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.7+; validate it with pydantic.
We've started a company based on the principles that I believe have led to Pydantic's success. Learning more from the Company Announcement.
This branch relates to development of pydantic V2 which is not yet ready for production use.
If you're a Pydantic user, you probably want either
pydantic V1.10 Documentation or,
1.10.X-fixes
git branch.
See documentation for more details.
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.
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel
class User(BaseModel):
id: int
name = '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
For guidance on setting up a development environment and how to make a contribution to pydantic, see Contributing to Pydantic.
See our security policy.