diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-05-17 06:26:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-17 06:26:26 +0000 |
commit | 85232a5b26666854deae59cf950f744740dd5c37 (patch) | |
tree | 3af76d8c6ba3173ffd925336d902da058df4e02d /modules/modelloader.py | |
parent | 56a2672831751480f94a018f861f0143a8234ae8 (diff) | |
parent | 4b07f2f584596604c4499efb0b0295e96985080f (diff) | |
download | stable-diffusion-webui-gfx803-85232a5b26666854deae59cf950f744740dd5c37.tar.gz stable-diffusion-webui-gfx803-85232a5b26666854deae59cf950f744740dd5c37.tar.bz2 stable-diffusion-webui-gfx803-85232a5b26666854deae59cf950f744740dd5c37.zip |
Merge branch 'dev' into taesd-a
Diffstat (limited to 'modules/modelloader.py')
-rw-r--r-- | modules/modelloader.py | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/modules/modelloader.py b/modules/modelloader.py index cb85ac4f..2a479bcb 100644 --- a/modules/modelloader.py +++ b/modules/modelloader.py @@ -1,4 +1,3 @@ -import glob import os import shutil import importlib @@ -40,7 +39,7 @@ def load_models(model_path: str, model_url: str = None, command_path: str = None if os.path.islink(full_path) and not os.path.exists(full_path): print(f"Skipping broken symlink: {full_path}") continue - if ext_blacklist is not None and any([full_path.endswith(x) for x in ext_blacklist]): + if ext_blacklist is not None and any(full_path.endswith(x) for x in ext_blacklist): continue if full_path not in output: output.append(full_path) @@ -108,29 +107,15 @@ def move_files(src_path: str, dest_path: str, ext_filter: str = None): print(f"Moving {file} from {src_path} to {dest_path}.") try: shutil.move(fullpath, dest_path) - except: + except Exception: pass if len(os.listdir(src_path)) == 0: print(f"Removing empty folder: {src_path}") shutil.rmtree(src_path, True) - except: + except Exception: pass -builtin_upscaler_classes = [] -forbidden_upscaler_classes = set() - - -def list_builtin_upscalers(): - builtin_upscaler_classes.clear() - builtin_upscaler_classes.extend(Upscaler.__subclasses__()) - -def forbid_loaded_nonbuiltin_upscalers(): - for cls in Upscaler.__subclasses__(): - if cls not in builtin_upscaler_classes: - forbidden_upscaler_classes.add(cls) - - def load_upscalers(): # We can only do this 'magic' method to dynamically load upscalers if they are referenced, # so we'll try to import any _model.py files before looking in __subclasses__ @@ -141,15 +126,22 @@ def load_upscalers(): full_model = f"modules.{model_name}_model" try: importlib.import_module(full_model) - except: + except Exception: pass datas = [] commandline_options = vars(shared.cmd_opts) - for cls in Upscaler.__subclasses__(): - if cls in forbidden_upscaler_classes: - continue + # some of upscaler classes will not go away after reloading their modules, and we'll end + # up with two copies of those classes. The newest copy will always be the last in the list, + # so we go from end to beginning and ignore duplicates + used_classes = {} + for cls in reversed(Upscaler.__subclasses__()): + classname = str(cls) + if classname not in used_classes: + used_classes[classname] = cls + + for cls in reversed(used_classes.values()): name = cls.__name__ cmd_name = f"{name.lower().replace('upscaler', '')}_models_path" scaler = cls(commandline_options.get(cmd_name, None)) |