Определение Annotated[str] с ограничениями в Pydantic v2Python

Программы на Python
Anonymous
Определение Annotated[str] с ограничениями в Pydantic v2

Сообщение Anonymous »

Предположим, мне нужен валидатор контрольных сумм, который я могу повторно использовать в приложении. Система подсказок типов Python сильно изменилась в версии 3.9+, и это еще больше меня запутало. В pydantic v1 я создал подкласс str и реализовал методы классов __get_pydantic_core_schema__ и __get_validators__. В версии 2 некоторые из этих изменений изменены, и предпочтительный способ изменен на использование аннотированных типов.
В пакете pydantic-extra-types я нашел примеры, которые требуют понимания внутренней работы pydantic. Я могу скопировать и заставить что-то работать, но я бы предпочел найти «правильный» пользовательский способ сделать это, а не копировать без понимания.
В pydantic v2 похоже, что я могу сделать ограниченная строка как часть pydantic-класса, например

Код: Выделить всё

from typing import Annotated
from pydantic import BaseModel, StringConstraints

class GeneralThing(BaseModel):
special_string = Annotated[str, StringConstraints(pattern="^[a-fA-F0-9]{64}$")]
но это неверно (pydantic.errors.PydanticUserError: обнаружен неаннотированный атрибут). Кроме того, мне пришлось бы аннотировать каждое поле, которое я хочу ограничить, в отличие от Special_string = ChecksumStr, который я мог делать раньше.


Подробнее здесь: https://stackoverflow.com/questions/772 ... ydantic-v2

Вернуться в «Python»