From bfad18590a9c2d9afd1d5840d69ebfa6aa126932 Mon Sep 17 00:00:00 2001 From: rjgoif Date: Tue, 2 Dec 2025 21:20:15 -0500 Subject: [PATCH] Update ttNexecutor.py to fix XYZ bug. Fixed bug that occurred when Comfy changed how it handles node outputs and now returns NodeOutput objects instead of simple tuples/lists. This fixes the XYZ bug that happened as a result of that bug. See https://github.com/TinyTerra/ComfyUI_tinyterraNodes/issues/211 --- ttNpy/ttNexecutor.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/ttNpy/ttNexecutor.py b/ttNpy/ttNexecutor.py index 91b331b..5bb927f 100644 --- a/ttNpy/ttNexecutor.py +++ b/ttNpy/ttNexecutor.py @@ -39,7 +39,6 @@ def get_output_data(obj, input_data_all): results = [] uis = [] return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True) - for r in return_values: if isinstance(r, dict): if 'ui' in r: @@ -48,21 +47,35 @@ def get_output_data(obj, input_data_all): results.append(r['result']) else: results.append(r) - output = [] if len(results) > 0: # check which outputs need concatenating - output_is_list = [False] * len(results[0]) + # Handle both old tuples and new NodeOutput objects + first_result = results[0] + try: + # Try to get length directly (works for tuples/lists) + result_len = len(first_result) + except TypeError: + # If len() fails, it's likely a NodeOutput - convert it + try: + first_result = tuple(first_result) + results[0] = first_result + result_len = len(first_result) + except: + # Single value output + result_len = 1 + results[0] = (first_result,) + + output_is_list = [False] * result_len + if hasattr(obj, "OUTPUT_IS_LIST"): output_is_list = obj.OUTPUT_IS_LIST - # merge node execution results for i, is_list in zip(range(len(results[0])), output_is_list): if is_list: output.append([x for o in results for x in o[i]]) else: output.append([o[i] for o in results]) - ui = dict() if len(uis) > 0: ui = {k: [y for x in uis for y in x[k]] for k in uis[0].keys()}