From f26e441e03658be3984ac01d5a9e3d1c72ad627c Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Thu, 2 Jul 2026 16:39:06 +0200 Subject: [PATCH] Fail closed on invalid node mapping keys --- .../test_generate_popular_node_signatures.py | 23 +++++++++++++++++++ tools/generate_popular_node_signatures.py | 4 +++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/test_generate_popular_node_signatures.py b/tests/test_generate_popular_node_signatures.py index 9e598a9..92abbc4 100644 --- a/tests/test_generate_popular_node_signatures.py +++ b/tests/test_generate_popular_node_signatures.py @@ -1869,6 +1869,29 @@ KEY = "Wrong" self.assertEqual(["IMAGE"], result["nodes"]["Original"]["outputs"]) self.assertEqual("ok", result["pack"]["status"]) + def test_non_string_node_mapping_key_skips_node(self): + source = ''' +class NonStringMappingKeyNode: + RETURN_TYPES = ("IMAGE",) + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + }, + } + + +NODE_CLASS_MAPPINGS = { + 123: NonStringMappingKeyNode, +} +''' + result = self._extract_source(source, "non-string-mapping-key-pack") + + self.assertEqual({}, result["nodes"]) + self.assertEqual("no_static_nodes", result["pack"]["status"]) + def test_module_class_return_types_patch_after_mapping_skips_node(self): source = ''' class PatchedReturnTypesNode: diff --git a/tools/generate_popular_node_signatures.py b/tools/generate_popular_node_signatures.py index 4862366..7a2ffb1 100644 --- a/tools/generate_popular_node_signatures.py +++ b/tools/generate_popular_node_signatures.py @@ -1060,7 +1060,9 @@ def _node_class_mappings(tree): _mapping_value_binding, _node_mapping_invalidated_by_names, ) - return {str(node_type): binding for node_type, (_class_name, binding) in mappings.items() if node_type} + if not all(isinstance(node_type, str) for node_type in mappings): + return {} + return {node_type: binding for node_type, (_class_name, binding) in mappings.items() if node_type} def _display_mappings(tree):