mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2025-02-07 06:02:53 +08:00
rework set_named_arg
change identifying a script from using Scripts class name to Scripts internal name an as not all Script have unique names raise RuntimeError when there's issue
This commit is contained in:
parent
4d5db58a3e
commit
36d1fefc19
@ -939,22 +939,33 @@ class ScriptRunner:
|
|||||||
except Exception:
|
except Exception:
|
||||||
errors.report(f"Error running setup: {script.filename}", exc_info=True)
|
errors.report(f"Error running setup: {script.filename}", exc_info=True)
|
||||||
|
|
||||||
def set_named_arg(self, args, script_type, arg_elem_id, value):
|
def set_named_arg(self, args, script_name, arg_elem_id, value):
|
||||||
script = next((x for x in self.scripts if type(x).__name__ == script_type), None)
|
"""Locate an arg of a specific script in script_args and set its value
|
||||||
|
Args:
|
||||||
|
args: all script args of process p, p.script_args
|
||||||
|
script_name: the name target script name to
|
||||||
|
arg_elem_id: the elem_id of the target arg
|
||||||
|
value: the value to set
|
||||||
|
Returns:
|
||||||
|
Updated script args
|
||||||
|
when script_name in not found or arg_elem_id is not found in script controls, raise RuntimeError
|
||||||
|
"""
|
||||||
|
script = next((x for x in self.scripts if x.name == script_name), None)
|
||||||
if script is None:
|
if script is None:
|
||||||
return
|
raise RuntimeError(f"script {script_name} not found")
|
||||||
|
|
||||||
for i, control in enumerate(script.controls):
|
for i, control in enumerate(script.controls):
|
||||||
if arg_elem_id in control.elem_id:
|
if arg_elem_id == control.elem_id:
|
||||||
index = script.args_from + i
|
index = script.args_from + i
|
||||||
|
|
||||||
if isinstance(args, list):
|
if isinstance(args, tuple):
|
||||||
|
return args[:index] + (value,) + args[index + 1:]
|
||||||
|
elif isinstance(args, list):
|
||||||
args[index] = value
|
args[index] = value
|
||||||
return args
|
return args
|
||||||
elif isinstance(args, tuple):
|
|
||||||
return args[:index] + (value,) + args[index+1:]
|
|
||||||
else:
|
else:
|
||||||
return None
|
raise RuntimeError(f"args is not a list or tuple, but {type(args)}")
|
||||||
|
raise RuntimeError(f"arg_elem_id {arg_elem_id} not found in script {script_name}")
|
||||||
|
|
||||||
|
|
||||||
scripts_txt2img: ScriptRunner = None
|
scripts_txt2img: ScriptRunner = None
|
||||||
|
Loading…
Reference in New Issue
Block a user