Enums and Choices
Pydantic uses Python's standard enum classes to define choices.
- enum.Enum
- checks that the value is a valid Enuminstance.
- subclass of enum.Enum
- checks that the value is a valid member of the enum.
- enum.IntEnum
- checks that the value is a valid IntEnuminstance.
- subclass of enum.IntEnum
- checks that the value is a valid member of the integer enum.
from enum import Enum, IntEnum
from pydantic import BaseModel, ValidationError
class FruitEnum(str, Enum):
    pear = 'pear'
    banana = 'banana'
class ToolEnum(IntEnum):
    spanner = 1
    wrench = 2
class CookingModel(BaseModel):
    fruit: FruitEnum = FruitEnum.pear
    tool: ToolEnum = ToolEnum.spanner
print(CookingModel())
#> fruit=<FruitEnum.pear: 'pear'> tool=<ToolEnum.spanner: 1>
print(CookingModel(tool=2, fruit='banana'))
#> fruit=<FruitEnum.banana: 'banana'> tool=<ToolEnum.wrench: 2>
try:
    CookingModel(fruit='other')
except ValidationError as e:
    print(e)
    """
    1 validation error for CookingModel
    fruit
      Input should be 'pear' or 'banana' [type=enum, input_value='other', input_type=str]
    """