Ruff v0.7.0

Ruff v0.7.0

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

Ruff v0.7.0 已发布,可从 PyPI 安装。该版本破坏性变更较少:PT001 和 PT023 规则默认改为移除括号,更符合 pytest 风格,并可通过配置恢复;TRY302 更名为 TRY203;移除 lint.allow-unused-imports;SIM115 检测范围扩大。

🔎

延伸解读

升级注意:PT001 和 PT023 默认行为变更

Ruff v0.7.0 中,PT001 和 PT023 规则默认改为移除括号,以更符合 pytest 官方风格。此前 v0.6 曾尝试变更但因配置差异未对所有用户生效,本次修复后所有用户都将体验新默认行为。若需恢复旧行为,可在配置中设置 fixture-parentheses 和 mark-parentheses 为 true。

规则重命名与配置迁移

TRY302 已更名为 TRY203,以与 tryceratops 规则保持一致。同时,lint.allow-unused-imports 设置被移除,应改用 lint.pyflakes.allow-unused-imports。升级时需注意这些变更,避免配置失效。

SIM115 检测范围扩大

SIM115 规则现在能检测更多标准库函数和类打开文件的情况,而不仅限于内置 open() 和 pathlib.Path(...).open()。该改进已在预览模式测试数月,现转为稳定。这有助于发现更多未使用上下文管理器打开文件的问题。

❓

Q&A

Ruff v0.7.0 有哪些破坏性变更?

Ruff v0.7.0 的破坏性变更包括:PT001 和 PT023 规则默认改为移除括号,更符合 pytest 风格,并可通过配置恢复;TRY302 更名为 TRY203;移除 lint.allow-unused-imports 设置,改用 lint.pyflakes.allow-unused-imports;SIM115 检测范围扩大。

如何安装或升级到 Ruff v0.7.0?

可以从 PyPI 安装,或使用包管理器。例如使用 uv:uv pip install --upgrade ruff。

PT001 和 PT023 规则在 v0.7.0 中默认行为有什么变化?

PT001 和 PT023 现在默认移除括号,而不是添加括号。例如,@pytest.fixture 不再被改为 @pytest.fixture(),@pytest.mark.foo 不再被改为 @pytest.mark.foo()。这更符合 pytest 官方风格建议。

如何恢复 PT001 和 PT023 的旧默认行为?

可以通过配置恢复。在 Ruff 配置文件中设置 lint.flake8-pytest-style.fixture-parentheses 和 lint.flake8-pytest-style.mark-parentheses 为 true。例如在 pyproject.toml 中:[tool.ruff.lint.flake8-pytest-style] fixture-parentheses = true mark-parentheses = true。

TRY302 规则在 v0.7.0 中有什么变化?

TRY302 已更名为 TRY203,以确保与 tryceratops 代码检查器中的同一规则保持一致。

SIM115 规则在 v0.7.0 中有什么改进?

SIM115(open-file-with-context-handler)现在能检测更多标准库函数和类打开文件的情况,而之前仅检测内置 open() 和 pathlib.Path(...).open()。该改进已在预览模式中测试数月,现已稳定。

🏷️

标签

➡️

继续阅读