spylang/spy

Tuple unpacking in for loops

開放

#455 建立於 2026年4月7日

 (2 則留言) (0 個反應) (1 位負責人)Python (60 個分叉)auto 404
good first issuehelp wanted

倉庫指標

星標
 (803 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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.

貢獻者指南