From a6ed8eb2af1a2c01ffb772823320fac7816170d4 Mon Sep 17 00:00:00 2001 From: Austin Mroz Date: Sat, 24 Jan 2026 10:32:04 -0800 Subject: [PATCH] Add ConvertToList node --- comfy_extras/nodes_toolkit.py | 43 +++++++++++++++++++++++++++++++++++ nodes.py | 1 + 2 files changed, 44 insertions(+) create mode 100644 comfy_extras/nodes_toolkit.py diff --git a/comfy_extras/nodes_toolkit.py b/comfy_extras/nodes_toolkit.py new file mode 100644 index 000000000..08002115c --- /dev/null +++ b/comfy_extras/nodes_toolkit.py @@ -0,0 +1,43 @@ +from __future__ import annotations +from typing_extensions import override +from comfy_api.latest import ComfyExtension, io +from comfy_api.latest import _io + + +class ConvertToList(io.ComfyNode): + @classmethod + def define_schema(cls): + template_matchtype = io.MatchType.Template("type") + template_autogrow = _io.Autogrow.TemplatePrefix( + input=io.MatchType.Input("input", template=template_matchtype), + prefix="input", + ) + return io.Schema( + node_id="ConvertToList", + display_name="Convert to List", + category="logic", + is_input_list=True, + inputs=[_io.Autogrow.Input("inputs", template=template_autogrow)], + outputs=[ + io.MatchType.Output(template=template_matchtype, is_output_list=True), + ], + ) + + @classmethod + def execute(cls, inputs: _io.Autogrow.Type) -> io.NodeOutput: + output_list = [] + for input in inputs.values(): + output_list += input + return io.NodeOutput(output_list) + + +class ToolkitExtension(ComfyExtension): + @override + async def get_node_list(self) -> list[type[io.ComfyNode]]: + return [ + ConvertToList, + ] + + +async def comfy_entrypoint() -> ToolkitExtension: + return ToolkitExtension() diff --git a/nodes.py b/nodes.py index 8864fda60..2cce40ddd 100644 --- a/nodes.py +++ b/nodes.py @@ -2389,6 +2389,7 @@ async def init_builtin_extra_nodes(): "nodes_wanmove.py", "nodes_image_compare.py", "nodes_zimage.py", + "nodes_toolkit.py", ] import_failed = []