mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2024-06-07 21:20:49 +00:00
catch uncaught exception with ui creation scripts
prevent total webui crash
This commit is contained in:
parent
f0f100e67b
commit
8a6e4bda21
@ -570,40 +570,44 @@ class ScriptRunner:
|
|||||||
if controls is None:
|
if controls is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
script.name = wrap_call(script.title, script.filename, "title", default=script.filename).lower()
|
try:
|
||||||
api_args = []
|
script.name = wrap_call(script.title, script.filename, "title", default=script.filename).lower()
|
||||||
|
api_args = []
|
||||||
|
|
||||||
for control in controls:
|
for control in controls:
|
||||||
control.custom_script_source = os.path.basename(script.filename)
|
control.custom_script_source = os.path.basename(script.filename)
|
||||||
|
|
||||||
arg_info = api_models.ScriptArg(label=control.label or "")
|
arg_info = api_models.ScriptArg(label=control.label or "")
|
||||||
|
|
||||||
for field in ("value", "minimum", "maximum", "step"):
|
for field in ("value", "minimum", "maximum", "step"):
|
||||||
v = getattr(control, field, None)
|
v = getattr(control, field, None)
|
||||||
if v is not None:
|
if v is not None:
|
||||||
setattr(arg_info, field, v)
|
setattr(arg_info, field, v)
|
||||||
|
|
||||||
choices = getattr(control, 'choices', None) # as of gradio 3.41, some items in choices are strings, and some are tuples where the first elem is the string
|
choices = getattr(control, 'choices', None) # as of gradio 3.41, some items in choices are strings, and some are tuples where the first elem is the string
|
||||||
if choices is not None:
|
if choices is not None:
|
||||||
arg_info.choices = [x[0] if isinstance(x, tuple) else x for x in choices]
|
arg_info.choices = [x[0] if isinstance(x, tuple) else x for x in choices]
|
||||||
|
|
||||||
api_args.append(arg_info)
|
api_args.append(arg_info)
|
||||||
|
|
||||||
script.api_info = api_models.ScriptInfo(
|
script.api_info = api_models.ScriptInfo(
|
||||||
name=script.name,
|
name=script.name,
|
||||||
is_img2img=script.is_img2img,
|
is_img2img=script.is_img2img,
|
||||||
is_alwayson=script.alwayson,
|
is_alwayson=script.alwayson,
|
||||||
args=api_args,
|
args=api_args,
|
||||||
)
|
)
|
||||||
|
|
||||||
if script.infotext_fields is not None:
|
if script.infotext_fields is not None:
|
||||||
self.infotext_fields += script.infotext_fields
|
self.infotext_fields += script.infotext_fields
|
||||||
|
|
||||||
if script.paste_field_names is not None:
|
if script.paste_field_names is not None:
|
||||||
self.paste_field_names += script.paste_field_names
|
self.paste_field_names += script.paste_field_names
|
||||||
|
|
||||||
self.inputs += controls
|
self.inputs += controls
|
||||||
script.args_to = len(self.inputs)
|
script.args_to = len(self.inputs)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
errors.report(f"Error creating UI for {script.name}: ", exc_info=True)
|
||||||
|
|
||||||
def setup_ui_for_section(self, section, scriptlist=None):
|
def setup_ui_for_section(self, section, scriptlist=None):
|
||||||
if scriptlist is None:
|
if scriptlist is None:
|
||||||
|
Loading…
Reference in New Issue
Block a user