Move code

This commit is contained in:
huchenlei 2024-11-27 12:29:47 -05:00
parent c7650d790b
commit 8244362d7d
3 changed files with 31 additions and 30 deletions

View File

@ -0,0 +1,29 @@
def validate_node_input(
received_type: str, input_type: str, strict: bool = False
) -> bool:
"""
received_type and input_type are both strings of the form "T1,T2,...".
If strict is True, the input_type must contain the received_type.
For example, if received_type is "STRING" and input_type is "STRING,INT",
this will return True. But if received_type is "STRING,INT" and input_type is
"INT", this will return False.
If strict is False, the input_type must have overlap with the received_type.
For example, if received_type is "STRING,BOOLEAN" and input_type is "STRING,INT",
this will return True.
"""
# If the types are exactly the same, we can return immediately
if received_type == input_type:
return True
# Split the type strings into sets for comparison
received_types = set(t.strip() for t in received_type.split(","))
input_types = set(t.strip() for t in input_type.split(","))
if strict:
# In strict mode, all received types must be in the input types
return received_types.issubset(input_types)
else:
# In non-strict mode, there must be at least one type in common
return len(received_types.intersection(input_types)) > 0

View File

@ -17,6 +17,7 @@ import comfy.model_management
from comfy_execution.graph import get_input_info, ExecutionList, DynamicPrompt, ExecutionBlocker
from comfy_execution.graph_utils import is_link, GraphBuilder
from comfy_execution.caching import HierarchicalCache, LRUCache, CacheKeySetInputSignature, CacheKeySetID
from comfy_execution.validation import validate_node_input
from comfy.cli_args import args
class ExecutionResult(Enum):
@ -528,35 +529,6 @@ class PromptExecutor:
comfy.model_management.unload_all_models()
def validate_node_input(received_type: str, input_type: str, strict: bool = False) -> bool:
"""
received_type and input_type are both strings of the form "T1,T2,...".
If strict is True, the input_type must contain the received_type.
For example, if received_type is "STRING" and input_type is "STRING,INT",
this will return True. But if received_type is "STRING,INT" and input_type is
"INT", this will return False.
If strict is False, the input_type must have overlap with the received_type.
For example, if received_type is "STRING,BOOLEAN" and input_type is "STRING,INT",
this will return True.
"""
# If the types are exactly the same, we can return immediately
if received_type == input_type:
return True
# Split the type strings into sets for comparison
received_types = set(t.strip() for t in received_type.split(','))
input_types = set(t.strip() for t in input_type.split(','))
if strict:
# In strict mode, all received types must be in the input types
return received_types.issubset(input_types)
else:
# In non-strict mode, there must be at least one type in common
return len(received_types.intersection(input_types)) > 0
def validate_inputs(prompt, item, validated):
unique_id = item
if unique_id in validated:

View File

@ -1,5 +1,5 @@
import pytest
from execution import validate_node_input
from comfy_execution.validation import validate_node_input
def test_exact_match():