enums¶
Добавлено в версии 1.2.
- class pydantic_extra.enums.EnumByNameAnnotate(*, ignore_case: bool = True, forbidden_keys: Collection[str] = ())¶
Аннотирование Enum для валидации по имени.
Если
ignore_caseTrue, то сравнения происходят в нижнем регистре (если несколько элементов совпадают, то возвращается любой).forbidden_keysколлекция с игрнорируемыми ключами. Еслиignore_caseTrue, то сравнение сforbidden_keysтакже происходят в нижнем регистре.Примеры:
from enum import Enum from pydantic import BaseModel from typing_extensions import Annotated from pydantic_extra.enums import EnumByNameAnnotate as EnumByNameA class A(Enum): A = "A" B = "B" C = "C" class B(BaseModel): abc: Annotated[A, EnumByNameA()] abc_case: Annotated[A, EnumByNameA(ignore_case=False)] ab: Annotated[A, EnumByNameA(forbidden_keys=("c",))] ab_case: Annotated[A, EnumByNameA(ignore_case=False, forbidden_keys=("c",))]
- class pydantic_extra.enums.EnumByName¶
Класс примесь для Enum для валидации по имени.
Параметры наследования: ignore_case и forbidden_keys. Типы и значения аналогичны
EnumByNameAnnotate.Примеры:
from enum import Enum from pydantic import BaseModel from pydantic_extra.enums import EnumByName class ABC(EnumByName, Enum): A = "A" B = "B" C = "C" class ABC_CASE(EnumByName, Enum, ignore_case=False): A = "A" B = "B" C = "C" class AB(EnumByName, Enum, forbidden_keys=("c",)): A = "A" B = "B" C = "C" class AB_CASE(EnumByName, Enum, ignore_case=False, forbidden_keys=("c",)): A = "A" B = "B" C = "C" class B(BaseModel): abc: ABC abc_case: ABC_CASE ab: AB ab_case: AB_CASE