Spaces:
Sleeping
Sleeping
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 = 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) | |
) | |
def settings(self): | |
return self._config | |
def stable_diffsuion_models(self): | |
return self._stable_diffsuion_models | |
def openvino_lcm_models(self): | |
return self._openvino_lcm_models | |
def lcm_models(self): | |
return self._lcm_models | |
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() | |