build(deps-dev): bump ruff from 0.7.3 to 0.10.0
Bumps ruff from 0.7.3 to 0.10.0.
Release notes
Sourced from ruff's releases.
0.10.0
Release Notes
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
Changes to how the Python version is inferred when a
target-versionis not specified (#16319)In previous versions of Ruff, you could specify your Python version with:
- The
target-versionoption in aruff.tomlfile or the[tool.ruff]section of a pyproject.toml file.- The
project.requires-pythonfield in apyproject.tomlfile with a[tool.ruff]section.These options worked well in most cases, and are still recommended for fine control of the Python version. However, because of the way Ruff discovers config files,
pyproject.tomlfiles without a[tool.ruff]section would be ignored, including therequires-pythonsetting. Ruff would then use the default Python version (3.9 as of this writing) instead, which is surprising when you've attempted to request another version.In v0.10, config discovery has been updated to address this issue:
- If Ruff finds a
ruff.tomlfile without atarget-version, it will check for apyproject.tomlfile in the same directory and respect itsrequires-pythonversion, even if it does not contain a[tool.ruff]section.- If Ruff finds a user-level configuration, the
requires-pythonfield of the closestpyproject.tomlin a parent directory will take precedence.- If there is no config file (
ruff.tomlorpyproject.tomlwith a[tool.ruff]section) in the directory of the file being checked, Ruff will search for the closestpyproject.tomlin the parent directories and use itsrequires-pythonsetting.Updated
TYPE_CHECKINGbehavior (#16669)Previously, Ruff only recognized typechecking blocks that tested the
typing.TYPE_CHECKINGsymbol. Now, Ruff recognizes any local variable namedTYPE_CHECKING. This release also removes support for the legacyif 0:andif False:typechecking checks. Use a localTYPE_CHECKINGvariable instead.More robust noqa parsing (#16483)
The syntax for both file-level and in-line suppression comments has been unified and made more robust to certain errors. In most cases, this will result in more suppression comments being read by Ruff, but there are a few instances where previously read comments will now log an error to the user instead. Please refer to the documentation on Error suppression for the full specification.
Avoid unnecessary parentheses around with statements with a single context manager and a trailing comment (#14005)
This change fixes a bug in the formatter where it introduced unnecessary parentheses around with statements with a single context manager and a trailing comment. This change may result in a change in formatting for some users.
Bump alpine default tag to 3.21 for derived Docker images (#16456)
Alpine 3.21 was released in Dec 2024 and is used in the official Alpine-based Python images. Now the ruff:alpine image will use 3.21 instead of 3.20 and ruff:alpine3.20 will no longer be updated.
Deprecated Rules
The following rules have been deprecated:
... (truncated)
Changelog
Sourced from ruff's changelog.
0.10.0
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
Changes to how the Python version is inferred when a
target-versionis not specified (#16319)In previous versions of Ruff, you could specify your Python version with:
- The
target-versionoption in aruff.tomlfile or the[tool.ruff]section of a pyproject.toml file.- The
project.requires-pythonfield in apyproject.tomlfile with a[tool.ruff]section.These options worked well in most cases, and are still recommended for fine control of the Python version. However, because of the way Ruff discovers config files,
pyproject.tomlfiles without a[tool.ruff]section would be ignored, including therequires-pythonsetting. Ruff would then use the default Python version (3.9 as of this writing) instead, which is surprising when you've attempted to request another version.In v0.10, config discovery has been updated to address this issue:
- If Ruff finds a
ruff.tomlfile without atarget-version, it will check for apyproject.tomlfile in the same directory and respect itsrequires-pythonversion, even if it does not contain a[tool.ruff]section.- If Ruff finds a user-level configuration, the
requires-pythonfield of the closestpyproject.tomlin a parent directory will take precedence.- If there is no config file (
ruff.tomlorpyproject.tomlwith a[tool.ruff]section) in the directory of the file being checked, Ruff will search for the closestpyproject.tomlin the parent directories and use itsrequires-pythonsetting.Updated
TYPE_CHECKINGbehavior (#16669)Previously, Ruff only recognized typechecking blocks that tested the
typing.TYPE_CHECKINGsymbol. Now, Ruff recognizes any local variable namedTYPE_CHECKING. This release also removes support for the legacyif 0:andif False:typechecking checks. Use a localTYPE_CHECKINGvariable instead.More robust noqa parsing (#16483)
The syntax for both file-level and in-line suppression comments has been unified and made more robust to certain errors. In most cases, this will result in more suppression comments being read by Ruff, but there are a few instances where previously read comments will now log an error to the user instead. Please refer to the documentation on Error suppression for the full specification.
Avoid unnecessary parentheses around with statements with a single context manager and a trailing comment (#14005)
This change fixes a bug in the formatter where it introduced unnecessary parentheses around with statements with a single context manager and a trailing comment. This change may result in a change in formatting for some users.
Bump alpine default tag to 3.21 for derived Docker images (#16456)
Alpine 3.21 was released in Dec 2024 and is used in the official Alpine-based Python images. Now the ruff:alpine image will use 3.21 instead of 3.20 and ruff:alpine3.20 will no longer be updated.
Deprecated Rules
The following rules have been deprecated:
non-pep604-isinstance(UP038)
... (truncated)
Commits
27e9d1fRuff v0.10 Release (#16708)acf35c5Add newnoqaspecification to the docs (#16703)b9b2562describe requires-python fallback in docs (#16704)abaa189[red-knot] handle cycles in MRO/bases resolution (#16693)360ba09[red-knot] Auto generate statement nodes (#16645)d8159e8[pylint] Better inference forstr.strip(PLE310) (#16671)04ad562[pylint] Improverepeated-equality-comparisonfix to use asetwhen all...9167471[pylint/pep8-naming] Check__new__argument name in `bad-staticmethod-a...348815d[flake8-pyi] Stabilize fix forunused-private-type-var(PYI018) (#16682)1326d55[flake8-bandit] Deprecatesuspicious-xmle-tree-usage(S320) (#16680)- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
-
@dependabot rebasewill rebase this PR -
@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it -
@dependabot mergewill merge this PR after your CI passes on it -
@dependabot squash and mergewill squash and merge this PR after your CI passes on it -
@dependabot cancel mergewill cancel a previously requested merge and block automerging -
@dependabot reopenwill reopen this PR if it is closed -
@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually -
@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency -
@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)