|
from __future__ import annotations |
|
|
|
from enum import Enum |
|
from typing import Optional |
|
|
|
from pydantic import BaseModel, Field, confloat |
|
|
|
|
|
class StabilityFormat(str, Enum): |
|
png = 'png' |
|
jpeg = 'jpeg' |
|
webp = 'webp' |
|
|
|
|
|
class StabilityAspectRatio(str, Enum): |
|
ratio_1_1 = "1:1" |
|
ratio_16_9 = "16:9" |
|
ratio_9_16 = "9:16" |
|
ratio_3_2 = "3:2" |
|
ratio_2_3 = "2:3" |
|
ratio_5_4 = "5:4" |
|
ratio_4_5 = "4:5" |
|
ratio_21_9 = "21:9" |
|
ratio_9_21 = "9:21" |
|
|
|
|
|
def get_stability_style_presets(include_none=True): |
|
presets = [] |
|
if include_none: |
|
presets.append("None") |
|
return presets + [x.value for x in StabilityStylePreset] |
|
|
|
|
|
class StabilityStylePreset(str, Enum): |
|
_3d_model = "3d-model" |
|
analog_film = "analog-film" |
|
anime = "anime" |
|
cinematic = "cinematic" |
|
comic_book = "comic-book" |
|
digital_art = "digital-art" |
|
enhance = "enhance" |
|
fantasy_art = "fantasy-art" |
|
isometric = "isometric" |
|
line_art = "line-art" |
|
low_poly = "low-poly" |
|
modeling_compound = "modeling-compound" |
|
neon_punk = "neon-punk" |
|
origami = "origami" |
|
photographic = "photographic" |
|
pixel_art = "pixel-art" |
|
tile_texture = "tile-texture" |
|
|
|
|
|
class Stability_SD3_5_Model(str, Enum): |
|
sd3_5_large = "sd3.5-large" |
|
|
|
sd3_5_medium = "sd3.5-medium" |
|
|
|
|
|
class Stability_SD3_5_GenerationMode(str, Enum): |
|
text_to_image = "text-to-image" |
|
image_to_image = "image-to-image" |
|
|
|
|
|
class StabilityStable3_5Request(BaseModel): |
|
model: str = Field(...) |
|
mode: str = Field(...) |
|
prompt: str = Field(...) |
|
negative_prompt: Optional[str] = Field(None) |
|
aspect_ratio: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
output_format: Optional[str] = Field(StabilityFormat.png.value) |
|
image: Optional[str] = Field(None) |
|
style_preset: Optional[str] = Field(None) |
|
cfg_scale: float = Field(...) |
|
strength: Optional[confloat(ge=0.0, le=1.0)] = Field(None) |
|
|
|
|
|
class StabilityUpscaleConservativeRequest(BaseModel): |
|
prompt: str = Field(...) |
|
negative_prompt: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
output_format: Optional[str] = Field(StabilityFormat.png.value) |
|
image: Optional[str] = Field(None) |
|
creativity: Optional[confloat(ge=0.2, le=0.5)] = Field(None) |
|
|
|
|
|
class StabilityUpscaleCreativeRequest(BaseModel): |
|
prompt: str = Field(...) |
|
negative_prompt: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
output_format: Optional[str] = Field(StabilityFormat.png.value) |
|
image: Optional[str] = Field(None) |
|
creativity: Optional[confloat(ge=0.1, le=0.5)] = Field(None) |
|
style_preset: Optional[str] = Field(None) |
|
|
|
|
|
class StabilityStableUltraRequest(BaseModel): |
|
prompt: str = Field(...) |
|
negative_prompt: Optional[str] = Field(None) |
|
aspect_ratio: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
output_format: Optional[str] = Field(StabilityFormat.png.value) |
|
image: Optional[str] = Field(None) |
|
style_preset: Optional[str] = Field(None) |
|
strength: Optional[confloat(ge=0.0, le=1.0)] = Field(None) |
|
|
|
|
|
class StabilityStableUltraResponse(BaseModel): |
|
image: Optional[str] = Field(None) |
|
finish_reason: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
|
|
|
|
class StabilityResultsGetResponse(BaseModel): |
|
image: Optional[str] = Field(None) |
|
finish_reason: Optional[str] = Field(None) |
|
seed: Optional[int] = Field(None) |
|
id: Optional[str] = Field(None) |
|
name: Optional[str] = Field(None) |
|
errors: Optional[list[str]] = Field(None) |
|
status: Optional[str] = Field(None) |
|
result: Optional[str] = Field(None) |
|
|
|
|
|
class StabilityAsyncResponse(BaseModel): |
|
id: Optional[str] = Field(None) |
|
|