from pydantic import BaseModel from typing import List, Dict, Union, Any, Optional class Option(BaseModel): id: str text: str class MultipleChoiceQuestion(BaseModel): type: str = "multipleChoice" id: str prompt: str variant: str = "text" options: List[Option] class FillBlanksWord(BaseModel): type: str = "fillBlanks" id: str options: Dict[str, str] Component = Union[MultipleChoiceQuestion, FillBlanksWord, Dict[str, Any]] class Sheet(BaseModel): batch: Optional[int] = None components: List[Component]