Don't iterate if the job iterator isn't present in outputs
If orig_execute encountered an error and did not run, job iterator will be preent in the prompt but not in the outputs. This would cause a second exception if some other node had an error, making it look like the problem is in job iterator when it is not. Fixes #3
This commit is contained in:
@@ -190,17 +190,19 @@ def execute(self, prompt, prompt_id, extra_data={}, execute_outputs=[]):
|
|||||||
print("Prompt executor has been patched by Job Iterator!")
|
print("Prompt executor has been patched by Job Iterator!")
|
||||||
orig_execute(self, prompt, prompt_id, extra_data, execute_outputs)
|
orig_execute(self, prompt, prompt_id, extra_data, execute_outputs)
|
||||||
|
|
||||||
|
steps = None
|
||||||
job_iterator = None
|
job_iterator = None
|
||||||
for k, v in prompt.items():
|
for k, v in prompt.items():
|
||||||
try:
|
try:
|
||||||
if v['class_type'] == 'JobIterator':
|
if v['class_type'] == 'JobIterator':
|
||||||
|
steps = self.outputs[k][1][0]
|
||||||
job_iterator = k
|
job_iterator = k
|
||||||
break
|
break
|
||||||
except KeyError:
|
except KeyError:
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
if job_iterator is not None:
|
|
||||||
steps = self.outputs[job_iterator][1][0]
|
|
||||||
while prompt[job_iterator]['inputs']['start_step'] < (steps - 1):
|
while prompt[job_iterator]['inputs']['start_step'] < (steps - 1):
|
||||||
prompt[job_iterator]['inputs']['start_step'] += 1
|
prompt[job_iterator]['inputs']['start_step'] += 1
|
||||||
orig_execute(self, prompt, prompt_id, extra_data, execute_outputs)
|
orig_execute(self, prompt, prompt_id, extra_data, execute_outputs)
|
||||||
|
|||||||
Reference in New Issue
Block a user