Как работает annotated-types в пределах Pydantic?

Pydantic - это библиотека для проверки данных и сериализации объектов в Python. Одной из ключевых особенностей Pydantic является поддержка аннотаций типов, которая позволяет указывать типы данных для атрибутов и аргументов функций.

Аннотации типов в Python - это способ указать ожидаемый тип данных для переменных, атрибутов классов, аргументов функций и возвращаемых значений. В отличие от других языков программирования, таких как Java или C++, аннотации типов в Python не являются обязательными и не проверяются во время исполнения. Однако, эти аннотации могут быть использованы в сторонних инструментах для анализа кода и автоматической генерации документации.

Pydantic использует аннотации типов для определения и проверки схем данных во время сериализации (преобразование объекта в структуру данных, такую как JSON) и десериализации (преобразование структуры данных обратно в объект). Аннотации типов указывают ожидаемые типы данных для каждого атрибута модели Pydantic и позволяют автоматически выполнять валидацию данных в соответствии с этими типами.

Для использования аннотаций типов необходимо импортировать модуль TypedDict из пакета typing вместе с классом BaseModel из пакета pydantic. Затем производится создание класса модели, наследующегося от BaseModel, и указывается типы данных для каждого атрибута с помощью аннотаций типов.

Пример использования аннотаций типов в Pydantic:

from typing import TypedDict
from pydantic import BaseModel

class Person(TypedDict):
    name: str
    age: int

class PersonModel(BaseModel):
    name: str
    age: int

person_dict = {"name": "John", "age": 30}

# Создание экземпляра модели Pydantic из словаря
person = PersonModel(**person_dict)
print(person.dict())

# Создание экземпляра модели Pydantic из TypedDict
person = PersonModel(**Person(**person_dict))
print(person.dict())

В данном примере создается модель PersonModel, которая имеет два атрибута - name и age, указанные с помощью аннотаций типов str и int соответственно. Для создания экземпляра модели используется словарь person_dict, содержащий значения для атрибутов модели. При создании экземпляра модели, Pydantic автоматически выполняет валидацию значений атрибутов в соответствии с их типами.

Вывод программы будет следующим:

{'name': 'John', 'age': 30}
{'name': 'John', 'age': 30}

Таким образом, аннотации типов в Pydantic позволяют определять ожидаемые типы данных для атрибутов модели и обеспечивают автоматическую валидацию данных на основе этих типов. Это удобно для создания структурированных данных, проверки входных параметров и автоматической генерации документации.