mirror of
https://github.com/Bing-su/adetailer.git
synced 2026-01-30 05:09:54 +00:00
67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
import argparse
|
|
from dataclasses import dataclass
|
|
from typing import Any, Callable
|
|
|
|
import torch
|
|
from PIL import Image
|
|
|
|
@dataclass
|
|
class State:
|
|
skipped: bool = False
|
|
interrupted: bool = False
|
|
job: str = ""
|
|
job_no: int = 0
|
|
job_count: int = 0
|
|
processing_has_refined_job_count: bool = False
|
|
job_timestamp: str = "0"
|
|
sampling_step: int = 0
|
|
sampling_steps: int = 0
|
|
current_latent: torch.Tensor | None = None
|
|
current_image: Image.Image | None = None
|
|
current_image_sampling_step: int = 0
|
|
id_live_preview: int = 0
|
|
textinfo: str | None = None
|
|
time_start: float | None = None
|
|
need_restart: bool = False
|
|
server_start: float | None = None
|
|
|
|
@dataclass
|
|
class OptionInfo:
|
|
default: Any = None
|
|
label: str = ""
|
|
component: Any = None
|
|
component_args: Callable[[], dict] | dict[str, Any] | None = None
|
|
onchange: Callable[[], None] | None = None
|
|
section: tuple[str, str] | None = None
|
|
refresh: Callable[[], None] | None = None
|
|
|
|
class Option:
|
|
data_labels: dict[str, OptionInfo]
|
|
|
|
def __init__(self):
|
|
self.data: dict[str, Any] = {}
|
|
|
|
def add_option(self, key: str, info: OptionInfo):
|
|
pass
|
|
|
|
def __getattr__(self, item: str):
|
|
if self.data is not None and item in self.data:
|
|
return self.data[item]
|
|
|
|
if item in self.data_labels:
|
|
return self.data_labels[item].default
|
|
|
|
return super().__getattribute__(item)
|
|
|
|
opts = Option()
|
|
cmd_opts = argparse.Namespace()
|
|
state = State()
|
|
|
|
else:
|
|
from modules.shared import OptionInfo, cmd_opts, opts, state
|