spylang/spy

Tuple unpacking in for loops

Aberta

#455 aberto em 7 de abr. de 2026

 (2 comentários) (0 reação) (1 responsável)Python (60 forks)auto 404
good first issuehelp wanted

Métricas do repositório

Stars
 (803 estrelas)
Métricas de merge de PR
 (Mesclagem média 11d 20h) (22 fundiu PRs em 30d)

Description

WARNING - full AI-assisted solutions are not welcome for this issue The point of "Good first issues" is to give a chance to humans to interact and learn about the codebase. Writing code using AI assistant prevents this.


The following currently fails:

def main() -> None:
    lst = [(1, 2), (3, 4)]
    for (a, b) in lst:
        print(a + b)
❯ spy /tmp/x.spy 
Traceback (most recent call last):

ParseError: not implemented yet: complex for loop targets
  | /tmp/x.spy:3
  |     for (a, b) in lst:
  |         |____| this is not supported

We should support it.

I think that the easiest way is to improve ASTFrame._desugar_for, specifically here: https://github.com/spylang/spy/blob/1c6ad6bdb59541c44b43a55830b2ff6b8c03427c/spy/vm/astframe.py#L755-L765

Instead of generating an ast.Assign node, we should generate an ast.UnpackAssign node.

Guia do colaborador