"""Schemas for upscaling operations.""" from typing import Optional from pydantic import BaseModel, Field class UpscaleOptions(BaseModel): """Options for image upscaling.""" model: str = Field( default='RealESRGAN_x4plus', description='Model to use for upscaling (RealESRGAN_x2plus, RealESRGAN_x3plus, RealESRGAN_x4plus, etc.)' ) tile_size: Optional[int] = Field( default=None, description='Tile size for processing large images to avoid OOM' ) tile_pad: Optional[int] = Field( default=None, description='Padding between tiles' ) outscale: Optional[float] = Field( default=None, description='Upsampling scale factor' ) class JobStatus(BaseModel): """Job status information.""" job_id: str status: str # queued, processing, completed, failed model: str progress: float = Field(default=0.0, description='Progress as percentage 0-100') result_path: Optional[str] = None error: Optional[str] = None created_at: str started_at: Optional[str] = None completed_at: Optional[str] = None processing_time_seconds: Optional[float] = None class UpscaleResult(BaseModel): """Upscaling result.""" success: bool message: str processing_time_seconds: float model: str input_size: Optional[tuple] = None output_size: Optional[tuple] = None class ModelInfo(BaseModel): """Information about an available model.""" name: str scale: int path: str size_mb: float available: bool