| | from copy import deepcopy |
| | from os import makedirs, path |
| |
|
| | import yaml |
| | from constants import ( |
| | LCM_LORA_MODELS_FILE, |
| | LCM_MODELS_FILE, |
| | OPENVINO_LCM_MODELS_FILE, |
| | SD_MODELS_FILE, |
| | ) |
| | from paths import FastStableDiffusionPaths, join_paths |
| | from utils import get_files_in_dir, get_models_from_text_file |
| |
|
| | from models.settings import Settings |
| |
|
| |
|
| | class AppSettings: |
| | def __init__(self): |
| | self.config_path = FastStableDiffusionPaths().get_app_settings_path() |
| | self._stable_diffsuion_models = get_models_from_text_file( |
| | FastStableDiffusionPaths().get_models_config_path(SD_MODELS_FILE) |
| | ) |
| | self._lcm_lora_models = get_models_from_text_file( |
| | FastStableDiffusionPaths().get_models_config_path(LCM_LORA_MODELS_FILE) |
| | ) |
| | self._openvino_lcm_models = get_models_from_text_file( |
| | FastStableDiffusionPaths().get_models_config_path(OPENVINO_LCM_MODELS_FILE) |
| | ) |
| | self._lcm_models = get_models_from_text_file( |
| | FastStableDiffusionPaths().get_models_config_path(LCM_MODELS_FILE) |
| | ) |
| | self._gguf_diffusion_models = get_files_in_dir( |
| | join_paths(FastStableDiffusionPaths().get_gguf_models_path(), "diffusion") |
| | ) |
| | self._gguf_clip_models = get_files_in_dir( |
| | join_paths(FastStableDiffusionPaths().get_gguf_models_path(), "clip") |
| | ) |
| | self._gguf_vae_models = get_files_in_dir( |
| | join_paths(FastStableDiffusionPaths().get_gguf_models_path(), "vae") |
| | ) |
| | self._gguf_t5xxl_models = get_files_in_dir( |
| | join_paths(FastStableDiffusionPaths().get_gguf_models_path(), "t5xxl") |
| | ) |
| | self._config = None |
| |
|
| | @property |
| | def settings(self): |
| | return self._config |
| |
|
| | @property |
| | def stable_diffsuion_models(self): |
| | return self._stable_diffsuion_models |
| |
|
| | @property |
| | def openvino_lcm_models(self): |
| | return self._openvino_lcm_models |
| |
|
| | @property |
| | def lcm_models(self): |
| | return self._lcm_models |
| |
|
| | @property |
| | def lcm_lora_models(self): |
| | return self._lcm_lora_models |
| |
|
| | @property |
| | def gguf_diffusion_models(self): |
| | return self._gguf_diffusion_models |
| |
|
| | @property |
| | def gguf_clip_models(self): |
| | return self._gguf_clip_models |
| |
|
| | @property |
| | def gguf_vae_models(self): |
| | return self._gguf_vae_models |
| |
|
| | @property |
| | def gguf_t5xxl_models(self): |
| | return self._gguf_t5xxl_models |
| |
|
| | def load(self, skip_file=False): |
| | if skip_file: |
| | print("Skipping config file") |
| | settings_dict = self._load_default() |
| | self._config = Settings.model_validate(settings_dict) |
| | else: |
| | if not path.exists(self.config_path): |
| | base_dir = path.dirname(self.config_path) |
| | if not path.exists(base_dir): |
| | makedirs(base_dir) |
| | try: |
| | print("Settings not found creating default settings") |
| | with open(self.config_path, "w") as file: |
| | yaml.dump( |
| | self._load_default(), |
| | file, |
| | ) |
| | except Exception as ex: |
| | print(f"Error in creating settings : {ex}") |
| | exit() |
| | try: |
| | with open(self.config_path) as file: |
| | settings_dict = yaml.safe_load(file) |
| | self._config = Settings.model_validate(settings_dict) |
| | except Exception as ex: |
| | print(f"Error in loading settings : {ex}") |
| |
|
| | def save(self): |
| | try: |
| | with open(self.config_path, "w") as file: |
| | tmp_cfg = deepcopy(self._config) |
| | tmp_cfg.lcm_diffusion_setting.init_image = None |
| | configurations = tmp_cfg.model_dump( |
| | exclude=["init_image"], |
| | ) |
| | if configurations: |
| | yaml.dump(configurations, file) |
| | except Exception as ex: |
| | print(f"Error in saving settings : {ex}") |
| |
|
| | def _load_default(self) -> dict: |
| | default_config = Settings() |
| | return default_config.model_dump() |
| |
|