Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[flake8-simplify] Stabilize implicit-else simplifications in needless-bool (SIM103) #12048

Merged
merged 1 commit into from
Jun 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Stabilize implicit-else simplifications in SIM103
  • Loading branch information
charliermarsh committed Jun 26, 2024
commit 75266a541bafb54e82e4291589a095563634d359
1 change: 0 additions & 1 deletion crates/ruff_linter/src/rules/flake8_simplify/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ mod tests {
Ok(())
}

#[test_case(Rule::NeedlessBool, Path::new("SIM103.py"))]
#[test_case(Rule::YodaConditions, Path::new("SIM300.py"))]
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
let snapshot = format!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ use crate::fix::snippet::SourceCodeSnippet;
/// a falsey condition can be replaced with boolean casts.
///
/// ## Example
/// Given:
/// ```python
/// if x > 0:
/// return True
Expand All @@ -28,17 +29,20 @@ use crate::fix::snippet::SourceCodeSnippet;
/// return x > 0
/// ```
///
/// In [preview], this rule will also flag implicit `else` cases, as in:
/// Or, given:
/// ```python
/// if x > 0:
/// return True
/// return False
/// ```
///
/// Use instead:
/// ```python
/// return x > 0
/// ```
///
/// ## References
/// - [Python documentation: Truth Value Testing](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)
///
/// [preview]: https://docs.astral.sh/ruff/preview/
#[violation]
pub struct NeedlessBool {
condition: Option<SourceCodeSnippet>,
Expand Down Expand Up @@ -128,7 +132,7 @@ pub(crate) fn needless_bool(checker: &mut Checker, stmt: &Stmt) {
// return True
// return False
// ```
[] if checker.settings.preview.is_enabled() => {
[] => {
// Fetching the next sibling is expensive, so do some validation early.
if is_one_line_return_bool(if_body).is_none() {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,94 @@ SIM103.py:91:5: SIM103 [*] Return the condition `not (keys is not None and notic
95 92 |
96 93 |
97 94 | ###

SIM103.py:104:5: SIM103 [*] Return the condition `bool(a)` directly
|
102 | def f():
103 | # SIM103
104 | if a:
| _____^
105 | | return True
106 | | return False
| |________________^ SIM103
|
= help: Replace with `return bool(a)`

ℹ Unsafe fix
101 101 |
102 102 | def f():
103 103 | # SIM103
104 |- if a:
105 |- return True
106 |- return False
104 |+ return bool(a)
107 105 |
108 106 |
109 107 | def f():

SIM103.py:111:5: SIM103 [*] Return the condition `not a` directly
|
109 | def f():
110 | # SIM103
111 | if a:
| _____^
112 | | return False
113 | | return True
| |_______________^ SIM103
|
= help: Replace with `return not a`

ℹ Unsafe fix
108 108 |
109 109 | def f():
110 110 | # SIM103
111 |- if a:
112 |- return False
113 |- return True
111 |+ return not a
114 112 |
115 113 |
116 114 | def f():

SIM103.py:117:5: SIM103 [*] Return the condition `10 < a` directly
|
116 | def f():
117 | if not 10 < a:
| _____^
118 | | return False
119 | | return True
| |_______________^ SIM103
|
= help: Replace with `return 10 < a`

ℹ Unsafe fix
114 114 |
115 115 |
116 116 | def f():
117 |- if not 10 < a:
118 |- return False
119 |- return True
117 |+ return 10 < a
120 118 |
121 119 |
122 120 | def f():

SIM103.py:123:5: SIM103 [*] Return the condition `not 10 < a` directly
|
122 | def f():
123 | if 10 < a:
| _____^
124 | | return False
125 | | return True
| |_______________^ SIM103
|
= help: Replace with `return not 10 < a`

ℹ Unsafe fix
120 120 |
121 121 |
122 122 | def f():
123 |- if 10 < a:
124 |- return False
125 |- return True
123 |+ return not 10 < a
Loading
Loading