feat: add ProjectSource config-only node
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -207,11 +207,37 @@ class ProjectLoaderDynamic:
|
||||
return (total_sequences,) + tuple(results)
|
||||
|
||||
|
||||
class ProjectSource:
|
||||
"""Config-only node — holds project connection settings, no outputs."""
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"manager_url": ("STRING", {"default": "http://localhost:8080", "multiline": False}),
|
||||
"project_name": ("STRING", {"default": "", "multiline": False}),
|
||||
"file_name": ("STRING", {"default": "", "multiline": False}),
|
||||
"sequence_number": ("INT", {"default": 1, "min": 1, "max": 9999}),
|
||||
"label": ("STRING", {"default": "source", "multiline": False}),
|
||||
},
|
||||
}
|
||||
|
||||
RETURN_TYPES = ()
|
||||
RETURN_NAMES = ()
|
||||
FUNCTION = "hold_config"
|
||||
CATEGORY = "utils/json/project"
|
||||
OUTPUT_NODE = True
|
||||
|
||||
def hold_config(self, manager_url, project_name, file_name, sequence_number, label):
|
||||
return ()
|
||||
|
||||
|
||||
# --- Mappings ---
|
||||
PROJECT_NODE_CLASS_MAPPINGS = {
|
||||
"ProjectLoaderDynamic": ProjectLoaderDynamic,
|
||||
"ProjectSource": ProjectSource,
|
||||
}
|
||||
|
||||
PROJECT_NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"ProjectLoaderDynamic": "Project Loader (Dynamic)",
|
||||
"ProjectSource": "Project Source",
|
||||
}
|
||||
|
||||
@@ -203,6 +203,38 @@ class TestProjectLoaderDynamic:
|
||||
assert ProjectLoaderDynamic.CATEGORY == "utils/json/project"
|
||||
|
||||
|
||||
class TestProjectSource:
|
||||
def test_input_types(self):
|
||||
from project_loader import ProjectSource
|
||||
inputs = ProjectSource.INPUT_TYPES()
|
||||
assert "manager_url" in inputs["required"]
|
||||
assert "project_name" in inputs["required"]
|
||||
assert "file_name" in inputs["required"]
|
||||
assert "sequence_number" in inputs["required"]
|
||||
assert "label" in inputs["required"]
|
||||
|
||||
def test_no_outputs(self):
|
||||
from project_loader import ProjectSource
|
||||
assert ProjectSource.RETURN_TYPES == ()
|
||||
assert ProjectSource.RETURN_NAMES == ()
|
||||
|
||||
def test_hold_config_returns_empty(self):
|
||||
from project_loader import ProjectSource
|
||||
node = ProjectSource()
|
||||
result = node.hold_config(
|
||||
manager_url="http://localhost:8080",
|
||||
project_name="proj1",
|
||||
file_name="batch_i2v",
|
||||
sequence_number=1,
|
||||
label="my_source"
|
||||
)
|
||||
assert result == ()
|
||||
|
||||
def test_category(self):
|
||||
from project_loader import ProjectSource
|
||||
assert ProjectSource.CATEGORY == "utils/json/project"
|
||||
|
||||
|
||||
class TestNodeMappings:
|
||||
def test_mappings_exist(self):
|
||||
from project_loader import PROJECT_NODE_CLASS_MAPPINGS, PROJECT_NODE_DISPLAY_NAME_MAPPINGS
|
||||
|
||||
Reference in New Issue
Block a user