from typing import Optional
from pydantic import BaseModel, Field

class BaseEvaluationRequest(BaseModel):
    test_size: float = Field(0.2, ge=0.0, le=1.0, description="Size of the test split (between 0 and 1)")
    test_seed: int = Field(42, ge=0, description="Random seed for reproducibility")

class TextEvaluationRequest(BaseEvaluationRequest):
    dataset_name: str = Field("QuotaClimat/frugalaichallenge-text-train", 
                            description="The name of the dataset on HuggingFace Hub")

class ImageEvaluationRequest(BaseEvaluationRequest):
    dataset_name: str = Field("pyronear/pyro-sdis", 
                            description="The name of the dataset on HuggingFace Hub")

class AudioEvaluationRequest(BaseEvaluationRequest):
    dataset_name: str = Field("rfcx/frugalai", 
                            description="The name of the dataset on HuggingFace Hub")