diff --git a/crates/ruff_linter/resources/test/fixtures/flake8_bugbear/B028.py b/crates/ruff_linter/resources/test/fixtures/flake8_bugbear/B028.py index 45911df394..d8f79372e2 100644 --- a/crates/ruff_linter/resources/test/fixtures/flake8_bugbear/B028.py +++ b/crates/ruff_linter/resources/test/fixtures/flake8_bugbear/B028.py @@ -5,13 +5,16 @@ Should emit: B028 - on lines 8 and 9 """ -warnings.warn(DeprecationWarning("test")) -warnings.warn(DeprecationWarning("test"), source=None) -warnings.warn(DeprecationWarning("test"), source=None, stacklevel=2) -warnings.warn(DeprecationWarning("test"), stacklevel=1) +warnings.warn("test", DeprecationWarning) +warnings.warn("test", DeprecationWarning, source=None) +warnings.warn("test", DeprecationWarning, source=None, stacklevel=2) +warnings.warn("test", DeprecationWarning, stacklevel=1) +warnings.warn("test", DeprecationWarning, 1) +warnings.warn("test", category=DeprecationWarning, stacklevel=1) warnings.warn( - DeprecationWarning("test"), + "test", + DeprecationWarning, # some comments here source = None # no trailing comma ) diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs b/crates/ruff_linter/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs index d0f181770e..50fdbf1f62 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs +++ b/crates/ruff_linter/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs @@ -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()); diff --git a/crates/ruff_linter/src/rules/flake8_bugbear/snapshots/ruff_linter__rules__flake8_bugbear__tests__B028_B028.py.snap b/crates/ruff_linter/src/rules/flake8_bugbear/snapshots/ruff_linter__rules__flake8_bugbear__tests__B028_B028.py.snap index e9752d9da3..2330dbf281 100644 --- a/crates/ruff_linter/src/rules/flake8_bugbear/snapshots/ruff_linter__rules__flake8_bugbear__tests__B028_B028.py.snap +++ b/crates/ruff_linter/src/rules/flake8_bugbear/snapshots/ruff_linter__rules__flake8_bugbear__tests__B028_B028.py.snap @@ -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 | )