File size: 1,280 Bytes
161d75f 21dae66 161d75f 21dae66 161d75f 21dae66 a725af0 161d75f 21dae66 161d75f 21dae66 995b526 21dae66 161d75f 21dae66 161d75f 21dae66 a725af0 161d75f 21dae66 161d75f 21dae66 a725af0 161d75f 21dae66 161d75f 21dae66 161d75f 21dae66 161d75f 21dae66 |
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
from pydantic import BaseModel, Field
from typing import Literal, Union, Optional, List
# --- Event follow-up classes ---
class AnimalCollectedEvent(BaseModel):
type: Literal["animal collected"]
collected: Literal["yes", "no"]
class RecipientEvent(BaseModel):
type: Literal["recipient"]
recipient: Literal[
"veterinary", "care center", "local museum", "national museum", "other"
]
class RadiographyEvent(BaseModel):
type: Literal["radiography"]
radiography: Literal["yes", "no", "unknown"]
class GivenAnswerEvent(BaseModel):
type: Literal["given answer"]
answer: Literal[
"nothing",
"complaint against x",
"complaint",
"police call",
"discussion with the speaker",
"press release",
"unknown",
]
class NameOfRecipientEvent(BaseModel):
type: Literal["recipient name"]
name: str
class CollectionReferenceEvent(BaseModel):
type: Literal["collection reference"]
reference: str
FollowUpEventType = Union[
AnimalCollectedEvent,
RecipientEvent,
RadiographyEvent,
GivenAnswerEvent,
NameOfRecipientEvent,
CollectionReferenceEvent,
]
class FollowUpEvents(BaseModel):
follow_up_events: Optional[List[FollowUpEventType]] = None
|