pydantic

    pydantic/pydantic

    #275 this week

    Data validation using Python type hints

    backend
    hints
    json-schema
    parsing
    pydantic
    python
    Python
    MIT
    28.3K stars
    2.8K forks
    28.3K GitHub watchers
    Updated 7/16/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Pydantic is a Python library for data validation using Python type hints, enabling clean and canonical data models.
    • Key features include fast validation, extensibility, compatibility with Python 3.9+, and integration with linters and IDEs.
    • Strengths are high performance and a recent major rewrite (V2) with new features; limitations include some breaking changes from V1.
    • With nearly 25,000 stars and over 2,200 forks since 2017, Pydantic is widely adopted and actively maintained.
    • Ideal for Python developers needing robust data parsing and validation in applications, especially with complex data schemas.

    About pydantic

    Pydantic Validation

    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.

    Discover Repositories

    Search across tracked repositories by name or description