diff --git a/project_loader.py b/project_loader.py index 581da09..c0ce0de 100644 --- a/project_loader.py +++ b/project_loader.py @@ -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", } diff --git a/tests/test_project_loader.py b/tests/test_project_loader.py index dab80b2..1a3a98c 100644 --- a/tests/test_project_loader.py +++ b/tests/test_project_loader.py @@ -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