digiwild / app /behavior /class_behavior_simple.py
caviri
bug: Expanded Pydantic class to make it compatible with simple and advance mode
f1a6252
raw
history blame
1.29 kB
from pydantic import BaseModel, Field
from typing import Literal, List, Union, Optional
class BehaviorSimple(BaseModel):
type: str
description: Optional[str] = None # Making the description field optional
# --- Specific BehaviorSimple classes ---
class GeneralWeakness(BehaviorSimple):
type: Literal["general weakness"]
description: Optional[
Literal[
"Abnormal breathing (dyspnoea), sudden crash, apathy, lethargy, unable to fly but responsive"
]
] = None
class Vomiting(BehaviorSimple):
type: Literal["vomiting"]
description: Optional[Literal["Throwing up undigested food, regurgitating"]] = None
class AtypicalBehavior(BehaviorSimple):
type: Literal["atypical behavior"]
description: Optional[
Literal["Circling, incoordination, tremors, convulsions"]
] = None
class NoChanges(BehaviorSimple):
type: Literal["no changes"]
description: Optional[Literal["Animal is acting normally"]] = None
# Union of all possible behaviors
BehaviorSimpleType = Union[GeneralWeakness, Vomiting, AtypicalBehavior, NoChanges]
# Main class that logs multiple behaviors
class BehaviorsSimple(BaseModel):
behaviors_radio: str # e.g., "Yes"
behaviors_type: Optional[List[BehaviorSimpleType]] = None