内容提要
Ruff v0.8.0 发布:默认目标 Python 版本升至 3.9,稳定 13 条规则,移除 6 条废弃规则,flake8-type-checking 错误码由 TCH 改为 TC,更新 Unicode 宽度计算,独立安装器改用 XDG 目录,并调整 pydoclint 诊断位置。
延伸解读
默认目标版本升级的影响
Ruff v0.8 将默认目标 Python 版本从 3.8 提升至 3.9,这会影响 lint 和格式化行为。例如,格式化器现在会优先使用 Python 3.9 才支持的带括号 with 语句,isort 规则会将 zoneinfo 视为标准库导入,UP006 规则可能开始建议使用内置泛型类型。若未显式配置 target-version 或 requires-python,代码风格可能发生变化。要恢复旧行为,可在 pyproject.toml 中设置 requires-python = ">=3.8" 或指定 t
规则代码变更与移除
flake8-type-checking 规则的错误代码从 TCH 改为 TC,与上游插件保持一致。旧代码仍可用但会触发警告,建议更新配置。同时,六个废弃规则被移除:ANN101、ANN102、PT004、PT005、UP027 和 E999。其中 E999 移除后,语法错误将始终报告且无法抑制。这些移除意味着相关配置项需要清理,否则可能产生无效配置警告。
安装路径与诊断位置调整
独立安装器现在将 Ruff 安装到 XDG 目录(如 ~/.local/bin),而非之前的 $CARGO_HOME 或 ~/.cargo/bin。使用 CI 的用户可能需要将 ~/.local/bin 加入 PATH。通过 ruff self update 升级仍会使用旧位置,如需迁移可手动删除旧二进制后重新安装。此外,pydoclint 诊断的行号现在始终指向问题文档字符串的第一行,若使用 noqa 抑制,可能需要调整注释位置。
规则稳定与行为改进
本次发布稳定了 13 条预览规则,包括 A004、B039、FAST001、FAST002、PLC0206、PYI063、PYI064、PYI066、RUF021、RUF022、RUF023、RUF030 和 UP043。此外,E741 现在忽略 .pyi 存根文件中的违规,UP031 报告所有 printf 风格用法(不再限于可自动修复的情况),RUF007 的自动修复已稳定但仍标记为不安全。RUF200 也更新以支持 PEP 639 的 pyproject.toml 特性。
Q&A
Ruff v0.8.0 默认的目标 Python 版本是什么?
Ruff v0.8.0 将默认目标 Python 版本从 3.8 升级到了 3.9。
如何让 Ruff v0.8.0 继续使用 Python 3.8 作为目标版本?
可以在 pyproject.toml 中设置 project.requires-python = ">= 3.8",或者在 Ruff 配置中指定 target-version = "py38"。
Ruff v0.8.0 中 flake8-type-checking 规则的错误码有什么变化?
错误码从 TCH 改为 TC,与原始 flake8-type-checking 插件保持一致。使用旧的 TCH 代码仍然有效,但会发出警告,建议更新配置。
Ruff v0.8.0 移除了哪些规则?
移除了六条规则:ANN101、ANN102、PT004、PT005、UP027 和 E999。
Ruff v0.8.0 稳定了哪些规则?
稳定了 13 条规则:A004、B039、FAST001、FAST002、PLC0206、PYI063、PYI064、PYI066、RUF021、RUF022、RUF023、RUF030、UP043。
Ruff v0.8.0 的独立安装器现在将 Ruff 安装到哪个目录?
独立安装器现在使用 XDG 目录,按顺序尝试 $XDG_BIN_HOME、$XDG_DATA_HOME/../bin 或 ~/.local/bin。