1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
# generated by datamodel-codegen:
# filename: discriminator_enum_duplicate.yaml
# timestamp: 2019-07-26T00:00:00+00:00
from __future__ import annotations
from enum import Enum
from typing import Literal, Optional, Union
from pydantic import BaseModel, Field
class Cat(BaseModel):
pet_type: Literal['cat'] = Field(..., title='Pet Type')
meows: int = Field(..., title='Meows')
class Dog(BaseModel):
pet_type: Literal['dog'] = Field(..., title='Pet Type')
barks: float = Field(..., title='Barks')
class PetType(Enum):
reptile = 'reptile'
lizard = 'lizard'
class Lizard(BaseModel):
pet_type: Literal['lizard', 'reptile'] = Field(..., title='Pet Type')
scales: bool = Field(..., title='Scales')
class Animal(BaseModel):
pet: Optional[Union[Cat, Dog, Lizard]] = Field(
None, discriminator='pet_type', title='Pet'
)
n: Optional[int] = Field(None, title='N')
|