Sanket17's picture
added all files
5fbd25d
"""V2 API models"""
from typing import List
from pydantic import BaseModel, Field
from fooocusapi.models.common.requests import CommonRequest
from fooocusapi.models.common.base import (
ControlNetType,
EnhanceCtrlNets, OutpaintExpansion,
ImagePrompt,
UpscaleOrVaryMethod
)
class ImagePromptJson(BaseModel):
"""Image prompt for V2 API"""
cn_img: str | None = Field(None, description="Input image for image prompt as base64")
cn_stop: float | None = Field(0, ge=0, le=1, description="Stop at for image prompt, 0 for default value")
cn_weight: float | None = Field(0, ge=0, le=2, description="Weight for image prompt, 0 for default value")
cn_type: ControlNetType = Field(default=ControlNetType.cn_ip, description="ControlNet type for image prompt")
class ImgInpaintOrOutpaintRequestJson(CommonRequest):
"""image inpaint or outpaint request"""
input_image: str = Field('', description="Init image for inpaint or outpaint as base64")
input_mask: str | None = Field('', description="Inpaint or outpaint mask as base64")
inpaint_additional_prompt: str | None = Field('', description="Describe what you want to inpaint")
outpaint_selections: List[OutpaintExpansion] = []
outpaint_distance_left: int | None = Field(-1, description="Set outpaint left distance")
outpaint_distance_right: int | None = Field(-1, description="Set outpaint right distance")
outpaint_distance_top: int | None = Field(-1, description="Set outpaint top distance")
outpaint_distance_bottom: int | None = Field(-1, description="Set outpaint bottom distance")
image_prompts: List[ImagePromptJson | ImagePrompt] = []
class ImgPromptRequestJson(ImgInpaintOrOutpaintRequestJson):
"""img prompt request json"""
input_image: str | None = Field(None, description="Init image for inpaint or outpaint as base64")
image_prompts: List[ImagePromptJson | ImagePrompt]
class Text2ImgRequestWithPrompt(CommonRequest):
"""text to image request with prompt"""
image_prompts: List[ImagePromptJson] = []
class ImgUpscaleOrVaryRequestJson(CommonRequest):
"""img upscale or vary request json"""
uov_method: UpscaleOrVaryMethod = UpscaleOrVaryMethod.upscale_2
upscale_value: float | None = Field(1.0, ge=1.0, le=5.0, description="Upscale custom value, 1.0 for default value")
input_image: str = Field(description="Init image for upscale or outpaint as base64")
image_prompts: List[ImagePromptJson | ImagePrompt] = []
class ImageEnhanceRequestJson(CommonRequest):
"""
Image Enhance Request
"""
enhance_input_image: str = Field(default='', description="Input image for enhance")
enhance_checkbox: bool = Field(default=True, description="Enhance checkbox")
enhance_uov_method: UpscaleOrVaryMethod = Field(default=UpscaleOrVaryMethod.strong_variation, description="Upscale or vary method")
enhance_uov_processing_order: str = Field(default="Before First Enhancement", description="Upscale or vary processing order")
enhance_uov_prompt_type: str = Field(default="Original Prompts", description="Upscale or vary prompt type")
save_final_enhanced_image_only: bool = Field(True, description="Save Final Enhanced Image Only")
enhance_ctrlnets: List[EnhanceCtrlNets]