enums

Added in version 1.2.

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

Class for Annotated the Enum for name validation.

If ignore_case is True, then comparisons occur in lowercase (if several elements match, then any one is returned).

forbidden_keys is a collection with ignored keys. If ignore_case` is True, then the comparison with forbidden_keys also occurs in lowercase.

Examples:

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

An Enum mixin class for name validation.

Inheritance parameters: ignore_case and forbidden_keys. The types and values are similar to EnumByNameAnnotate.

Examples:

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