enums

Добавлено в версии 1.2.

class pydantic_extra.enums.EnumByNameAnnotate(*, ignore_case: bool = True, forbidden_keys: Collection[str] = ())

Аннотирование Enum для валидации по имени.

Если ignore_case True, то сравнения происходят в нижнем регистре (если несколько элементов совпадают, то возвращается любой).

forbidden_keys коллекция с игрнорируемыми ключами. Если ignore_case True, то сравнение с 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