From 6d1c3da0daafb0fec11497e514804a2866aee8f4 Mon Sep 17 00:00:00 2001 From: Bingsu Date: Tue, 16 May 2023 19:26:37 +0900 Subject: [PATCH] fix: enable checker validation --- adetailer/args.py | 4 ++-- scripts/!adetailer.py | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/adetailer/args.py b/adetailer/args.py index fdb3896..0142716 100644 --- a/adetailer/args.py +++ b/adetailer/args.py @@ -110,13 +110,13 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid): class EnableChecker(BaseModel): a0: Union[bool, dict] - a1: Optional[dict] + a1: Any def is_enabled(self) -> bool: ad_model = ALL_ARGS[0].attr if isinstance(self.a0, dict): return self.a0.get(ad_model, "None") != "None" - if self.a1 is None: + if not isinstance(self.a1, dict): return False return self.a0 and self.a1.get(ad_model, "None") != "None" diff --git a/scripts/!adetailer.py b/scripts/!adetailer.py index 90e3fb5..be1b4be 100644 --- a/scripts/!adetailer.py +++ b/scripts/!adetailer.py @@ -141,7 +141,11 @@ class AfterDetailerScript(scripts.Script): """ `args_` is at least 1 in length by `is_ad_enabled` immediately above """ - args = args_[1:] if isinstance(args_[0], bool) else args_ + args = [arg for arg in args_ if isinstance(arg, dict)] + + if not args: + message = f"[-] ADetailer: Invalid arguments passed to ADetailer: {args_!r}" + raise ValueError(message) all_inputs = [] @@ -149,18 +153,15 @@ class AfterDetailerScript(scripts.Script): try: inp = ADetailerArgs(**arg_dict) except ValueError as e: - message = [ + msgs = [ f"[-] ADetailer: ValidationError when validating {ordinal(n)} arguments: {e}\n" ] for attr in ALL_ARGS.attrs: arg = arg_dict.get(attr) dtype = type(arg) arg = "DEFAULT" if arg is None else repr(arg) - message.append(f" {attr}: {arg} ({dtype})") - raise ValueError("\n".join(message)) from e - except TypeError as e: - message = f"[-] ADetailer: {ordinal(n)} - Non-mapping arguments are sent: {arg_dict!r}\n{e}" - raise TypeError(message) from e + msgs.append(f" {attr}: {arg} ({dtype})") + raise ValueError("\n".join(msgs)) from e all_inputs.append(inp) @@ -281,6 +282,7 @@ class AfterDetailerScript(scripts.Script): for script_name in ad_script_names.split(",") 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")