From 37c0c5ed46edaddb166620b3afc0efb4dec3c14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=E1=BA=A7n=20Nam=20Tu=E1=BA=A5n?= Date: Mon, 19 Aug 2024 23:46:39 +0700 Subject: [PATCH 1/3] Fix for Execution Model Inversion --- py/capture.py | 7 ++++--- py/defs/formatters.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/py/capture.py b/py/capture.py index fb01d30..3eec2d6 100644 --- a/py/capture.py +++ b/py/capture.py @@ -7,6 +7,7 @@ from .defs.meta import MetaField from nodes import NODE_CLASS_MAPPINGS from execution import get_input_data +from comfy_execution.graph import DynamicPrompt class Capture: @@ -15,14 +16,14 @@ class Capture: inputs = {} prompt = hook.current_prompt extra_data = hook.current_extra_data - outputs = hook.prompt_executer.outputs + outputs = hook.prompt_executer.caches.outputs for node_id, obj in prompt.items(): class_type = obj["class_type"] obj_class = NODE_CLASS_MAPPINGS[class_type] node_inputs = prompt[node_id]["inputs"] input_data = get_input_data( - node_inputs, obj_class, node_id, outputs, prompt, extra_data + node_inputs, obj_class, node_id, outputs, DynamicPrompt(prompt), extra_data ) for node_class, metas in CAPTURE_FIELD_LIST.items(): if class_type == node_class: @@ -54,7 +55,7 @@ class Capture: continue field_name = field_data["field_name"] - value = input_data.get(field_name) + value = input_data[0].get(field_name) if value is not None: format = field_data.get("format") v = value diff --git a/py/defs/formatters.py b/py/defs/formatters.py index 7c68d66..983d158 100644 --- a/py/defs/formatters.py +++ b/py/defs/formatters.py @@ -64,7 +64,7 @@ def extract_embedding_hashes(text, input_data): def _extract_embedding_names(text, input_data): - clip = input_data["clip"][0] + clip = input_data[0]["clip"][0] tokenizer = clip.tokenizer if isinstance(tokenizer, SD1Tokenizer): tokenizer = tokenizer.clip_l From d22d0adba61a7f345e77cd195d2472a8859fd27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=E1=BA=A7n=20Nam=20Tu=E1=BA=A5n?= Date: Tue, 20 Aug 2024 00:03:46 +0700 Subject: [PATCH 2/3] Fix input data for get_scaled_width and get_scaled_height --- py/defs/formatters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py/defs/formatters.py b/py/defs/formatters.py index 983d158..d885f89 100644 --- a/py/defs/formatters.py +++ b/py/defs/formatters.py @@ -38,12 +38,12 @@ def convert_skip_clip(stop_at_clip_layer, input_data): def get_scaled_width(scaled_by, input_data): - samples = input_data["samples"][0]["samples"] + samples = input_data[0]["samples"][0]["samples"] return round(samples.shape[3] * scaled_by * 8) def get_scaled_height(scaled_by, input_data): - samples = input_data["samples"][0]["samples"] + samples = input_data[0]["samples"][0]["samples"] return round(samples.shape[2] * scaled_by * 8) From 4ee3fe6cefd954cdceb0e72a7cae3ecc7b516923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=E1=BA=A7n=20Nam=20Tu=E1=BA=A5n?= Date: Tue, 20 Aug 2024 04:44:37 +0700 Subject: [PATCH 3/3] Fix input_data for extension nodes --- py/defs/ext/efficiency_nodes.py | 8 ++++---- py/defs/ext/rgthree.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/py/defs/ext/efficiency_nodes.py b/py/defs/ext/efficiency_nodes.py index bf15b86..d341ee7 100644 --- a/py/defs/ext/efficiency_nodes.py +++ b/py/defs/ext/efficiency_nodes.py @@ -17,22 +17,22 @@ def get_lora_model_hash_stack(node_id, obj, prompt, extra_data, outputs, input_d def get_lora_strength_model_stack( node_id, obj, prompt, extra_data, outputs, input_data ): - if input_data["input_mode"][0] == "advanced": + if input_data[0]["input_mode"][0] == "advanced": return get_lora_data_stack(input_data, "model_str") return get_lora_data_stack(input_data, "lora_wt") def get_lora_strength_clip_stack(node_id, obj, prompt, extra_data, outputs, input_data): - if input_data["input_mode"][0] == "advanced": + if input_data[0]["input_mode"][0] == "advanced": return get_lora_data_stack(input_data, "clip_str") return get_lora_data_stack(input_data, "lora_wt") def get_lora_data_stack(input_data, attribute): - lora_count = input_data["lora_count"][0] + lora_count = input_data[0]["lora_count"][0] return [ v[0] - for k, v in input_data.items() + for k, v in input_data[0].items() if k.startswith(attribute) and v[0] != "None" ][:lora_count] diff --git a/py/defs/ext/rgthree.py b/py/defs/ext/rgthree.py index aad025f..887ecd2 100644 --- a/py/defs/ext/rgthree.py +++ b/py/defs/ext/rgthree.py @@ -21,7 +21,7 @@ def get_lora_strength(node_id, obj, prompt, extra_data, outputs, input_data): def get_lora_data(input_data, attribute): return [ v[0][attribute] - for k, v in input_data.items() + for k, v in input_data[0].items() if k.startswith("lora_") and v[0]["on"] ] @@ -44,7 +44,7 @@ def get_lora_strength_stack(node_id, obj, prompt, extra_data, outputs, input_dat def get_lora_data_stack(input_data, attribute): return [ v[0] - for k, v in input_data.items() + for k, v in input_data[0].items() if k.startswith(attribute + "_") and v[0] != "None" ]