From 7dbee88485ede3b514d55e72ef1f8adf79036fd0 Mon Sep 17 00:00:00 2001 From: Jacob Segal Date: Sat, 20 Apr 2024 22:54:38 -0700 Subject: [PATCH] Add docs on when ExecutionBlocker should be used --- comfy/graph.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/comfy/graph.py b/comfy/graph.py index b20c7bf38..1135620ec 100644 --- a/comfy/graph.py +++ b/comfy/graph.py @@ -208,6 +208,16 @@ class ExecutionList(TopologicalSort): return list(blocked_by.keys()) # Return this from a node and any users will be blocked with the given error message. +# If the message is None, execution will be blocked silently instead. +# Generally, you should avoid using this functionality unless absolutley necessary. Whenever it's +# possible, a lazy input will be more efficient and have a better user experience. +# This functionality is useful in two cases: +# 1. You want to conditionally prevent an output node from executing. (Particularly a built-in node +# like SaveImage. For your own output nodes, I would recommend just adding a BOOL input and using +# lazy evaluation to let it conditionally disable itself.) +# 2. You have a node with multiple possible outputs, some of which are invalid and should not be used. +# (I would recommend not making nodes like this in the future -- instead, make multiple nodes with +# different outputs. Unfortunately, there are several popular existing nodes using this pattern.) class ExecutionBlocker: def __init__(self, message): self.message = message