| import yaml |
| from os import path, makedirs |
| from models.settings import Settings |
| from paths import FastStableDiffusionPaths |
| from utils import get_models_from_text_file |
| from constants import ( |
| OPENVINO_LCM_MODELS_FILE, |
| LCM_LORA_MODELS_FILE, |
| SD_MODELS_FILE, |
| LCM_MODELS_FILE, |
| ) |
| from copy import deepcopy |
|
|
|
|
| class AppSettings: |
| def __init__(self): |
| self.config_path = FastStableDiffusionPaths().get_app_settings_path() |
| self._stable_diffsuion_models = ["Lykon/dreamshaper-8"] |
| self._lcm_lora_models = ["latent-consistency/lcm-lora-sdv1-5"] |
| self._openvino_lcm_models = ["rupeshs/sd-turbo-openvino"] |
| self._lcm_models = ["stabilityai/sd-turbo"] |
|
|
| @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 |
|
|
| def load(self, skip_file=False): |
| if skip_file: |
| print("Skipping config file") |
| settings_dict = self._load_default() |
| self._config = Settings.parse_obj(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.parse_obj(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 |
| yaml.dump(tmp_cfg.dict(), file) |
| except Exception as ex: |
| print(f"Error in saving settings : {ex}") |
|
|
| def _load_default(self) -> dict: |
| defult_config = Settings() |
| return defult_config.dict() |
|
|