From 6dd718919c3a177bb684edd0ecb7ff254a971247 Mon Sep 17 00:00:00 2001 From: Manuel Schmid Date: Sun, 26 May 2024 18:09:22 +0200 Subject: [PATCH] feat: cleanup performance selection, make it completely dynamic --- modules/config.py | 2 +- modules/flags.py | 18 +++++++++++------- webui.py | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/config.py b/modules/config.py index a4050220..95982ceb 100644 --- a/modules/config.py +++ b/modules/config.py @@ -379,7 +379,7 @@ default_prompt = get_config_item_or_set_default( default_performance = get_config_item_or_set_default( key='default_performance', default_value=Performance.SPEED.value, - validator=lambda x: x in Performance.list() + validator=lambda x: x in Performance.values() ) default_advanced_checkbox = get_config_item_or_set_default( key='default_advanced_checkbox', diff --git a/modules/flags.py b/modules/flags.py index 0ae44375..93b0e81f 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -142,6 +142,10 @@ class Performance(Enum): @classmethod def list(cls) -> list: + return list(map(lambda c: (c.name, c.value), cls)) + + @classmethod + def values(cls) -> list: return list(map(lambda c: c.value, cls)) @classmethod @@ -157,10 +161,10 @@ class Performance(Enum): return StepsUOV[self.name].value if Steps[self.name] else None -performance_selections = [ - (f'Quality \U00002223 {Steps.QUALITY.value} steps', Performance.QUALITY.value), - (f'Speed \U00002223 {Steps.SPEED.value} steps', Performance.SPEED.value), - (f'Extreme Speed (LCM) \U00002223 {Steps.EXTREME_SPEED.value} steps, intermediate results disabled', Performance.EXTREME_SPEED.value), - (f'Lightning \U00002223 {Steps.LIGHTNING.value} steps, intermediate results disabled', Performance.LIGHTNING.value), - (f'Hyper-SD \U00002223 {Steps.HYPER_SD.value} steps, intermediate results disabled', Performance.HYPER_SD.value) -] +performance_selections = [] + +for name, value in Performance.list(): + restricted_text = '' + if Performance.has_restricted_features(value): + restricted_text = '*' + performance_selections.append((f'{value} \U00002223 {Steps[name].value} steps {restricted_text}', Performance[name].value)) diff --git a/webui.py b/webui.py index 3aced0a5..4bd81d4c 100644 --- a/webui.py +++ b/webui.py @@ -327,6 +327,7 @@ with shared.gradio_root: interactive=True) performance_selection = gr.Radio(label='Performance', + info='* = restricted feature set, intermediate results disabled', choices=modules.flags.performance_selections, value=modules.config.default_performance, elem_classes='performance_selections')