mirror of https://github.com/astral-sh/ruff
Ignore deprecated rules unless selected by exact code (#20167)
<!-- Thank you for contributing to Ruff/ty! To help us out with reviewing, please consider the following: - Does this pull request include a summary of the change? (See below.) - Does this pull request include a descriptive title? (Please prefix with `[ty]` for ty pull requests.) - Does this pull request include references to any relevant issues? --> ## Summary Closes #18349 After this change: - All deprecated rules are deselected by default - They are only selected if the user specifically selects them by code, e.g. `--select UP038` - Thus, `--select ALL --select UP --select UP0` won't select the deprecated rule UP038 - Documented the change in version policy. From now on, deprecating a rule should increase the minor version ## Test Plan Integration tests in "integration_tests.rs" Also tested with a temporary test package: ``` ~> ../../ruff/target/debug/ruff.exe check --select UP038 warning: Rule `UP038` is deprecated and will be removed in a future release. warning: Detected debug build without --no-cache. UP038 Use `X | Y` in `isinstance` call instead of `(X, Y)` --> main.py:2:11 | 1 | def main(): 2 | print(isinstance(25, (str, int))) | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | help: Convert to `X | Y` Found 1 error. No fixes available (1 hidden fix can be enabled with the `--unsafe-fixes` option). ~> ../../ruff/target/debug/ruff.exe check --select UP03 warning: Detected debug build without --no-cache. All checks passed! ~> ../../ruff/target/debug/ruff.exe check --select UP0 warning: Detected debug build without --no-cache. All checks passed! ~> ../../ruff/target/debug/ruff.exe check --select UP warning: Detected debug build without --no-cache. All checks passed! ~> ../../ruff/target/debug/ruff.exe check --select ALL # warnings and errors, but because of other errors, UP038 was deselected ```
This commit is contained in:
parent
9ca632c84f
commit
7a75702237
|
|
@ -1489,6 +1489,8 @@ fn deprecated_direct() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deprecated_multiple_direct() {
|
fn deprecated_multiple_direct() {
|
||||||
|
// Multiple deprecated rules selected by exact code should be included
|
||||||
|
// but a warning should be displayed
|
||||||
let mut cmd = RuffCheck::default()
|
let mut cmd = RuffCheck::default()
|
||||||
.args(["--select", "RUF920", "--select", "RUF921"])
|
.args(["--select", "RUF920", "--select", "RUF921"])
|
||||||
.build();
|
.build();
|
||||||
|
|
@ -1516,16 +1518,10 @@ fn deprecated_indirect() {
|
||||||
// since it is not a "direct" selection
|
// since it is not a "direct" selection
|
||||||
let mut cmd = RuffCheck::default().args(["--select", "RUF92"]).build();
|
let mut cmd = RuffCheck::default().args(["--select", "RUF92"]).build();
|
||||||
assert_cmd_snapshot!(cmd, @r"
|
assert_cmd_snapshot!(cmd, @r"
|
||||||
success: false
|
success: true
|
||||||
exit_code: 1
|
exit_code: 0
|
||||||
----- stdout -----
|
----- stdout -----
|
||||||
RUF920 Hey this is a deprecated test rule.
|
All checks passed!
|
||||||
--> -:1:1
|
|
||||||
|
|
||||||
RUF921 Hey this is another deprecated test rule.
|
|
||||||
--> -:1:1
|
|
||||||
|
|
||||||
Found 2 errors.
|
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
");
|
");
|
||||||
|
|
@ -2155,16 +2151,10 @@ extend-safe-fixes = ["RUF9"]
|
||||||
RUF903 Hey this is a stable test rule with a display only fix.
|
RUF903 Hey this is a stable test rule with a display only fix.
|
||||||
--> -:1:1
|
--> -:1:1
|
||||||
|
|
||||||
RUF920 Hey this is a deprecated test rule.
|
|
||||||
--> -:1:1
|
|
||||||
|
|
||||||
RUF921 Hey this is another deprecated test rule.
|
|
||||||
--> -:1:1
|
|
||||||
|
|
||||||
RUF950 Hey this is a test rule that was redirected from another.
|
RUF950 Hey this is a test rule that was redirected from another.
|
||||||
--> -:1:1
|
--> -:1:1
|
||||||
|
|
||||||
Found 7 errors.
|
Found 5 errors.
|
||||||
[*] 1 fixable with the `--fix` option (1 hidden fix can be enabled with the `--unsafe-fixes` option).
|
[*] 1 fixable with the `--fix` option (1 hidden fix can be enabled with the `--unsafe-fixes` option).
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
|
|
|
||||||
|
|
@ -214,10 +214,8 @@ impl RuleSelector {
|
||||||
RuleGroup::Preview => {
|
RuleGroup::Preview => {
|
||||||
preview_enabled && (self.is_exact() || !preview_require_explicit)
|
preview_enabled && (self.is_exact() || !preview_require_explicit)
|
||||||
}
|
}
|
||||||
// Deprecated rules are excluded in preview mode and with 'All' option unless explicitly selected
|
// Deprecated rules are excluded by default unless explicitly selected
|
||||||
RuleGroup::Deprecated => {
|
RuleGroup::Deprecated => !preview_enabled && self.is_exact(),
|
||||||
(!preview_enabled || self.is_exact()) && !matches!(self, RuleSelector::All)
|
|
||||||
}
|
|
||||||
// Removed rules are included if explicitly selected but will error downstream
|
// Removed rules are included if explicitly selected but will error downstream
|
||||||
RuleGroup::Removed => self.is_exact(),
|
RuleGroup::Removed => self.is_exact(),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ Ruff uses a custom versioning scheme that uses the **minor** version number for
|
||||||
- Stable rules are added to the default set
|
- Stable rules are added to the default set
|
||||||
- Stable rules are removed from the default set
|
- Stable rules are removed from the default set
|
||||||
- A safe fix for a rule is promoted to stable
|
- A safe fix for a rule is promoted to stable
|
||||||
|
- A rule is deprecated
|
||||||
- Formatter:
|
- Formatter:
|
||||||
- The stable style changed
|
- The stable style changed
|
||||||
- Language server:
|
- Language server:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue