From 53e32ce6336b937ea97539991ac14709e9c4ed24 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 6 Nov 2024 22:40:18 -0500 Subject: [PATCH] fix xyz duplicate classes Signed-off-by: Vladimir Mandic --- modules/ui_extra_networks.py | 3 ++- scripts/apg.py | 11 ++++++++--- scripts/pulid_ext.py | 12 +++++++++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/ui_extra_networks.py b/modules/ui_extra_networks.py index 323f4830f..f6e6cee97 100644 --- a/modules/ui_extra_networks.py +++ b/modules/ui_extra_networks.py @@ -148,7 +148,8 @@ class ExtraNetworksPage: if self.title == 'Model': return opt = xyz_grid.AxisOption(f"[Network] {self.title}", str, add_prompt, choices=lambda: [x["name"] for x in self.items]) - xyz_grid.axis_options.append(opt) + if opt not in xyz_grid.axis_options: + xyz_grid.axis_options.append(opt) def link_preview(self, filename): quoted_filename = urllib.parse.quote(filename.replace('\\', '/')) diff --git a/scripts/apg.py b/scripts/apg.py index c7e60c982..6a3020c38 100644 --- a/scripts/apg.py +++ b/scripts/apg.py @@ -32,9 +32,14 @@ class Script(scripts.Script): import sys xyz_classes = [v for k, v in sys.modules.items() if 'xyz_grid_classes' in k][0] - xyz_classes.axis_options.append(xyz_classes.AxisOption("[APG] ETA", float, apply_field("apg_eta"))) - xyz_classes.axis_options.append(xyz_classes.AxisOption("[APG] Momentum", float, apply_field("apg_momentum"))) - xyz_classes.axis_options.append(xyz_classes.AxisOption("[APG] Threshold", float, apply_field("apg_threshold"))) + options = [ + xyz_classes.AxisOption("[APG] ETA", float, apply_field("apg_eta")), + xyz_classes.AxisOption("[APG] Momentum", float, apply_field("apg_momentum")), + xyz_classes.AxisOption("[APG] Threshold", float, apply_field("apg_threshold")), + ] + for option in options: + if option not in xyz_classes.axis_options: + xyz_classes.axis_options.append(option) def run(self, p: processing.StableDiffusionProcessing, eta = 0.0, momentum = 0.0, threshold = 0.0): # pylint: disable=arguments-differ supported_model_list = ['sd', 'sdxl', 'sc'] diff --git a/scripts/pulid_ext.py b/scripts/pulid_ext.py index da195b5e4..05e83ce1f 100644 --- a/scripts/pulid_ext.py +++ b/scripts/pulid_ext.py @@ -40,9 +40,15 @@ class Script(scripts.Script): import sys xyz_classes = [v for k, v in sys.modules.items() if 'xyz_grid_classes' in k][0] - xyz_classes.axis_options.append(xyz_classes.AxisOption("[PuLID] Strength", float, apply_field("pulid_strength"))) - xyz_classes.axis_options.append(xyz_classes.AxisOption("[PuLID] Zero", int, apply_field("pulid_zero"))) - xyz_classes.axis_options.append(xyz_classes.AxisOption("[PuLID] Ortho", str, apply_field("pulid_ortho"), choices=lambda: ['off', 'v1', 'v2'])) + options = [ + xyz_classes.AxisOption("[PuLID] Strength", float, apply_field("pulid_strength")), + xyz_classes.AxisOption("[PuLID] Zero", int, apply_field("pulid_zero")), + xyz_classes.AxisOption("[PuLID] Ortho", str, apply_field("pulid_ortho"), choices=lambda: ['off', 'v1', 'v2']), + ] + for option in options: + if option not in xyz_classes.axis_options: + xyz_classes.axis_options.append(option) + def load_images(self, files): self.images = []