From 48e75351153630f12e2733f006d9dde1fb5447fc Mon Sep 17 00:00:00 2001 From: Bingsu Date: Sun, 14 May 2023 20:06:22 +0900 Subject: [PATCH] fix: disable controlnet units --- adetailer/__version__.py | 2 +- scripts/!adetailer.py | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/adetailer/__version__.py b/adetailer/__version__.py index e2e33d4..e74b40b 100644 --- a/adetailer/__version__.py +++ b/adetailer/__version__.py @@ -1 +1 @@ -__version__ = "23.5.12" +__version__ = "23.5.13.dev1" diff --git a/scripts/!adetailer.py b/scripts/!adetailer.py index d64b873..8093e93 100644 --- a/scripts/!adetailer.py +++ b/scripts/!adetailer.py @@ -3,9 +3,7 @@ from __future__ import annotations import platform import sys import traceback -from collections.abc import Mapping from copy import copy, deepcopy -from functools import partial from pathlib import Path from textwrap import dedent from typing import Any @@ -257,10 +255,11 @@ class AfterDetailerScript(scripts.Script): def script_filter(self, p, args: ADetailerArgs): script_runner = copy(p.scripts) + script_args = deepcopy(p.script_args) ad_only_seleted_scripts = opts.data.get("ad_only_seleted_scripts", True) if not ad_only_seleted_scripts: - return script_runner + return script_runner, script_args default = "dynamic_prompting,dynamic_thresholding,wildcards,wildcard_recursive" ad_script_names = opts.data.get("ad_script_names", default) @@ -270,6 +269,7 @@ class AfterDetailerScript(scripts.Script): for name in (script_name, script_name.strip()) } if args.ad_controlnet_model != "None": + self.disable_controlnet_units(script_args) script_names_set.add("controlnet") filtered_alwayson = [] @@ -280,7 +280,14 @@ class AfterDetailerScript(scripts.Script): filtered_alwayson.append(script_object) script_runner.alwayson_scripts = filtered_alwayson - return script_runner + return script_runner, script_args + + def disable_controlnet_units(self, script_args: list[Any]) -> None: + for obj in script_args: + if "controlnet" in obj.__class__.__name__.lower() and hasattr( + obj, "enabled" + ): + obj.enabled = False def get_i2i_p(self, p, args: ADetailerArgs, image): prompt, negative_prompt = self.get_prompt(p, args) @@ -327,8 +334,7 @@ class AfterDetailerScript(scripts.Script): do_not_save_grid=True, ) - i2i.scripts = self.script_filter(p, args) - i2i.script_args = deepcopy(p.script_args) + i2i.scripts, i2i.script_args = self.script_filter(p, args) i2i._disable_adetailer = True if args.ad_controlnet_model != "None":