From ba55063ac5d22868c5d6f0b0b790c4535c6336bc Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Wed, 28 May 2025 00:04:08 -0400 Subject: [PATCH] Remove all fields not defined in nodes from prompt before execution. --- execution.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/execution.py b/execution.py index 15ff7567c..3d89ba735 100644 --- a/execution.py +++ b/execution.py @@ -435,6 +435,20 @@ def execute(server, dynprompt, caches, current_item, extra_data, executed, promp return (ExecutionResult.SUCCESS, None, None) +def clean_inputs(prompt): + for unique_id, node in prompt.items(): + inputs = node['inputs'] + class_type = node['class_type'] + obj_class = nodes.NODE_CLASS_MAPPINGS[class_type] + + class_inputs = obj_class.INPUT_TYPES() + valid_inputs = set(class_inputs.get('required',{})).union(set(class_inputs.get('optional',{}))) + for k in list(inputs.keys()): + if k not in valid_inputs: + inputs.pop(k) + return prompt + + class PromptExecutor: def __init__(self, server, cache_type=False, cache_size=None): self.cache_size = cache_size @@ -486,6 +500,7 @@ class PromptExecutor: def execute(self, prompt, prompt_id, extra_data={}, execute_outputs=[]): nodes.interrupt_processing(False) + prompt = clean_inputs(prompt) if "client_id" in extra_data: self.server.client_id = extra_data["client_id"]