typing.Annotated
Annotated из модуля typing в Python предназначен для добавления метаданных к аннотации. Метаданные, добавленные с помощью Annotated, могут быть использованы инструментами статического анализа или во время выполнения. Во время выполнения метаданные хранятся в атрибуте __metadata__.
from typing import Annotated # Синтаксис: Annotated[тип_данных, метаданные] def say_hello(name: Annotated[str, "this is just metadata"]) -> str: return f"Hello {name}"
Логика обработка метаданных зависит от фреймворка или библиотек, в которых используется Annotated. Если логики для обработки метаданных нет, то метаданные игнорируются.
Например, Annotated используется в Pydantic:
from typing import Annotated from pydantic import Field, TypeAdapter # Функция Field используется для настройки и добавления метаданных # к полям моделей. Field(gt=0) - значит greater than т.е. больше чем 0 PositiveInt = Annotated[int, Field(gt=0)] # TypeAdapter предоставляет часть функциональности методов экземпляра # BaseModel в т.ч. валидацию с использованием метаданных из Annotated ta = TypeAdapter(PositiveInt) print(ta.validate_python(1)) #> 1 print(ta.validate_python(-1)) #> pydantic_core._pydantic_core.ValidationError:
В первом случае вернёт 1, во втором ошибку валидации т.к. значение должно быть > 0.
Также Annotated используется в FastAPI.
