Spaces:
Runtime error
Runtime error
from typing import List | |
from pydantic import computed_field, BaseModel | |
from .const import ( | |
SDXL_CONTROLNET_CHOICES, | |
SD2_CONTROLNET_CHOICES, | |
SD_CONTROLNET_CHOICES, | |
INSTRUCT_PIX2PIX_NAME, | |
KANDINSKY22_NAME, | |
POWERPAINT_NAME, | |
ANYTEXT_NAME, | |
) | |
from .schema import ModelType | |
class ModelInfo(BaseModel): | |
name: str | |
path: str | |
model_type: ModelType | |
is_single_file_diffusers: bool = False | |
def need_prompt(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] or self.name in [ | |
INSTRUCT_PIX2PIX_NAME, | |
KANDINSKY22_NAME, | |
POWERPAINT_NAME, | |
ANYTEXT_NAME, | |
] | |
def controlnets(self) -> List[str]: | |
if self.model_type in [ | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
]: | |
return SDXL_CONTROLNET_CHOICES | |
if self.model_type in [ModelType.DIFFUSERS_SD, ModelType.DIFFUSERS_SD_INPAINT]: | |
if "sd2" in self.name.lower(): | |
return SD2_CONTROLNET_CHOICES | |
else: | |
return SD_CONTROLNET_CHOICES | |
if self.name == POWERPAINT_NAME: | |
return SD_CONTROLNET_CHOICES | |
return [] | |
def support_strength(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] or self.name in [POWERPAINT_NAME, ANYTEXT_NAME] | |
def support_outpainting(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] or self.name in [KANDINSKY22_NAME, POWERPAINT_NAME] | |
def support_lcm_lora(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] | |
def support_controlnet(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] | |
def support_freeu(self) -> bool: | |
return self.model_type in [ | |
ModelType.DIFFUSERS_SD, | |
ModelType.DIFFUSERS_SDXL, | |
ModelType.DIFFUSERS_SD_INPAINT, | |
ModelType.DIFFUSERS_SDXL_INPAINT, | |
] or self.name in [INSTRUCT_PIX2PIX_NAME] | |