Spaces:
Runtime error
Runtime error
""" | |
Image meta schema | |
""" | |
from typing import List | |
from fooocus_version import version | |
from pydantic import BaseModel | |
class ImageMeta(BaseModel): | |
""" | |
Image meta data model | |
""" | |
metadata_scheme: str = "fooocus" | |
base_model: str | |
base_model_hash: str | |
prompt: str | |
full_prompt: List[str] | |
prompt_expansion: str | |
negative_prompt: str | |
full_negative_prompt: List[str] | |
performance: str | |
style: str | |
refiner_model: str = "None" | |
refiner_switch: float = 0.5 | |
loras: List[list] | |
resolution: str | |
sampler: str = "dpmpp_2m_sde_gpu" | |
scheduler: str = "karras" | |
seed: str | |
adm_guidance: str | |
guidance_scale: float | |
sharpness: float | |
steps: int | |
vae_name: str | |
version: str = version | |
def __repr__(self): | |
return "" | |
def loras_parser(loras: list) -> list: | |
""" | |
Parse lora list | |
""" | |
return [ | |
[ | |
lora[0].rsplit('.', maxsplit=1)[:1][0], | |
lora[1], | |
"hash_not_calculated", | |
] for lora in loras if lora[0] != 'None' and lora[0] is not None] | |
def image_parse( | |
async_tak: object, | |
task: dict | |
) -> dict | str: | |
""" | |
Parse image meta data | |
Generate meta data for image from task and async task object | |
Args: | |
async_tak: async task obj | |
task: task obj | |
Returns: | |
dict: image meta data | |
""" | |
req_param = async_tak.req_param | |
meta = ImageMeta( | |
metadata_scheme=req_param.meta_scheme, | |
base_model=req_param.base_model_name.rsplit('.', maxsplit=1)[:1][0], | |
base_model_hash='', | |
prompt=req_param.prompt, | |
full_prompt=task['positive'], | |
prompt_expansion=task['expansion'], | |
negative_prompt=req_param.negative_prompt, | |
full_negative_prompt=task['negative'], | |
performance=req_param.performance_selection, | |
style=str(req_param.style_selections), | |
refiner_model=req_param.refiner_model_name, | |
refiner_switch=req_param.refiner_switch, | |
loras=loras_parser(req_param.loras), | |
resolution=str(tuple([int(n) for n in req_param.aspect_ratios_selection.split('*')])), | |
sampler=req_param.advanced_params.sampler_name, | |
scheduler=req_param.advanced_params.scheduler_name, | |
seed=str(task['task_seed']), | |
adm_guidance=str(( | |
req_param.advanced_params.adm_scaler_positive, | |
req_param.advanced_params.adm_scaler_negative, | |
req_param.advanced_params.adm_scaler_end)), | |
guidance_scale=req_param.guidance_scale, | |
sharpness=req_param.sharpness, | |
steps=-1, | |
vae_name=req_param.advanced_params.vae_name, | |
version=version | |
) | |
if meta.metadata_scheme not in ["fooocus", "a111"]: | |
meta.metadata_scheme = "fooocus" | |
if meta.metadata_scheme == "fooocus": | |
meta_dict = meta.model_dump() | |
for i, lora in enumerate(meta.loras): | |
attr_name = f"lora_combined_{i+1}" | |
lr = [str(x) for x in lora] | |
meta_dict[attr_name] = f"{lr[0]} : {lr[1]}" | |
else: | |
meta_dict = meta.model_dump() | |
return meta_dict | |