fix: enable checker validation

This commit is contained in:
Bingsu
2023-05-16 19:26:37 +09:00
parent 588eb2f6fa
commit 6d1c3da0da
2 changed files with 11 additions and 9 deletions

View File

@@ -110,13 +110,13 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid):
class EnableChecker(BaseModel): class EnableChecker(BaseModel):
a0: Union[bool, dict] a0: Union[bool, dict]
a1: Optional[dict] a1: Any
def is_enabled(self) -> bool: def is_enabled(self) -> bool:
ad_model = ALL_ARGS[0].attr ad_model = ALL_ARGS[0].attr
if isinstance(self.a0, dict): if isinstance(self.a0, dict):
return self.a0.get(ad_model, "None") != "None" return self.a0.get(ad_model, "None") != "None"
if self.a1 is None: if not isinstance(self.a1, dict):
return False return False
return self.a0 and self.a1.get(ad_model, "None") != "None" return self.a0 and self.a1.get(ad_model, "None") != "None"

View File

@@ -141,7 +141,11 @@ class AfterDetailerScript(scripts.Script):
""" """
`args_` is at least 1 in length by `is_ad_enabled` immediately above `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 = [] all_inputs = []
@@ -149,18 +153,15 @@ class AfterDetailerScript(scripts.Script):
try: try:
inp = ADetailerArgs(**arg_dict) inp = ADetailerArgs(**arg_dict)
except ValueError as e: except ValueError as e:
message = [ msgs = [
f"[-] ADetailer: ValidationError when validating {ordinal(n)} arguments: {e}\n" f"[-] ADetailer: ValidationError when validating {ordinal(n)} arguments: {e}\n"
] ]
for attr in ALL_ARGS.attrs: for attr in ALL_ARGS.attrs:
arg = arg_dict.get(attr) arg = arg_dict.get(attr)
dtype = type(arg) dtype = type(arg)
arg = "DEFAULT" if arg is None else repr(arg) arg = "DEFAULT" if arg is None else repr(arg)
message.append(f" {attr}: {arg} ({dtype})") msgs.append(f" {attr}: {arg} ({dtype})")
raise ValueError("\n".join(message)) from e raise ValueError("\n".join(msgs)) 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
all_inputs.append(inp) all_inputs.append(inp)
@@ -281,6 +282,7 @@ class AfterDetailerScript(scripts.Script):
for script_name in ad_script_names.split(",") for script_name in ad_script_names.split(",")
for name in (script_name, script_name.strip()) for name in (script_name, script_name.strip())
} }
if args.ad_controlnet_model != "None": if args.ad_controlnet_model != "None":
self.disable_controlnet_units(script_args) self.disable_controlnet_units(script_args)
script_names_set.add("controlnet") script_names_set.add("controlnet")