python / python/cpython

Include the opening brace's line in multiline f-string errors

未关闭
#157,778 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

interpreter-core type-feature
主要语言
Python
星标
77.2k
派生
35.9k
PR 合并指标
PR 指标待抓取

描述

An unclosed f-string replacement field can report an error on a later line, making the opening brace hard to find:

var = "abc"
a = f""" {var} extern "C" { """
b = """ string """
  File "script.py", line 3
    b = """ string """
                   ^
SyntaxError: f-string: expecting '}'

The quotes after the second { start a string inside the replacement field. That string ends on line 3, and the final quotes start another string that is never closed.

The error should include the line number of the opening brace:

SyntaxError: f-string: expecting '}' to close '{' on line 2

The same problem affects t-strings. Valid strings inside replacement fields should continue to work.

Linked PRs
  • gh-157779

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从提供的多行 f-string 复现代码开始,并将其诊断结果与预期消息进行比较。检查对应的 t-string 情况,并确认替换字段中的有效字符串仍然可以正常工作。完成的标准是:两个受影响的错误消息都指出左花括号所在的行,且不会导致有效字符串回归;一个已关联的 pull request 已经列出。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
compilers
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
描述清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。