Commit eeb07330 authored by AUTOMATIC's avatar AUTOMATIC

change process_one virtual function for script to process_batch, add extra args and docs

parent 99043f33
...@@ -502,7 +502,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed: ...@@ -502,7 +502,7 @@ def process_images_inner(p: StableDiffusionProcessing) -> Processed:
break break
if p.scripts is not None: if p.scripts is not None:
p.scripts.process_one(p, n) p.scripts.process_batch(p, batch_number=n, prompts=prompts, seeds=seeds, subseeds=subseeds)
with devices.autocast(): with devices.autocast():
uc = prompt_parser.get_learned_conditioning(shared.sd_model, len(prompts) * [p.negative_prompt], p.steps) uc = prompt_parser.get_learned_conditioning(shared.sd_model, len(prompts) * [p.negative_prompt], p.steps)
......
...@@ -73,9 +73,15 @@ class Script: ...@@ -73,9 +73,15 @@ class Script:
pass pass
def process_one(self, p, n, *args): def process_batch(self, p, *args, **kwargs):
""" """
Same as process(), but called for every iteration Same as process(), but called for every batch.
**kwargs will have those items:
- batch_number - index of current batch, from 0 to number of batches-1
- prompts - list of prompts for current batch; you can change contents of this list but changing the number of entries will likely break things
- seeds - list of seeds for current batch
- subseeds - list of subseeds for current batch
""" """
pass pass
...@@ -303,13 +309,13 @@ class ScriptRunner: ...@@ -303,13 +309,13 @@ class ScriptRunner:
print(f"Error running process: {script.filename}", file=sys.stderr) print(f"Error running process: {script.filename}", file=sys.stderr)
print(traceback.format_exc(), file=sys.stderr) print(traceback.format_exc(), file=sys.stderr)
def process_one(self, p, n): def process_batch(self, p, **kwargs):
for script in self.alwayson_scripts: for script in self.alwayson_scripts:
try: try:
script_args = p.script_args[script.args_from:script.args_to] script_args = p.script_args[script.args_from:script.args_to]
script.process_one(p, n, *script_args) script.process_batch(p, *script_args, **kwargs)
except Exception: except Exception:
print(f"Error running process_one: {script.filename}", file=sys.stderr) print(f"Error running process_batch: {script.filename}", file=sys.stderr)
print(traceback.format_exc(), file=sys.stderr) print(traceback.format_exc(), file=sys.stderr)
def postprocess(self, p, processed): def postprocess(self, p, processed):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment