Ruff v0.7.0 现已发布!您可以通过 PyPI 或您选择的包管理器进行安装。
uv pip install --upgrade ruff
温馨提示:Ruff 是一款极其快速的 Python 代码检查器和格式化工具,采用 Rust 编写。 Ruff 可以替代 Black、Flake8(以及数十个插件)、isort、pydocstyle、pyupgrade 等工具,其执行速度比任何单个工具都要快数十甚至数百倍。
迁移至 v0.7 #
与大多数 Ruff 次要版本一样,本次发布包含的重大变更很少:我们的大多数用户应该能够升级到最新版本的 Ruff,而无需对其代码或配置进行任何重大修改。
话虽如此,升级时仍需注意以下几点:
- 部分用户将体验到规则
PT001
和PT023
(在我们flake8-pytest
类别中)的新默认设置。这是我们在 Ruff v0.6 中尝试进行的更改,但由于我们的错误,并非所有用户都看到了行为上的变化。请参阅下文了解更多详情。 useless-try-except
规则(在我们tryceratops
类别中)已从TRY302
重新编码为TRY203
。这确保了 Ruff 的代码与tryceratops
代码检查器中的相同规则保持一致。lint.allow-unused-imports
设置已被移除。请改用lint.pyflakes.allow-unused-imports
。open-file-with-context-handler
(SIM115
) 是一条用于查找未在上下文管理器中打开的文件的规则,现在具有更广泛的行为。以前它只查找使用内置open()
函数或pathlib.Path(...).open()
打开的文件,现在它可以使用各种其他标准库函数和类来检测文件是否被打开。此改进功能已向预览模式用户提供数月,现已提升为稳定版。
flake8-pytest-style
规则的默认行为已更改 #
(这次是认真的。)
在 Ruff v0.6 中,我们尝试更改 pytest-fixture-incorrect-parentheses-style
和 pytest-incorrect-mark-parentheses-style
(分别为 PT001
和 PT023
)的默认行为。对于我们的许多用户而言,Ruff v0.6 中的默认行为确实发生了变化。
然而,不幸的是,一些用户仍然在使用旧的默认设置。用户是否会收到更新的行为,具体取决于其 Ruff 配置文件(pyproject.toml
、ruff.toml
或类似文件)中配置选项的指定(或未指定)情况。
现在这个 bug 已经修复,这得益于 Alexey Preobrazhenskiy 的贡献:在 Ruff v0.7 中,所有用户都将体验到新的默认行为。
回顾一下在 Ruff v0.6 中仅部分实现的更改:之前,PT001
默认会将 @pytest.fixture
装饰器更改为 @pytest.fixture()
,而 PT023
会将 @pytest.mark.foo
装饰器更改为 @pytest.mark.foo()
。
现在它们都将默认移除括号,而不是添加它们。这意味着这些规则现在更符合官方 pytest 项目提出的样式建议。
这两条规则都可配置。要恢复 Ruff 以前的默认行为,请在 Ruff 配置文件中使用 lint.flake8-pytest-style.mark-parentheses
和 lint.flake8-pytest-style.fixture-parentheses
设置。例如,在 pyproject.toml
文件中:
[tool.ruff.lint.flake8-pytest-style]
fixture-parentheses = true
mark-parentheses = true
这些规则还都附带安全修复,因此您可以通过运行 ruff check . --fix --select=PT001 --select=PT023
轻松修复此更改导致的任何新的违规行为。
在 GitHub 上查看完整的更新日志。
了解更多关于 Astral — Ruff 背后的公司。