from abc import ABC, abstractmethod from typing import Any, Sequence from PIL import Image from services.image.ImageGenerationResult import ImageGenerationResult from services.progress import ProgressCallback from services.services import GenerationService, TaskType class ImageGenerator(GenerationService, ABC): """Base class for image generation backends.""" task_type = TaskType.IMAGE @abstractmethod def generate( self, prompt: str, images: Sequence[Image.Image] | None = None, *, progress: ProgressCallback | None = None, aspect_ratio: str | None = None, **kwargs: Any, ) -> ImageGenerationResult: """Generate images from a prompt and optional images. """ raise NotImplementedError