diff --git a/modules/options_handler.py b/modules/options_handler.py index ffc3080ea..426349e81 100644 --- a/modules/options_handler.py +++ b/modules/options_handler.py @@ -109,7 +109,8 @@ class Options: setattr(self, key, value) except RuntimeError: return False - func = self.data_labels[key].onchange + # compatibility_opts (e.g. clip_skip) live in data without a data_labels entry + func = self.data_labels[key].onchange if key in self.data_labels else None if func is not None: try: func() diff --git a/modules/processing.py b/modules/processing.py index 8d4d6bab4..e03270794 100644 --- a/modules/processing.py +++ b/modules/processing.py @@ -153,11 +153,12 @@ def process_images(p: StableDiffusionProcessing) -> Processed | None: for k, v in p.override_settings.copy().items(): if shared.opts.data.get(k, None) is None and shared.opts.data_labels.get(k, None) is None: continue - orig = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default + # getattr resolves the value via data then data_labels; compat opts (clip_skip) have no data_labels entry + orig = getattr(shared.opts, k, None) if orig == v or (type(orig) == str and os.path.splitext(orig)[0] == v): p.override_settings.pop(k, None) for k in p.override_settings.keys(): - stored_opts[k] = shared.opts.data.get(k, None) or shared.opts.data_labels[k].default + stored_opts[k] = getattr(shared.opts, k, None) results = None try: # if no checkpoint override or the override checkpoint can't be found, remove override entry and load opts checkpoint