Spaces:
Running
on
Zero
Running
on
Zero
| """ | |
| Data Models for Character Sheet Pro | |
| ==================================== | |
| Dataclasses for generation requests and results. | |
| """ | |
| from dataclasses import dataclass, field | |
| from typing import Optional, List, Dict, Any | |
| from PIL import Image | |
| from datetime import datetime | |
| class GenerationRequest: | |
| """Request for image generation.""" | |
| prompt: str | |
| input_images: List[Image.Image] = field(default_factory=list) | |
| aspect_ratio: str = "1:1" | |
| temperature: float = 0.4 | |
| negative_prompt: Optional[str] = None | |
| def has_input_images(self) -> bool: | |
| """Check if request has input images.""" | |
| return len(self.input_images) > 0 | |
| class GenerationResult: | |
| """Result from image generation.""" | |
| success: bool | |
| image: Optional[Image.Image] = None | |
| message: str = "" | |
| generation_time: Optional[float] = None | |
| def success_result( | |
| cls, | |
| image: Image.Image, | |
| message: str = "Generated successfully", | |
| generation_time: Optional[float] = None | |
| ) -> "GenerationResult": | |
| """Create successful result.""" | |
| return cls( | |
| success=True, | |
| image=image, | |
| message=message, | |
| generation_time=generation_time | |
| ) | |
| def error_result(cls, message: str) -> "GenerationResult": | |
| """Create error result.""" | |
| return cls(success=False, message=message) | |
| class CharacterSheetConfig: | |
| """Configuration for character sheet generation.""" | |
| # Aspect ratios | |
| face_aspect_ratio: str = "3:4" # 864x1184 | |
| body_aspect_ratio: str = "9:16" # 768x1344 | |
| # Generation temperatures | |
| face_temperature: float = 0.35 | |
| body_temperature: float = 0.35 | |
| normalize_temperature: float = 0.5 | |
| # Layout | |
| spacing: int = 20 | |
| background_color: str = "#2C2C2C" | |
| # Retry settings | |
| max_retries: int = 3 | |
| retry_delay: float = 30.0 | |
| rate_limit_delay_min: float = 2.0 | |
| rate_limit_delay_max: float = 3.0 | |
| class CharacterSheetMetadata: | |
| """Metadata for generated character sheet.""" | |
| character_name: str | |
| input_type: str # "Face Only", "Full Body", "Face + Body" | |
| costume_description: str | |
| backend: str | |
| timestamp: str = field(default_factory=lambda: datetime.now().isoformat()) | |
| views: int = 7 | |
| stages: Dict[str, Any] = field(default_factory=dict) | |