from pydantic import BaseModel, ConfigDict from typing import Dict, Optional, List class Translation(BaseModel): language: str text: str model_config = ConfigDict(extra="ignore") class Example(BaseModel): id: int source_language: str source_text: str translations: List[Translation] = [] dialect: Optional[str] = None url: Optional[str] = None source: Optional[str] = None model_config = ConfigDict(extra="ignore") class IdiomBase(BaseModel): idiom: str language: str dialect: str = "unspecified" idiomatic_meaning: Optional[str] = "" literal_meaning: Optional[str] = "" validation_count: Dict[str, int] = {} quality: str = "seed" status: str = "pending" model_config = ConfigDict(extra="ignore") class Meaning(BaseModel): meaning_id: Optional[str] = None idiom_id: Optional[str] = None sense_number: Optional[int] = None register: List[str] = [] region: List[str] = [] definitions: List[str] = [] version: Optional[int] = None model_config = ConfigDict(extra="ignore") class IdiomResponse(IdiomBase): id: str examples: List[Example] = [] meanings: List[Meaning] = [] # ← add this model_config = ConfigDict(extra="ignore") class IdiomCreate(IdiomBase): id: str examples: List[Example] = []