select, extend-select, ignore, and extend-ignore have new semantics (#2312)
Previously, the interplay between select and its related options could lead to unexpected behavior. For example, ruff --select E501 --ignore ALL and ruff --select E501 --extend-ignore ALL behaved differently. (See #2312 for more examples.)
The new semantics are such that Ruff uses the "highest-priority" select as the basis for the rule set, and then applies any extend-select, ignore, and extend-ignore adjustments. CLI options are given higher priority than pyproject.toml options, and the current pyproject.toml file is given higher priority than any inherited pyproject.toml files.
As an example: ruff --select F401 will select rule F401, and ignore any of the modifiers from the pyproject.toml, as the "highest-priorty" select kicks off the resolution chain.
This change is largely backwards compatible -- most users should experience no change in behavior. For more, see BREAKING_CHANGES.md.
select, extend-select, ignore, and extend-ignore have new semantics (#2312)
Previously, the interplay between select and its related options could lead to unexpected
behavior. For example, ruff --select E501 --ignore ALL and ruff --select E501 --extend-ignore ALL behaved differently. (See #2312 for more
examples.)
When Ruff determines the enabled rule set, it has to reconcile select and ignore from a variety
of sources, including the current pyproject.toml, any inherited pyproject.toml files, and the
CLI.
The new semantics are such that Ruff uses the "highest-priority" select as the basis for the rule
set, and then applies any extend-select, ignore, and extend-ignore adjustments. CLI options
are given higher priority than pyproject.toml options, and the current pyproject.toml file is
given higher priority than any inherited pyproject.toml files.
extend-select and extend-ignore are no longer given "top priority"; instead, they merely append
to the select and ignore lists, as in Flake8.
This change is largely backwards compatible -- most users should experience no change in behavior.
However, as an example of a breaking change, consider the following:
[tool.ruff]
ignore = ["F401"]
Running ruff --select F would previously have enabled all F rules, apart from F401. Now, it
will enable all F rules, including F401, as the command line's --select resets the resolution.
remove-six-compat (UP016) has been removed (#2332)
The remove-six-compat rule has been removed. This rule was only useful for one-time Python 2-to-3
upgrades.
0.0.238
--explain, --clean, and --generate-shell-completion are now subcommands (#2190)
--explain, --clean, and --generate-shell-completion are now implemented as subcommands:
ruff . # Still works! And will always work.
ruff check . # New! Also works.
ruff --explain E402 # Still works.
ruff rule E402 # New! Also works. (And preferred.)
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 rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will 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 version` will 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 dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps ruff from 0.0.207 to 0.0.239.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
c155953
Bump version to 0.0.239e97b1a4
fix: ignore fix if "bool" is not builtin (#2429)82ec884
feat: let SIM210 return expressions without bool() wrapping (#2410) (#2426)7c1a6bc
[flake8-raise
] Add Plugin andRSE102
Rule (#2354)84a8b62
Avoid implicit-namespace-package checks for .pyi files (#2420)142b627
Avoid Bandit false-positives for empty-string-as-password (#2421)fbf231e
Allow implicit multiline strings with internal quotes to use non-preferred qu...1dd9ccf
feat: let SIM103 return expressions without bool() wrapping (#2410)d601abe
Rename flake8-quotes snapshots and tests (#2415)15d4774
Avoid flagging same-condition cases in SIM103 (#2404)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 rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will 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 version` will 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 dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)