From b947a5a4e6941d5a88fd8c31a054499ea9eb8e98 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 16 Jun 2024 16:48:12 +0200 Subject: [PATCH 1/2] fix: correctly identify and remove performance LoRA (cherry picked from commit b3e4506009799f6e19b9a55506bc5ca6aa2b85fa) --- modules/meta_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/meta_parser.py b/modules/meta_parser.py index 0c9cde54..7ec8f379 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -61,7 +61,7 @@ def load_parameter_button_click(raw_metadata: dict | str, is_generating: bool): # prevent performance LoRAs to be added twice, by performance and by lora performance_filename = None - if performance is not None and performance in Performance.list(): + if performance is not None and performance in Performance.values(): performance = Performance(performance) performance_filename = performance.lora_filename() @@ -232,7 +232,7 @@ def parse_meta_from_preset(preset_content): loras = getattr(modules.config, settings_key) if settings_key in items: loras = items[settings_key] - for index, lora in enumerate(loras[:5]): + for index, lora in enumerate(loras[:modules.config.default_max_lora_number]): preset_prepared[f'lora_combined_{index + 1}'] = ' : '.join(map(str, lora)) elif settings_key == "default_aspect_ratio": if settings_key in items and items[settings_key] is not None: From af209cda5309d39f2b31040ca8dd964c78130ab8 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 16 Jun 2024 17:46:48 +0200 Subject: [PATCH 2/2] fix: add workaround for same value in Steps IntEnum (cherry picked from commit ea1562d078d2d7cd3bc65b4d4f8e0bb9c49ae263) --- modules/flags.py | 4 ++++ modules/meta_parser.py | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/flags.py b/modules/flags.py index 60563c9a..b9e6e40f 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -135,6 +135,10 @@ class Steps(IntEnum): LIGHTNING = 4 HYPER_SD = 4 + @classmethod + def keys(cls) -> list: + return list(map(lambda c: c, Steps.__members__)) + class StepsUOV(IntEnum): QUALITY = 36 diff --git a/modules/meta_parser.py b/modules/meta_parser.py index 7ec8f379..8997a878 100644 --- a/modules/meta_parser.py +++ b/modules/meta_parser.py @@ -119,8 +119,9 @@ def get_steps(key: str, fallback: str | None, source_dict: dict, results: list, assert h is not None h = int(h) # if not in steps or in steps and performance is not the same - if h not in iter(Steps) or Steps(h).name.casefold() != source_dict.get('performance', '').replace(' ', - '_').casefold(): + performance_name = source_dict.get('performance', '').replace(' ', '_').replace('-', '_').casefold() + performance_candidates = [key for key in Steps.keys() if key.casefold() == performance_name and Steps[key] == h] + if len(performance_candidates) == 0: results.append(h) return results.append(-1)