mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-30 13:51:16 +00:00
[pycodestyle
] Make E731
fix unsafe instead of display-only for class assignments (#19700)
## Summary Fixes #19650 --------- Co-authored-by: Brent Westbrook <brentrwestbrook@gmail.com>
This commit is contained in:
parent
26d6c3831f
commit
2dc2f68b0f
2 changed files with 21 additions and 26 deletions
|
@ -10,7 +10,7 @@ use ruff_source_file::UniversalNewlines;
|
||||||
use ruff_text_size::{Ranged, TextRange};
|
use ruff_text_size::{Ranged, TextRange};
|
||||||
|
|
||||||
use crate::checkers::ast::Checker;
|
use crate::checkers::ast::Checker;
|
||||||
use crate::{Edit, Fix, FixAvailability, Violation};
|
use crate::{Applicability, Edit, Fix, FixAvailability, Violation};
|
||||||
|
|
||||||
/// ## What it does
|
/// ## What it does
|
||||||
/// Checks for lambda expressions which are assigned to a variable.
|
/// Checks for lambda expressions which are assigned to a variable.
|
||||||
|
@ -105,29 +105,24 @@ pub(crate) fn lambda_assignment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, if the assignment is in a class body, flag it, but use a display-only fix.
|
// If the lambda is shadowing a variable in the current scope,
|
||||||
// Rewriting safely would require making this a static method.
|
|
||||||
//
|
|
||||||
// Similarly, if the lambda is shadowing a variable in the current scope,
|
|
||||||
// rewriting it as a function declaration may break type-checking.
|
// rewriting it as a function declaration may break type-checking.
|
||||||
// See: https://github.com/astral-sh/ruff/issues/5421
|
// See: https://github.com/astral-sh/ruff/issues/5421
|
||||||
if checker.semantic().current_scope().kind.is_class()
|
let applicability = if checker
|
||||||
|| checker
|
|
||||||
.semantic()
|
.semantic()
|
||||||
.current_scope()
|
.current_scope()
|
||||||
.get_all(id)
|
.get_all(id)
|
||||||
.any(|binding_id| checker.semantic().binding(binding_id).kind.is_annotation())
|
.any(|binding_id| checker.semantic().binding(binding_id).kind.is_annotation())
|
||||||
{
|
{
|
||||||
diagnostic.set_fix(Fix::display_only_edit(Edit::range_replacement(
|
Applicability::DisplayOnly
|
||||||
indented,
|
|
||||||
stmt.range(),
|
|
||||||
)));
|
|
||||||
} else {
|
} else {
|
||||||
diagnostic.set_fix(Fix::unsafe_edit(Edit::range_replacement(
|
Applicability::Unsafe
|
||||||
indented,
|
};
|
||||||
stmt.range(),
|
|
||||||
)));
|
diagnostic.set_fix(Fix::applicable_edit(
|
||||||
}
|
Edit::range_replacement(indented, stmt.range()),
|
||||||
|
applicability,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ help: Rewrite `f` as a `def`
|
||||||
26 27 |
|
26 27 |
|
||||||
27 28 | def scope():
|
27 28 | def scope():
|
||||||
|
|
||||||
E731 Do not assign a `lambda` expression, use a `def`
|
E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
--> E731.py:57:5
|
--> E731.py:57:5
|
||||||
|
|
|
|
||||||
55 | class Scope:
|
55 | class Scope:
|
||||||
|
@ -115,7 +115,7 @@ E731 Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
help: Rewrite `f` as a `def`
|
help: Rewrite `f` as a `def`
|
||||||
|
|
||||||
ℹ Display-only fix
|
ℹ Unsafe fix
|
||||||
54 54 |
|
54 54 |
|
||||||
55 55 | class Scope:
|
55 55 | class Scope:
|
||||||
56 56 | # E731
|
56 56 | # E731
|
||||||
|
@ -318,7 +318,7 @@ help: Rewrite `f` as a `def`
|
||||||
137 138 |
|
137 138 |
|
||||||
138 139 | class TemperatureScales(Enum):
|
138 139 | class TemperatureScales(Enum):
|
||||||
|
|
||||||
E731 Do not assign a `lambda` expression, use a `def`
|
E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
--> E731.py:139:5
|
--> E731.py:139:5
|
||||||
|
|
|
|
||||||
138 | class TemperatureScales(Enum):
|
138 | class TemperatureScales(Enum):
|
||||||
|
@ -328,7 +328,7 @@ E731 Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
help: Rewrite `CELSIUS` as a `def`
|
help: Rewrite `CELSIUS` as a `def`
|
||||||
|
|
||||||
ℹ Display-only fix
|
ℹ Unsafe fix
|
||||||
136 136 |
|
136 136 |
|
||||||
137 137 |
|
137 137 |
|
||||||
138 138 | class TemperatureScales(Enum):
|
138 138 | class TemperatureScales(Enum):
|
||||||
|
@ -339,7 +339,7 @@ help: Rewrite `CELSIUS` as a `def`
|
||||||
141 142 |
|
141 142 |
|
||||||
142 143 |
|
142 143 |
|
||||||
|
|
||||||
E731 Do not assign a `lambda` expression, use a `def`
|
E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
--> E731.py:140:5
|
--> E731.py:140:5
|
||||||
|
|
|
|
||||||
138 | class TemperatureScales(Enum):
|
138 | class TemperatureScales(Enum):
|
||||||
|
@ -349,7 +349,7 @@ E731 Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
help: Rewrite `FAHRENHEIT` as a `def`
|
help: Rewrite `FAHRENHEIT` as a `def`
|
||||||
|
|
||||||
ℹ Display-only fix
|
ℹ Unsafe fix
|
||||||
137 137 |
|
137 137 |
|
||||||
138 138 | class TemperatureScales(Enum):
|
138 138 | class TemperatureScales(Enum):
|
||||||
139 139 | CELSIUS = (lambda deg_c: deg_c)
|
139 139 | CELSIUS = (lambda deg_c: deg_c)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue