[flake8-bugbear] Fix B028 to allow stacklevel to be explicitly assigned as a positional argument (#14868)

This commit is contained in:
Harutaka Kawamura 2024-12-09 22:15:43 +09:00 committed by GitHub
parent 3865fb6641
commit 172143ae77
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 41 additions and 37 deletions

View file

@ -60,7 +60,7 @@ pub(crate) fn no_explicit_stacklevel(checker: &mut Checker, call: &ast::ExprCall
return;
}
if call.arguments.find_keyword("stacklevel").is_some() {
if call.arguments.find_argument("stacklevel", 2).is_some() {
return;
}
let mut diagnostic = Diagnostic::new(NoExplicitStacklevel, call.func.range());

View file

@ -1,14 +1,15 @@
---
source: crates/ruff_linter/src/rules/flake8_bugbear/mod.rs
snapshot_kind: text
---
B028.py:8:1: B028 [*] No explicit `stacklevel` keyword argument found
|
6 | """
7 |
8 | warnings.warn(DeprecationWarning("test"))
8 | warnings.warn("test", DeprecationWarning)
| ^^^^^^^^^^^^^ B028
9 | warnings.warn(DeprecationWarning("test"), source=None)
10 | warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2)
9 | warnings.warn("test", DeprecationWarning, source=None)
10 | warnings.warn("test", DeprecationWarning, source=None, stacklevel=2)
|
= help: Set `stacklevel=2`
@ -16,48 +17,48 @@ B028.py:8:1: B028 [*] No explicit `stacklevel` keyword argument found
5 5 | B028 - on lines 8 and 9
6 6 | """
7 7 |
8 |-warnings.warn(DeprecationWarning("test"))
8 |+warnings.warn(DeprecationWarning("test"), stacklevel=2)
9 9 | warnings.warn(DeprecationWarning("test"), source=None)
10 10 | warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2)
11 11 | warnings.warn(DeprecationWarning("test"), stacklevel=1)
8 |-warnings.warn("test", DeprecationWarning)
8 |+warnings.warn("test", DeprecationWarning, stacklevel=2)
9 9 | warnings.warn("test", DeprecationWarning, source=None)
10 10 | warnings.warn("test", DeprecationWarning, source=None, stacklevel=2)
11 11 | warnings.warn("test", DeprecationWarning, stacklevel=1)
B028.py:9:1: B028 [*] No explicit `stacklevel` keyword argument found
|
8 | warnings.warn(DeprecationWarning("test"))
9 | warnings.warn(DeprecationWarning("test"), source=None)
8 | warnings.warn("test", DeprecationWarning)
9 | warnings.warn("test", DeprecationWarning, source=None)
| ^^^^^^^^^^^^^ B028
10 | warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2)
11 | warnings.warn(DeprecationWarning("test"), stacklevel=1)
10 | warnings.warn("test", DeprecationWarning, source=None, stacklevel=2)
11 | warnings.warn("test", DeprecationWarning, stacklevel=1)
|
= help: Set `stacklevel=2`
Unsafe fix
6 6 | """
7 7 |
8 8 | warnings.warn(DeprecationWarning("test"))
9 |-warnings.warn(DeprecationWarning("test"), source=None)
10 9 | warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2)
10 |+warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2)
11 11 | warnings.warn(DeprecationWarning("test"), stacklevel=1)
12 12 |
13 13 | warnings.warn(
8 8 | warnings.warn("test", DeprecationWarning)
9 |-warnings.warn("test", DeprecationWarning, source=None)
10 9 | warnings.warn("test", DeprecationWarning, source=None, stacklevel=2)
10 |+warnings.warn("test", DeprecationWarning, source=None, stacklevel=2)
11 11 | warnings.warn("test", DeprecationWarning, stacklevel=1)
12 12 | warnings.warn("test", DeprecationWarning, 1)
13 13 | warnings.warn("test", category=DeprecationWarning, stacklevel=1)
B028.py:13:1: B028 [*] No explicit `stacklevel` keyword argument found
B028.py:15:1: B028 [*] No explicit `stacklevel` keyword argument found
|
11 | warnings.warn(DeprecationWarning("test"), stacklevel=1)
12 |
13 | warnings.warn(
13 | warnings.warn("test", category=DeprecationWarning, stacklevel=1)
14 |
15 | warnings.warn(
| ^^^^^^^^^^^^^ B028
14 | DeprecationWarning("test"),
15 | # some comments here
16 | "test",
17 | DeprecationWarning,
|
= help: Set `stacklevel=2`
Unsafe fix
13 13 | warnings.warn(
14 14 | DeprecationWarning("test"),
15 15 | # some comments here
16 |- source = None # no trailing comma
16 |+ source = None, stacklevel=2 # no trailing comma
17 17 | )
16 16 | "test",
17 17 | DeprecationWarning,
18 18 | # some comments here
19 |- source = None # no trailing comma
19 |+ source = None, stacklevel=2 # no trailing comma
20 20 | )