diff --git a/tests/test_generate_popular_node_signatures.py b/tests/test_generate_popular_node_signatures.py index 3fe7f4c..f780bb1 100644 --- a/tests/test_generate_popular_node_signatures.py +++ b/tests/test_generate_popular_node_signatures.py @@ -743,6 +743,30 @@ NODE_CLASS_MAPPINGS = { self.assertEqual({}, result["nodes"]) self.assertEqual("no_static_nodes", result["pack"]["status"]) + def test_string_return_names_declaration_skips_node(self): + source = ''' +class StringReturnNamesNode: + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = "image" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + }, + } + + +NODE_CLASS_MAPPINGS = { + "StringReturnNamesNode": StringReturnNamesNode, +} +''' + result = self._extract_source(source, "string-return-names-pack") + + self.assertEqual({}, result["nodes"]) + self.assertEqual("no_static_nodes", result["pack"]["status"]) + def test_missing_return_names_is_allowed(self): source = ''' class MissingReturnNamesNode: diff --git a/tools/generate_popular_node_signatures.py b/tools/generate_popular_node_signatures.py index db5c4c5..0bd8b42 100644 --- a/tools/generate_popular_node_signatures.py +++ b/tools/generate_popular_node_signatures.py @@ -420,7 +420,7 @@ def _class_attr(cls, name, env): if name in _bound_names(stmt): value = _INVALID if value is _MISSING: - return None + return _MISSING if value is _INVALID: return _INVALID return value @@ -558,8 +558,12 @@ def _signature_from_class(node_type, cls, display, pack_meta, env): required.append(str(name)) output_names = [] - if isinstance(return_names, (list, tuple)): + if return_names is _MISSING: + output_names = [] + elif isinstance(return_names, (list, tuple)): output_names = [str(name) for name in return_names] + else: + return None return { "type": node_type,