Ruff v0.6.0 发布

Ruff v0.6.0 发布

💡 原文英文,约900词,阅读约需3分钟。
📝

内容提要

Ruff v0.6.0 发布,升级改动较小:弃用 PT004、PT005、UP027 规则;isort 默认将 src/ 识别为第一方代码;RUF025 改为 C420;Jupyter 笔记本默认纳入检查与格式化,可通过配置排除;PT001 和 PT023 默认移除括号;稳定 9 条 pylint 规则、2 条 PYI 规则及 RUF101;扩展 ASYNC 规则至 asyncio 和 anyio;稳定 RET505-508 自动修复。

🔎

延伸解读

升级影响:默认行为变化需留意

Ruff v0.6.0 虽无重大破坏性变更,但几项默认行为调整可能影响现有项目。isort 规则现在默认将 src/ 目录识别为第一方代码,可能导致导入重新排序或分类。Jupyter 笔记本默认纳入检查与格式化,若不想被处理需配置排除。PT001 和 PT023 默认移除括号,与 pytest 官方风格更一致。升级后建议运行检查并查看差异,必要时通过配置恢复旧行为。

Jupyter 笔记本支持:默认启用与灵活控制

此前 Ruff 需通过 extend-include 配置才会处理 .ipynb 文件,v0.6.0 起默认对目录中的笔记本进行 lint 和格式化。若希望保持旧行为,可设置 extend-exclude 排除所有笔记本;也可分别控制仅格式化或仅检查,例如在 lint 或 format 部分设置 exclude。还支持通过 per-file-ignores 针对笔记本禁用特定规则,如忽略行过长警告。

规则稳定化:更多检查默认可用

本次发布将多条预览规则转为稳定,包括 9 条源自 pylint 的规则(如 PLE1519、PLW0211 等)、2 条 PYI 规则(PYI057、PYI062)和 RUF101。ASYNC 规则扩展至 asyncio 和 anyio,覆盖更多异步反模式。RET505-508 的自动修复也已稳定。这些变化意味着用户无需启用预览模式即可使用这些检查,有助于提升代码质量。

❓

Q&A

Ruff v0.6.0 升级有哪些破坏性变更?

Ruff v0.6.0 的破坏性变更较少,主要包括:弃用 PT004、PT005、UP027 规则;isort 默认将 src/ 识别为第一方代码;RUF025 重编码为 C420;Jupyter 笔记本默认纳入检查与格式化;PT001 和 PT023 默认移除括号。

Ruff v0.6.0 中 isort 对 src/ 目录的处理有什么变化?

默认情况下,isort 规则现在会搜索 src/ 目录,以确定可能代表第一方代码的包名列表。这可能导致一些导入被重新排序或重新分类,因为之前被视为第三方导入的语句现在会被正确理解为第一方导入。

Ruff v0.6.0 默认会检查 Jupyter 笔记本吗?如何排除?

是的,Ruff v0.6.0 默认会检查并格式化 Jupyter 笔记本(.ipynb 文件)。要排除笔记本,可以在配置文件中设置 extend-exclude = ["*.ipynb"]。也可以更细粒度地控制,例如只格式化不检查,或只检查不格式化。

Ruff v0.6.0 对 PT001 和 PT023 规则的默认行为做了什么改变?

PT001 和 PT023 现在默认移除括号,而不是添加括号。之前 PT001 会将 @pytest.fixture 改为 @pytest.fixture(),PT023 会将 @pytest.mark.foo 改为 @pytest.mark.foo()。现在它们默认移除括号,更符合 pytest 官方风格建议。可以通过配置恢复旧行为。

Ruff v0.6.0 稳定了哪些规则?

Ruff v0.6.0 稳定了 9 条 pylint 规则(如 PLE1519、PLE1520、PLW0211 等)、2 条 PYI 规则(PYI057、PYI062)和 1 条 RUF 规则(RUF101)。此外,还稳定了 ASYNC 规则对 asyncio 和 anyio 的支持,以及 RET505-508 的自动修复。

Ruff v0.6.0 中 ASYNC 规则有哪些扩展?

ASYNC100、ASYNC109、ASYNC110、ASYNC115 和 ASYNC116 的检测范围已扩大,现在除了检测 trio 代码中的反模式外,还能检测 asyncio 和 anyio 代码中的反模式。

🏷️

标签

➡️

继续阅读