Ruff v0.8.0

Ruff v0.8.0

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

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。

🏷️

标签

➡️

继续阅读