viable/strict/1790160656: Revert "[dynamo] Validate getattr arguments before dispatch (#196526)"
PyTorch 仓库在 2026-09-23 出现一次回滚:提交 6bb7f66(PR #196526,[dynamo] Validate getattr arguments before dispatch)被 revert,回滚提交为 436848ff28b08e226be1c47ee096e7f08023544f,并出现在 viable/strict/1790160656 与 trunk 两个发布标签中。回滚理由由 huydhn 给出:该改动似乎破坏了 dynamo trunk 测试。被回滚的 PR 原本让 GetAttrBuiltinVariable 在分发前校验 getattr() 参数,使用 no_keywords 与 check_positional 对齐 CPython 的参数校验,并移除 CPython 3.13 上 BuiltinTest.test_getattr 的 expected-failure 标记。
发展脉络
- 首次出现trunk/6bb7f663e51d5c8007e9fe43ba1ecbaf017b50ef: [dynamo] Validate getattr arguments before dispatch (#196526)PyTorch Core
- 行业反馈viable/strict/1790160656: Revert "[dynamo] Validate getattr arguments before dispatch (#196526)"PyTorch Core
- 行业反馈trunk/436848ff28b08e226be1c47ee096e7f08023544f: Revert "[dynamo] Validate getattr arguments before dispatch (#196526)"PyTorch Core
- 当前判断该事件本身不构成产业级信号,只反映 PyTorch Dynamo 主干对回归的敏感度:参数校验这类语义对齐改动也会因测试基线被回滚,说明编译器层与 CPython 语义对齐的推进是渐进且易反复的。可观察的下一信号是同一 PR 是否在修复测试后重新合入。Agent Pulse · 分析
PyTorch 在 2026-09-23 回滚了 PR #196526([dynamo] Validate getattr arguments before dispatch)。该 PR 的目标是让 Dynamo 的 GetAttrBuiltinVariable 在分发前校验 getattr() 调用:此前位置参数过少会抛内部 IndexError、多余参数被静默忽略、关键字参数未被拒绝、非字符串属性名也会以内部 Dynamo 错误形式暴露;改动引入 no_keywords 与 check_positional 以对齐 CPython 的参数校验,并移除了 CPython 3.13 下 BuiltinTest.test_getattr 的 expected-failure 标记。回滚提交为 436848ff28b08e226be1c47ee096e7f08023544f,理由是该改动似乎破坏了 dynamo trunk 测试。
从证据看,这是一次典型的编译器前端参数校验改动与既有测试基线冲突:改动方向是让 Dynamo 的错误行为对齐 CPython,但落地后触发 trunk 测试失败,说明校验时机或错误类型变化可能被下游测试依赖。可验证的下一信号是后续是否出现重新提交的 PR,以及 test/dynamo/test_misc.py 与 test_tp_getattro.py 相关用例是否随之调整。
该事件本身不构成产业级信号,只反映 PyTorch Dynamo 主干对回归的敏感度:参数校验这类语义对齐改动也会因测试基线被回滚,说明编译器层与 CPython 语义对齐的推进是渐进且易反复的。可观察的下一信号是同一 PR 是否在修复测试后重新合入。
对依赖 torch.compile/Dynamo 的团队,这类回滚意味着短期内 getattr 非法调用的报错行为维持原状,不应据此调整错误处理逻辑;价值在于提示把编译器版本固定并关注 trunk 测试稳定性,而非追逐单次提交。
若该改动以修正版重新提交,Dynamo 对 getattr 非法调用的报错将更接近 CPython;若长期不回滚重提,则说明现有测试对旧行为的依赖更强。判断依据是后续提交记录与测试文件变更,而非当前单次回滚。