diff --git a/comfy_api/latest/_io.py b/comfy_api/latest/_io.py index 7a91f6d5a..892280282 100644 --- a/comfy_api/latest/_io.py +++ b/comfy_api/latest/_io.py @@ -842,7 +842,7 @@ class DynamicOutput(Output, ABC): @comfytype(io_type="COMFY_AUTOGROW_V3") class Autogrow(ComfyTypeI): - Type = list[Any] + Type = dict[str, Any] _MaxNames = 100 # NOTE: max 100 names for sanity class _AutogrowTemplate: @@ -1872,6 +1872,7 @@ __all__ = [ # Dynamic Types "MatchType", "DynamicCombo", + "Autogrow", # Other classes "HiddenHolder", "Hidden", diff --git a/comfy_extras/nodes_logic.py b/comfy_extras/nodes_logic.py index 879dc2b2d..0bb628dc9 100644 --- a/comfy_extras/nodes_logic.py +++ b/comfy_extras/nodes_logic.py @@ -57,7 +57,7 @@ class DCTestNode(io.ComfyNode): )], outputs=[io.AnyType.Output()], ) - + @classmethod def execute(cls, combo: DCValues) -> io.NodeOutput: combo_val = combo["combo"] @@ -71,12 +71,54 @@ class DCTestNode(io.ComfyNode): raise ValueError(f"Invalid combo: {combo_val}") +class AutogrowNamesTestNode(io.ComfyNode): + @classmethod + def define_schema(cls): + template = io.Autogrow.TemplateNames(input=io.String.Input("string"), names=["a", "b", "c"]) + return io.Schema( + node_id="AutogrowNamesTestNode", + display_name="AutogrowNamesTest", + category="logic", + inputs=[ + io.Autogrow.Input("autogrow", template=template) + ], + outputs=[io.String.Output("output")], + ) + + @classmethod + def execute(cls, autogrow: io.Autogrow.Type) -> io.NodeOutput: + vals = list(autogrow.values()) + combined = "".join(vals) + return io.NodeOutput(combined) + +class AutogrowPrefixTestNode(io.ComfyNode): + @classmethod + def define_schema(cls): + template = io.Autogrow.TemplatePrefix(input=io.String.Input("string"), prefix="string", min=1, max=10) + return io.Schema( + node_id="AutogrowPrefixTestNode", + display_name="AutogrowPrefixTest", + category="logic", + inputs=[ + io.Autogrow.Input("autogrow", template=template) + ], + outputs=[io.String.Output("output")], + ) + + @classmethod + def execute(cls, autogrow: io.Autogrow.Type) -> io.NodeOutput: + vals = list(autogrow.values()) + combined = "".join(vals) + return io.NodeOutput(combined) + class LogicExtension(ComfyExtension): @override async def get_node_list(self) -> list[type[io.ComfyNode]]: return [ SwitchNode, DCTestNode, + AutogrowNamesTestNode, + AutogrowPrefixTestNode, ] async def comfy_entrypoint() -> LogicExtension: