Path 1: 89 calls (0.95)

AssignName (89)

None (89) 'i' (16) 'data' (15) 'x' (11) 'm' (4) 'elem' (4) 'my_int' (4) 'value' (4) 'k' (3) 'key' (3)

GeneratorExit (5)

1def find_assigned_names_recursive(
2    target: nodes.AssignName | nodes.BaseContainer,
3) -> Iterator[str]:
4    """Yield the names of assignment targets, accounting for nested ones."""
5    if isinstance(target, nodes.AssignName):
6        if target.name is not None:
7            yield target.name
8    elif isinstance(target, nodes.BaseContainer):
9        for elt in target.elts:
10            yield from find_assigned_names_recursive(elt)
            

Path 2: 5 calls (0.05)

Tuple (5)

'key' (2) 'a' (2) 'b' (2) 'x' (1) 'y' (1) 'inner_first' (1) 'inner_second' (1) None (1) 'value' (1)

GeneratorExit (1)

1def find_assigned_names_recursive(
2    target: nodes.AssignName | nodes.BaseContainer,
3) -> Iterator[str]:
4    """Yield the names of assignment targets, accounting for nested ones."""
5    if isinstance(target, nodes.AssignName):
6        if target.name is not None:
7            yield target.name
8    elif isinstance(target, nodes.BaseContainer):
9        for elt in target.elts:
10            yield from find_assigned_names_recursive(elt)