from typing_extensions import override from comfy_api.latest import ComfyExtension, io class SwitchNode(io.ComfyNode): @classmethod def define_schema(cls): template = io.MatchType.Template("switch") return io.Schema( node_id="ComfySwitchNode", display_name="Switch", category="logic", inputs=[ io.Boolean.Input("switch"), io.MatchType.Input("on_false", template=template, lazy=True), io.MatchType.Input("on_true", template=template, lazy=True), ], outputs=[ io.MatchType.Output("output", template=template, display_name="output"), ], ) @classmethod def check_lazy_status(cls, switch, on_false=None, on_true=None): if switch and on_true is None: return ["on_true"] if not switch and on_false is None: return ["on_false"] @classmethod def execute(cls, switch, on_true, on_false) -> io.NodeOutput: return io.NodeOutput(on_true if switch else on_false) class LogicExtension(ComfyExtension): @override async def get_node_list(self) -> list[type[io.ComfyNode]]: return [ SwitchNode, ] async def comfy_entrypoint() -> LogicExtension: return LogicExtension()