diff --git a/tests/test_generate_popular_node_signatures.py b/tests/test_generate_popular_node_signatures.py index e7385bc..9c48592 100644 --- a/tests/test_generate_popular_node_signatures.py +++ b/tests/test_generate_popular_node_signatures.py @@ -751,6 +751,82 @@ NODE_CLASS_MAPPINGS = { self.assertEqual({}, result["nodes"]) self.assertEqual("no_static_nodes", result["pack"]["status"]) + def test_return_types_alias_subscript_assignment_skips_node(self): + source = ''' +class AliasSubscriptMutatedReturnTypesNode: + RETURN_TYPES = ["IMAGE"] + ALIAS = RETURN_TYPES + ALIAS[0] = "MASK" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + }, + } + + +NODE_CLASS_MAPPINGS = { + "AliasSubscriptMutatedReturnTypesNode": AliasSubscriptMutatedReturnTypesNode, +} +''' + result = self._extract_source(source, "alias-subscript-mutated-return-types-pack") + + self.assertEqual({}, result["nodes"]) + self.assertEqual("no_static_nodes", result["pack"]["status"]) + + def test_return_types_alias_augmented_assignment_skips_node(self): + source = ''' +class AliasAugmentedMutatedReturnTypesNode: + RETURN_TYPES = ["IMAGE"] + ALIAS = RETURN_TYPES + ALIAS += ["MASK"] + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + }, + } + + +NODE_CLASS_MAPPINGS = { + "AliasAugmentedMutatedReturnTypesNode": AliasAugmentedMutatedReturnTypesNode, +} +''' + result = self._extract_source(source, "alias-augmented-mutated-return-types-pack") + + self.assertEqual({}, result["nodes"]) + self.assertEqual("no_static_nodes", result["pack"]["status"]) + + def test_return_names_alias_subscript_assignment_skips_node(self): + source = ''' +class AliasSubscriptMutatedReturnNamesNode: + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ["image"] + ALIAS = RETURN_NAMES + ALIAS[0] = "mask" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "image": ("IMAGE",), + }, + } + + +NODE_CLASS_MAPPINGS = { + "AliasSubscriptMutatedReturnNamesNode": AliasSubscriptMutatedReturnNamesNode, +} +''' + result = self._extract_source(source, "alias-subscript-mutated-return-names-pack") + + self.assertEqual({}, result["nodes"]) + self.assertEqual("no_static_nodes", result["pack"]["status"]) + def test_class_return_types_uses_definition_time_module_env(self): source = ''' RETURNS = ("IMAGE",) diff --git a/tools/generate_popular_node_signatures.py b/tools/generate_popular_node_signatures.py index cf081e9..01d4b60 100644 --- a/tools/generate_popular_node_signatures.py +++ b/tools/generate_popular_node_signatures.py @@ -414,6 +414,7 @@ def _class_attr(cls, name, env): aliases.add(stmt.targets[0].id) continue if aliases.intersection(target_names): + value = _INVALID aliases.difference_update(target_names) if name not in target_names: continue @@ -436,6 +437,7 @@ def _class_attr(cls, name, env): aliases.add(stmt.target.id) continue if aliases.intersection(target_names): + value = _INVALID aliases.difference_update(target_names) if name not in target_names: continue @@ -452,6 +454,7 @@ def _class_attr(cls, name, env): if isinstance(stmt, ast.AugAssign): target_names = _assignment_target_names(stmt) if aliases.intersection(target_names): + value = _INVALID aliases.difference_update(target_names) if name in target_names: value = _INVALID @@ -459,6 +462,7 @@ def _class_attr(cls, name, env): if isinstance(stmt, ast.Delete): target_names = _delete_target_names(stmt) if aliases.intersection(target_names): + value = _INVALID aliases.difference_update(target_names) if name in target_names: value = _INVALID