Avoid non-augmented-assignment for reversed, non-commutative operators (#10909)

Closes https://github.com/astral-sh/ruff/issues/10900.
This commit is contained in:
Charlie Marsh
2024-04-12 10:04:57 -04:00
committed by GitHub
parent a013050c11
commit e9870fe468
3 changed files with 327 additions and 300 deletions

View File

@@ -18,6 +18,8 @@ index = index - 1
a_list = a_list + ["to concat"]
some_set = some_set | {"to concat"}
to_multiply = to_multiply * 5
to_multiply = 5 * to_multiply
to_multiply = to_multiply * to_multiply
to_divide = to_divide / 5
to_divide = to_divide // 5
to_cube = to_cube**3

View File

@@ -85,14 +85,11 @@ pub(crate) fn non_augmented_assignment(checker: &mut Checker, assign: &ast::Stmt
return;
};
let operator = AugmentedOperator::from(value.op);
// Match, e.g., `x = x + 1`.
if ComparableExpr::from(target) == ComparableExpr::from(&value.left) {
let mut diagnostic = Diagnostic::new(
NonAugmentedAssignment {
operator: AugmentedOperator::from(value.op),
},
assign.range(),
);
let mut diagnostic = Diagnostic::new(NonAugmentedAssignment { operator }, assign.range());
diagnostic.set_fix(Fix::unsafe_edit(augmented_assignment(
checker.generator(),
target,
@@ -104,14 +101,11 @@ pub(crate) fn non_augmented_assignment(checker: &mut Checker, assign: &ast::Stmt
return;
}
// Match, e.g., `x = 1 + x`.
if ComparableExpr::from(target) == ComparableExpr::from(&value.right) {
let mut diagnostic = Diagnostic::new(
NonAugmentedAssignment {
operator: AugmentedOperator::from(value.op),
},
assign.range(),
);
// If the operator is commutative, match, e.g., `x = 1 + x`.
if operator.is_commutative()
&& ComparableExpr::from(target) == ComparableExpr::from(&value.right)
{
let mut diagnostic = Diagnostic::new(NonAugmentedAssignment { operator }, assign.range());
diagnostic.set_fix(Fix::unsafe_edit(augmented_assignment(
checker.generator(),
target,
@@ -161,6 +155,16 @@ enum AugmentedOperator {
Sub,
}
impl AugmentedOperator {
/// Returns `true` if the operator is commutative.
fn is_commutative(self) -> bool {
matches!(
self,
Self::Add | Self::BitAnd | Self::BitOr | Self::BitXor | Self::Mult
)
}
}
impl From<Operator> for AugmentedOperator {
fn from(value: Operator) -> Self {
match value {

View File

@@ -61,7 +61,7 @@ non_augmented_assignment.py:18:1: PLR6104 [*] Use `+=` to perform an augmented a
18 |+a_list += ["to concat"]
19 19 | some_set = some_set | {"to concat"}
20 20 | to_multiply = to_multiply * 5
21 21 | to_divide = to_divide / 5
21 21 | to_multiply = 5 * to_multiply
non_augmented_assignment.py:19:1: PLR6104 [*] Use `|=` to perform an augmented assignment directly
|
@@ -70,7 +70,7 @@ non_augmented_assignment.py:19:1: PLR6104 [*] Use `|=` to perform an augmented a
19 | some_set = some_set | {"to concat"}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
20 | to_multiply = to_multiply * 5
21 | to_divide = to_divide / 5
21 | to_multiply = 5 * to_multiply
|
= help: Replace with augmented assignment
@@ -81,8 +81,8 @@ non_augmented_assignment.py:19:1: PLR6104 [*] Use `|=` to perform an augmented a
19 |-some_set = some_set | {"to concat"}
19 |+some_set |= {"to concat"}
20 20 | to_multiply = to_multiply * 5
21 21 | to_divide = to_divide / 5
22 22 | to_divide = to_divide // 5
21 21 | to_multiply = 5 * to_multiply
22 22 | to_multiply = to_multiply * to_multiply
non_augmented_assignment.py:20:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
@@ -90,8 +90,8 @@ non_augmented_assignment.py:20:1: PLR6104 [*] Use `*=` to perform an augmented a
19 | some_set = some_set | {"to concat"}
20 | to_multiply = to_multiply * 5
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
21 | to_divide = to_divide / 5
22 | to_divide = to_divide // 5
21 | to_multiply = 5 * to_multiply
22 | to_multiply = to_multiply * to_multiply
|
= help: Replace with augmented assignment
@@ -101,18 +101,18 @@ non_augmented_assignment.py:20:1: PLR6104 [*] Use `*=` to perform an augmented a
19 19 | some_set = some_set | {"to concat"}
20 |-to_multiply = to_multiply * 5
20 |+to_multiply *= 5
21 21 | to_divide = to_divide / 5
22 22 | to_divide = to_divide // 5
23 23 | to_cube = to_cube**3
21 21 | to_multiply = 5 * to_multiply
22 22 | to_multiply = to_multiply * to_multiply
23 23 | to_divide = to_divide / 5
non_augmented_assignment.py:21:1: PLR6104 [*] Use `/=` to perform an augmented assignment directly
non_augmented_assignment.py:21:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
19 | some_set = some_set | {"to concat"}
20 | to_multiply = to_multiply * 5
21 | to_divide = to_divide / 5
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
22 | to_divide = to_divide // 5
23 | to_cube = to_cube**3
21 | to_multiply = 5 * to_multiply
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
22 | to_multiply = to_multiply * to_multiply
23 | to_divide = to_divide / 5
|
= help: Replace with augmented assignment
@@ -120,399 +120,420 @@ non_augmented_assignment.py:21:1: PLR6104 [*] Use `/=` to perform an augmented a
18 18 | a_list = a_list + ["to concat"]
19 19 | some_set = some_set | {"to concat"}
20 20 | to_multiply = to_multiply * 5
21 |-to_divide = to_divide / 5
21 |+to_divide /= 5
22 22 | to_divide = to_divide // 5
23 23 | to_cube = to_cube**3
24 24 | to_cube = 3**to_cube
21 |-to_multiply = 5 * to_multiply
21 |+to_multiply *= 5
22 22 | to_multiply = to_multiply * to_multiply
23 23 | to_divide = to_divide / 5
24 24 | to_divide = to_divide // 5
non_augmented_assignment.py:22:1: PLR6104 [*] Use `//=` to perform an augmented assignment directly
non_augmented_assignment.py:22:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
20 | to_multiply = to_multiply * 5
21 | to_divide = to_divide / 5
22 | to_divide = to_divide // 5
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
23 | to_cube = to_cube**3
24 | to_cube = 3**to_cube
21 | to_multiply = 5 * to_multiply
22 | to_multiply = to_multiply * to_multiply
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
23 | to_divide = to_divide / 5
24 | to_divide = to_divide // 5
|
= help: Replace with augmented assignment
Unsafe fix
19 19 | some_set = some_set | {"to concat"}
20 20 | to_multiply = to_multiply * 5
21 21 | to_divide = to_divide / 5
22 |-to_divide = to_divide // 5
22 |+to_divide //= 5
23 23 | to_cube = to_cube**3
24 24 | to_cube = 3**to_cube
25 25 | to_cube = to_cube**to_cube
21 21 | to_multiply = 5 * to_multiply
22 |-to_multiply = to_multiply * to_multiply
22 |+to_multiply *= to_multiply
23 23 | to_divide = to_divide / 5
24 24 | to_divide = to_divide // 5
25 25 | to_cube = to_cube**3
non_augmented_assignment.py:23:1: PLR6104 [*] Use `**=` to perform an augmented assignment directly
non_augmented_assignment.py:23:1: PLR6104 [*] Use `/=` to perform an augmented assignment directly
|
21 | to_divide = to_divide / 5
22 | to_divide = to_divide // 5
23 | to_cube = to_cube**3
| ^^^^^^^^^^^^^^^^^^^^ PLR6104
24 | to_cube = 3**to_cube
25 | to_cube = to_cube**to_cube
21 | to_multiply = 5 * to_multiply
22 | to_multiply = to_multiply * to_multiply
23 | to_divide = to_divide / 5
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
24 | to_divide = to_divide // 5
25 | to_cube = to_cube**3
|
= help: Replace with augmented assignment
Unsafe fix
20 20 | to_multiply = to_multiply * 5
21 21 | to_divide = to_divide / 5
22 22 | to_divide = to_divide // 5
23 |-to_cube = to_cube**3
23 |+to_cube **= 3
24 24 | to_cube = 3**to_cube
25 25 | to_cube = to_cube**to_cube
26 26 | timeDiffSeconds = timeDiffSeconds % 60
21 21 | to_multiply = 5 * to_multiply
22 22 | to_multiply = to_multiply * to_multiply
23 |-to_divide = to_divide / 5
23 |+to_divide /= 5
24 24 | to_divide = to_divide // 5
25 25 | to_cube = to_cube**3
26 26 | to_cube = 3**to_cube
non_augmented_assignment.py:24:1: PLR6104 [*] Use `**=` to perform an augmented assignment directly
non_augmented_assignment.py:24:1: PLR6104 [*] Use `//=` to perform an augmented assignment directly
|
22 | to_divide = to_divide // 5
23 | to_cube = to_cube**3
24 | to_cube = 3**to_cube
| ^^^^^^^^^^^^^^^^^^^^ PLR6104
25 | to_cube = to_cube**to_cube
26 | timeDiffSeconds = timeDiffSeconds % 60
22 | to_multiply = to_multiply * to_multiply
23 | to_divide = to_divide / 5
24 | to_divide = to_divide // 5
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
25 | to_cube = to_cube**3
26 | to_cube = 3**to_cube
|
= help: Replace with augmented assignment
Unsafe fix
21 21 | to_divide = to_divide / 5
22 22 | to_divide = to_divide // 5
23 23 | to_cube = to_cube**3
24 |-to_cube = 3**to_cube
24 |+to_cube **= 3
25 25 | to_cube = to_cube**to_cube
26 26 | timeDiffSeconds = timeDiffSeconds % 60
27 27 | flags = flags & 0x1
21 21 | to_multiply = 5 * to_multiply
22 22 | to_multiply = to_multiply * to_multiply
23 23 | to_divide = to_divide / 5
24 |-to_divide = to_divide // 5
24 |+to_divide //= 5
25 25 | to_cube = to_cube**3
26 26 | to_cube = 3**to_cube
27 27 | to_cube = to_cube**to_cube
non_augmented_assignment.py:25:1: PLR6104 [*] Use `**=` to perform an augmented assignment directly
|
23 | to_cube = to_cube**3
24 | to_cube = 3**to_cube
25 | to_cube = to_cube**to_cube
23 | to_divide = to_divide / 5
24 | to_divide = to_divide // 5
25 | to_cube = to_cube**3
| ^^^^^^^^^^^^^^^^^^^^ PLR6104
26 | to_cube = 3**to_cube
27 | to_cube = to_cube**to_cube
|
= help: Replace with augmented assignment
Unsafe fix
22 22 | to_multiply = to_multiply * to_multiply
23 23 | to_divide = to_divide / 5
24 24 | to_divide = to_divide // 5
25 |-to_cube = to_cube**3
25 |+to_cube **= 3
26 26 | to_cube = 3**to_cube
27 27 | to_cube = to_cube**to_cube
28 28 | timeDiffSeconds = timeDiffSeconds % 60
non_augmented_assignment.py:27:1: PLR6104 [*] Use `**=` to perform an augmented assignment directly
|
25 | to_cube = to_cube**3
26 | to_cube = 3**to_cube
27 | to_cube = to_cube**to_cube
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
26 | timeDiffSeconds = timeDiffSeconds % 60
27 | flags = flags & 0x1
28 | timeDiffSeconds = timeDiffSeconds % 60
29 | flags = flags & 0x1
|
= help: Replace with augmented assignment
Unsafe fix
22 22 | to_divide = to_divide // 5
23 23 | to_cube = to_cube**3
24 24 | to_cube = 3**to_cube
25 |-to_cube = to_cube**to_cube
25 |+to_cube **= to_cube
26 26 | timeDiffSeconds = timeDiffSeconds % 60
27 27 | flags = flags & 0x1
28 28 | flags = flags | 0x1
24 24 | to_divide = to_divide // 5
25 25 | to_cube = to_cube**3
26 26 | to_cube = 3**to_cube
27 |-to_cube = to_cube**to_cube
27 |+to_cube **= to_cube
28 28 | timeDiffSeconds = timeDiffSeconds % 60
29 29 | flags = flags & 0x1
30 30 | flags = flags | 0x1
non_augmented_assignment.py:26:1: PLR6104 [*] Use `%=` to perform an augmented assignment directly
non_augmented_assignment.py:28:1: PLR6104 [*] Use `%=` to perform an augmented assignment directly
|
24 | to_cube = 3**to_cube
25 | to_cube = to_cube**to_cube
26 | timeDiffSeconds = timeDiffSeconds % 60
26 | to_cube = 3**to_cube
27 | to_cube = to_cube**to_cube
28 | timeDiffSeconds = timeDiffSeconds % 60
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
27 | flags = flags & 0x1
28 | flags = flags | 0x1
29 | flags = flags & 0x1
30 | flags = flags | 0x1
|
= help: Replace with augmented assignment
Unsafe fix
23 23 | to_cube = to_cube**3
24 24 | to_cube = 3**to_cube
25 25 | to_cube = to_cube**to_cube
26 |-timeDiffSeconds = timeDiffSeconds % 60
26 |+timeDiffSeconds %= 60
27 27 | flags = flags & 0x1
28 28 | flags = flags | 0x1
29 29 | flags = flags ^ 0x1
25 25 | to_cube = to_cube**3
26 26 | to_cube = 3**to_cube
27 27 | to_cube = to_cube**to_cube
28 |-timeDiffSeconds = timeDiffSeconds % 60
28 |+timeDiffSeconds %= 60
29 29 | flags = flags & 0x1
30 30 | flags = flags | 0x1
31 31 | flags = flags ^ 0x1
non_augmented_assignment.py:27:1: PLR6104 [*] Use `&=` to perform an augmented assignment directly
non_augmented_assignment.py:29:1: PLR6104 [*] Use `&=` to perform an augmented assignment directly
|
25 | to_cube = to_cube**to_cube
26 | timeDiffSeconds = timeDiffSeconds % 60
27 | flags = flags & 0x1
27 | to_cube = to_cube**to_cube
28 | timeDiffSeconds = timeDiffSeconds % 60
29 | flags = flags & 0x1
| ^^^^^^^^^^^^^^^^^^^ PLR6104
28 | flags = flags | 0x1
29 | flags = flags ^ 0x1
30 | flags = flags | 0x1
31 | flags = flags ^ 0x1
|
= help: Replace with augmented assignment
Unsafe fix
24 24 | to_cube = 3**to_cube
25 25 | to_cube = to_cube**to_cube
26 26 | timeDiffSeconds = timeDiffSeconds % 60
27 |-flags = flags & 0x1
27 |+flags &= 1
28 28 | flags = flags | 0x1
29 29 | flags = flags ^ 0x1
30 30 | flags = flags << 1
26 26 | to_cube = 3**to_cube
27 27 | to_cube = to_cube**to_cube
28 28 | timeDiffSeconds = timeDiffSeconds % 60
29 |-flags = flags & 0x1
29 |+flags &= 1
30 30 | flags = flags | 0x1
31 31 | flags = flags ^ 0x1
32 32 | flags = flags << 1
non_augmented_assignment.py:28:1: PLR6104 [*] Use `|=` to perform an augmented assignment directly
non_augmented_assignment.py:30:1: PLR6104 [*] Use `|=` to perform an augmented assignment directly
|
26 | timeDiffSeconds = timeDiffSeconds % 60
27 | flags = flags & 0x1
28 | flags = flags | 0x1
28 | timeDiffSeconds = timeDiffSeconds % 60
29 | flags = flags & 0x1
30 | flags = flags | 0x1
| ^^^^^^^^^^^^^^^^^^^ PLR6104
29 | flags = flags ^ 0x1
30 | flags = flags << 1
31 | flags = flags ^ 0x1
32 | flags = flags << 1
|
= help: Replace with augmented assignment
Unsafe fix
25 25 | to_cube = to_cube**to_cube
26 26 | timeDiffSeconds = timeDiffSeconds % 60
27 27 | flags = flags & 0x1
28 |-flags = flags | 0x1
28 |+flags |= 1
29 29 | flags = flags ^ 0x1
30 30 | flags = flags << 1
31 31 | flags = flags >> 1
27 27 | to_cube = to_cube**to_cube
28 28 | timeDiffSeconds = timeDiffSeconds % 60
29 29 | flags = flags & 0x1
30 |-flags = flags | 0x1
30 |+flags |= 1
31 31 | flags = flags ^ 0x1
32 32 | flags = flags << 1
33 33 | flags = flags >> 1
non_augmented_assignment.py:29:1: PLR6104 [*] Use `^=` to perform an augmented assignment directly
non_augmented_assignment.py:31:1: PLR6104 [*] Use `^=` to perform an augmented assignment directly
|
27 | flags = flags & 0x1
28 | flags = flags | 0x1
29 | flags = flags ^ 0x1
29 | flags = flags & 0x1
30 | flags = flags | 0x1
31 | flags = flags ^ 0x1
| ^^^^^^^^^^^^^^^^^^^ PLR6104
30 | flags = flags << 1
31 | flags = flags >> 1
32 | flags = flags << 1
33 | flags = flags >> 1
|
= help: Replace with augmented assignment
Unsafe fix
26 26 | timeDiffSeconds = timeDiffSeconds % 60
27 27 | flags = flags & 0x1
28 28 | flags = flags | 0x1
29 |-flags = flags ^ 0x1
29 |+flags ^= 1
30 30 | flags = flags << 1
31 31 | flags = flags >> 1
32 32 | mat1 = mat1 @ mat2
28 28 | timeDiffSeconds = timeDiffSeconds % 60
29 29 | flags = flags & 0x1
30 30 | flags = flags | 0x1
31 |-flags = flags ^ 0x1
31 |+flags ^= 1
32 32 | flags = flags << 1
33 33 | flags = flags >> 1
34 34 | mat1 = mat1 @ mat2
non_augmented_assignment.py:30:1: PLR6104 [*] Use `<<=` to perform an augmented assignment directly
non_augmented_assignment.py:32:1: PLR6104 [*] Use `<<=` to perform an augmented assignment directly
|
28 | flags = flags | 0x1
29 | flags = flags ^ 0x1
30 | flags = flags << 1
30 | flags = flags | 0x1
31 | flags = flags ^ 0x1
32 | flags = flags << 1
| ^^^^^^^^^^^^^^^^^^ PLR6104
31 | flags = flags >> 1
32 | mat1 = mat1 @ mat2
33 | flags = flags >> 1
34 | mat1 = mat1 @ mat2
|
= help: Replace with augmented assignment
Unsafe fix
27 27 | flags = flags & 0x1
28 28 | flags = flags | 0x1
29 29 | flags = flags ^ 0x1
30 |-flags = flags << 1
30 |+flags <<= 1
31 31 | flags = flags >> 1
32 32 | mat1 = mat1 @ mat2
33 33 | a_list[1] = a_list[1] + 1
29 29 | flags = flags & 0x1
30 30 | flags = flags | 0x1
31 31 | flags = flags ^ 0x1
32 |-flags = flags << 1
32 |+flags <<= 1
33 33 | flags = flags >> 1
34 34 | mat1 = mat1 @ mat2
35 35 | a_list[1] = a_list[1] + 1
non_augmented_assignment.py:31:1: PLR6104 [*] Use `>>=` to perform an augmented assignment directly
non_augmented_assignment.py:33:1: PLR6104 [*] Use `>>=` to perform an augmented assignment directly
|
29 | flags = flags ^ 0x1
30 | flags = flags << 1
31 | flags = flags >> 1
31 | flags = flags ^ 0x1
32 | flags = flags << 1
33 | flags = flags >> 1
| ^^^^^^^^^^^^^^^^^^ PLR6104
32 | mat1 = mat1 @ mat2
33 | a_list[1] = a_list[1] + 1
34 | mat1 = mat1 @ mat2
35 | a_list[1] = a_list[1] + 1
|
= help: Replace with augmented assignment
Unsafe fix
28 28 | flags = flags | 0x1
29 29 | flags = flags ^ 0x1
30 30 | flags = flags << 1
31 |-flags = flags >> 1
31 |+flags >>= 1
32 32 | mat1 = mat1 @ mat2
33 33 | a_list[1] = a_list[1] + 1
34 34 |
30 30 | flags = flags | 0x1
31 31 | flags = flags ^ 0x1
32 32 | flags = flags << 1
33 |-flags = flags >> 1
33 |+flags >>= 1
34 34 | mat1 = mat1 @ mat2
35 35 | a_list[1] = a_list[1] + 1
36 36 |
non_augmented_assignment.py:32:1: PLR6104 [*] Use `@=` to perform an augmented assignment directly
non_augmented_assignment.py:34:1: PLR6104 [*] Use `@=` to perform an augmented assignment directly
|
30 | flags = flags << 1
31 | flags = flags >> 1
32 | mat1 = mat1 @ mat2
32 | flags = flags << 1
33 | flags = flags >> 1
34 | mat1 = mat1 @ mat2
| ^^^^^^^^^^^^^^^^^^ PLR6104
33 | a_list[1] = a_list[1] + 1
35 | a_list[1] = a_list[1] + 1
|
= help: Replace with augmented assignment
Unsafe fix
29 29 | flags = flags ^ 0x1
30 30 | flags = flags << 1
31 31 | flags = flags >> 1
32 |-mat1 = mat1 @ mat2
32 |+mat1 @= mat2
33 33 | a_list[1] = a_list[1] + 1
34 34 |
35 35 | a_list[0:2] = a_list[0:2] * 3
31 31 | flags = flags ^ 0x1
32 32 | flags = flags << 1
33 33 | flags = flags >> 1
34 |-mat1 = mat1 @ mat2
34 |+mat1 @= mat2
35 35 | a_list[1] = a_list[1] + 1
36 36 |
37 37 | a_list[0:2] = a_list[0:2] * 3
non_augmented_assignment.py:33:1: PLR6104 [*] Use `+=` to perform an augmented assignment directly
non_augmented_assignment.py:35:1: PLR6104 [*] Use `+=` to perform an augmented assignment directly
|
31 | flags = flags >> 1
32 | mat1 = mat1 @ mat2
33 | a_list[1] = a_list[1] + 1
33 | flags = flags >> 1
34 | mat1 = mat1 @ mat2
35 | a_list[1] = a_list[1] + 1
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
34 |
35 | a_list[0:2] = a_list[0:2] * 3
36 |
37 | a_list[0:2] = a_list[0:2] * 3
|
= help: Replace with augmented assignment
Unsafe fix
30 30 | flags = flags << 1
31 31 | flags = flags >> 1
32 32 | mat1 = mat1 @ mat2
33 |-a_list[1] = a_list[1] + 1
33 |+a_list[1] += 1
34 34 |
35 35 | a_list[0:2] = a_list[0:2] * 3
36 36 | a_list[:2] = a_list[:2] * 3
non_augmented_assignment.py:35:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
33 | a_list[1] = a_list[1] + 1
34 |
35 | a_list[0:2] = a_list[0:2] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
36 | a_list[:2] = a_list[:2] * 3
37 | a_list[1:] = a_list[1:] * 3
|
= help: Replace with augmented assignment
Unsafe fix
32 32 | mat1 = mat1 @ mat2
33 33 | a_list[1] = a_list[1] + 1
34 34 |
35 |-a_list[0:2] = a_list[0:2] * 3
35 |+a_list[0:2] *= 3
36 36 | a_list[:2] = a_list[:2] * 3
37 37 | a_list[1:] = a_list[1:] * 3
38 38 | a_list[:] = a_list[:] * 3
non_augmented_assignment.py:36:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
35 | a_list[0:2] = a_list[0:2] * 3
36 | a_list[:2] = a_list[:2] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
37 | a_list[1:] = a_list[1:] * 3
38 | a_list[:] = a_list[:] * 3
|
= help: Replace with augmented assignment
Unsafe fix
33 33 | a_list[1] = a_list[1] + 1
34 34 |
35 35 | a_list[0:2] = a_list[0:2] * 3
36 |-a_list[:2] = a_list[:2] * 3
36 |+a_list[:2] *= 3
37 37 | a_list[1:] = a_list[1:] * 3
38 38 | a_list[:] = a_list[:] * 3
39 39 |
32 32 | flags = flags << 1
33 33 | flags = flags >> 1
34 34 | mat1 = mat1 @ mat2
35 |-a_list[1] = a_list[1] + 1
35 |+a_list[1] += 1
36 36 |
37 37 | a_list[0:2] = a_list[0:2] * 3
38 38 | a_list[:2] = a_list[:2] * 3
non_augmented_assignment.py:37:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
35 | a_list[0:2] = a_list[0:2] * 3
36 | a_list[:2] = a_list[:2] * 3
37 | a_list[1:] = a_list[1:] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
38 | a_list[:] = a_list[:] * 3
35 | a_list[1] = a_list[1] + 1
36 |
37 | a_list[0:2] = a_list[0:2] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
38 | a_list[:2] = a_list[:2] * 3
39 | a_list[1:] = a_list[1:] * 3
|
= help: Replace with augmented assignment
Unsafe fix
34 34 |
35 35 | a_list[0:2] = a_list[0:2] * 3
36 36 | a_list[:2] = a_list[:2] * 3
37 |-a_list[1:] = a_list[1:] * 3
37 |+a_list[1:] *= 3
38 38 | a_list[:] = a_list[:] * 3
39 39 |
40 40 | index = index * (index + 10)
34 34 | mat1 = mat1 @ mat2
35 35 | a_list[1] = a_list[1] + 1
36 36 |
37 |-a_list[0:2] = a_list[0:2] * 3
37 |+a_list[0:2] *= 3
38 38 | a_list[:2] = a_list[:2] * 3
39 39 | a_list[1:] = a_list[1:] * 3
40 40 | a_list[:] = a_list[:] * 3
non_augmented_assignment.py:38:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
36 | a_list[:2] = a_list[:2] * 3
37 | a_list[1:] = a_list[1:] * 3
38 | a_list[:] = a_list[:] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
39 |
40 | index = index * (index + 10)
37 | a_list[0:2] = a_list[0:2] * 3
38 | a_list[:2] = a_list[:2] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
39 | a_list[1:] = a_list[1:] * 3
40 | a_list[:] = a_list[:] * 3
|
= help: Replace with augmented assignment
Unsafe fix
35 35 | a_list[0:2] = a_list[0:2] * 3
36 36 | a_list[:2] = a_list[:2] * 3
37 37 | a_list[1:] = a_list[1:] * 3
38 |-a_list[:] = a_list[:] * 3
38 |+a_list[:] *= 3
39 39 |
40 40 | index = index * (index + 10)
35 35 | a_list[1] = a_list[1] + 1
36 36 |
37 37 | a_list[0:2] = a_list[0:2] * 3
38 |-a_list[:2] = a_list[:2] * 3
38 |+a_list[:2] *= 3
39 39 | a_list[1:] = a_list[1:] * 3
40 40 | a_list[:] = a_list[:] * 3
41 41 |
non_augmented_assignment.py:39:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
37 | a_list[0:2] = a_list[0:2] * 3
38 | a_list[:2] = a_list[:2] * 3
39 | a_list[1:] = a_list[1:] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
40 | a_list[:] = a_list[:] * 3
|
= help: Replace with augmented assignment
Unsafe fix
36 36 |
37 37 | a_list[0:2] = a_list[0:2] * 3
38 38 | a_list[:2] = a_list[:2] * 3
39 |-a_list[1:] = a_list[1:] * 3
39 |+a_list[1:] *= 3
40 40 | a_list[:] = a_list[:] * 3
41 41 |
42 42 | index = index * (index + 10)
non_augmented_assignment.py:40:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
38 | a_list[:] = a_list[:] * 3
39 |
40 | index = index * (index + 10)
38 | a_list[:2] = a_list[:2] * 3
39 | a_list[1:] = a_list[1:] * 3
40 | a_list[:] = a_list[:] * 3
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
41 |
42 | index = index * (index + 10)
|
= help: Replace with augmented assignment
Unsafe fix
37 37 | a_list[0:2] = a_list[0:2] * 3
38 38 | a_list[:2] = a_list[:2] * 3
39 39 | a_list[1:] = a_list[1:] * 3
40 |-a_list[:] = a_list[:] * 3
40 |+a_list[:] *= 3
41 41 |
42 42 | index = index * (index + 10)
43 43 |
non_augmented_assignment.py:42:1: PLR6104 [*] Use `*=` to perform an augmented assignment directly
|
40 | a_list[:] = a_list[:] * 3
41 |
42 | index = index * (index + 10)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PLR6104
|
= help: Replace with augmented assignment
Unsafe fix
37 37 | a_list[1:] = a_list[1:] * 3
38 38 | a_list[:] = a_list[:] * 3
39 39 |
40 |-index = index * (index + 10)
40 |+index *= index + 10
39 39 | a_list[1:] = a_list[1:] * 3
40 40 | a_list[:] = a_list[:] * 3
41 41 |
42 42 |
43 43 | class T:
42 |-index = index * (index + 10)
42 |+index *= index + 10
43 43 |
44 44 |
45 45 | class T:
non_augmented_assignment.py:45:9: PLR6104 [*] Use `+=` to perform an augmented assignment directly
non_augmented_assignment.py:47:9: PLR6104 [*] Use `+=` to perform an augmented assignment directly
|
43 | class T:
44 | def t(self):
45 | self.a = self.a + 1
45 | class T:
46 | def t(self):
47 | self.a = self.a + 1
| ^^^^^^^^^^^^^^^^^^^ PLR6104
|
= help: Replace with augmented assignment
Unsafe fix
42 42 |
43 43 | class T:
44 44 | def t(self):
45 |- self.a = self.a + 1
45 |+ self.a += 1
46 46 |
47 47 |
48 48 | obj = T()
44 44 |
45 45 | class T:
46 46 | def t(self):
47 |- self.a = self.a + 1
47 |+ self.a += 1
48 48 |
49 49 |
50 50 | obj = T()
non_augmented_assignment.py:49:1: PLR6104 [*] Use `+=` to perform an augmented assignment directly
non_augmented_assignment.py:51:1: PLR6104 [*] Use `+=` to perform an augmented assignment directly
|
48 | obj = T()
49 | obj.a = obj.a + 1
50 | obj = T()
51 | obj.a = obj.a + 1
| ^^^^^^^^^^^^^^^^^ PLR6104
50 |
51 | # OK
52 |
53 | # OK
|
= help: Replace with augmented assignment
Unsafe fix
46 46 |
47 47 |
48 48 | obj = T()
49 |-obj.a = obj.a + 1
49 |+obj.a += 1
50 50 |
51 51 | # OK
52 52 | a_list[0] = a_list[:] * 3
48 48 |
49 49 |
50 50 | obj = T()
51 |-obj.a = obj.a + 1
51 |+obj.a += 1
52 52 |
53 53 | # OK
54 54 | a_list[0] = a_list[:] * 3