mirror of https://github.com/astral-sh/ruff
[`pylint`] Detect subclasses of builtin exceptions (`PLW0133`) (#21382)
<!-- Thank you for contributing to Ruff/ty! To help us out with reviewing, please consider the following: - Does this pull request include a summary of the change? (See below.) - Does this pull request include a descriptive title? (Please prefix with `[ty]` for ty pull requests.) - Does this pull request include references to any relevant issues? --> ## Summary <!-- What's the purpose of the change? What does it do, and why? --> Closes #17347 Goal is to detect the useless exception statement not just for builtin exceptions but also custom (user defined) ones. ## Test Plan <!-- How was it tested? --> I added test cases in the rule fixture and updated the insta snapshot. Note that I first moved up a test case case which was at the bottom to the correct "violation category". I wasn't sure if I should create new test cases or just insert inside those tests. I know that ideally each test case should test only one thing, but here, duplicating twice 12 test cases seemed very verbose, and actually less maintainable in the future. The drawback is that the diff in the snapshot is hard to review, sorry. But you can see that the snapshot gives 38 diagnostics, which is what we expect. Alternatively, I also created this file for manual testing. ```py # tmp/test_error.py class MyException(Exception): ... class MyBaseException(BaseException): ... class MyValueError(ValueError): ... class MyExceptionCustom(Exception): ... class MyBaseExceptionCustom(BaseException): ... class MyValueErrorCustom(ValueError): ... class MyDeprecationWarning(DeprecationWarning): ... class MyDeprecationWarningCustom(MyDeprecationWarning): ... class MyExceptionGroup(ExceptionGroup): ... class MyExceptionGroupCustom(MyExceptionGroup): ... class MyBaseExceptionGroup(ExceptionGroup): ... class MyBaseExceptionGroupCustom(MyBaseExceptionGroup): ... def foo(): Exception("...") BaseException("...") ValueError("...") RuntimeError("...") DeprecationWarning("...") GeneratorExit("...") SystemExit("...") ExceptionGroup("eg", [ValueError(1), TypeError(2), OSError(3), OSError(4)]) BaseExceptionGroup("eg", [ValueError(1), TypeError(2), OSError(3), OSError(4)]) MyException("...") MyBaseException("...") MyValueError("...") MyExceptionCustom("...") MyBaseExceptionCustom("...") MyValueErrorCustom("...") MyDeprecationWarning("...") MyDeprecationWarningCustom("...") MyExceptionGroup("...") MyExceptionGroupCustom("...") MyBaseExceptionGroup("...") MyBaseExceptionGroupCustom("...") ``` and you can run this to check the PR: ```sh target/debug/ruff check tmp/test_error.py --select PLW0133 --unsafe-fixes --diff --no-cache --isolated --target-version py310 target/debug/ruff check tmp/test_error.py --select PLW0133 --unsafe-fixes --diff --no-cache --isolated --target-version py314 ```
This commit is contained in:
parent
8727a7b179
commit
9490fbf1e1
|
|
@ -2,15 +2,40 @@ from abc import ABC, abstractmethod
|
|||
from contextlib import suppress
|
||||
|
||||
|
||||
class MyError(Exception):
|
||||
...
|
||||
|
||||
|
||||
class MySubError(MyError):
|
||||
...
|
||||
|
||||
|
||||
class MyValueError(ValueError):
|
||||
...
|
||||
|
||||
|
||||
class MyUserWarning(UserWarning):
|
||||
...
|
||||
|
||||
|
||||
# Violation test cases with builtin errors: PLW0133
|
||||
|
||||
|
||||
# Test case 1: Useless exception statement
|
||||
def func():
|
||||
AssertionError("This is an assertion error") # PLW0133
|
||||
MyError("This is a custom error") # PLW0133
|
||||
MySubError("This is a custom error") # PLW0133
|
||||
MyValueError("This is a custom value error") # PLW0133
|
||||
|
||||
|
||||
# Test case 2: Useless exception statement in try-except block
|
||||
def func():
|
||||
try:
|
||||
Exception("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
except Exception as err:
|
||||
pass
|
||||
|
||||
|
|
@ -19,6 +44,9 @@ def func():
|
|||
def func():
|
||||
if True:
|
||||
RuntimeError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
|
||||
# Test case 4: Useless exception statement in class
|
||||
|
|
@ -26,12 +54,18 @@ def func():
|
|||
class Class:
|
||||
def __init__(self):
|
||||
TypeError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
|
||||
# Test case 5: Useless exception statement in function
|
||||
def func():
|
||||
def inner():
|
||||
IndexError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
inner()
|
||||
|
||||
|
|
@ -40,6 +74,9 @@ def func():
|
|||
def func():
|
||||
while True:
|
||||
KeyError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
|
||||
# Test case 7: Useless exception statement in abstract class
|
||||
|
|
@ -48,27 +85,58 @@ def func():
|
|||
@abstractmethod
|
||||
def method(self):
|
||||
NotImplementedError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
|
||||
# Test case 8: Useless exception statement inside context manager
|
||||
def func():
|
||||
with suppress(AttributeError):
|
||||
with suppress(Exception):
|
||||
AttributeError("This is an exception") # PLW0133
|
||||
MyError("This is an exception") # PLW0133
|
||||
MySubError("This is an exception") # PLW0133
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
|
||||
# Test case 9: Useless exception statement in parentheses
|
||||
def func():
|
||||
(RuntimeError("This is an exception")) # PLW0133
|
||||
(MyError("This is an exception")) # PLW0133
|
||||
(MySubError("This is an exception")) # PLW0133
|
||||
(MyValueError("This is an exception")) # PLW0133
|
||||
|
||||
|
||||
# Test case 10: Useless exception statement in continuation
|
||||
def func():
|
||||
x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
|
||||
|
||||
# Test case 11: Useless warning statement
|
||||
def func():
|
||||
UserWarning("This is an assertion error") # PLW0133
|
||||
UserWarning("This is a user warning") # PLW0133
|
||||
MyUserWarning("This is a custom user warning") # PLW0133
|
||||
|
||||
|
||||
# Test case 12: Useless exception statement at module level
|
||||
import builtins
|
||||
|
||||
builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
|
||||
PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
|
||||
MyError("This is an exception") # PLW0133
|
||||
|
||||
MySubError("This is an exception") # PLW0133
|
||||
|
||||
MyValueError("This is an exception") # PLW0133
|
||||
|
||||
UserWarning("This is a user warning") # PLW0133
|
||||
|
||||
MyUserWarning("This is a custom user warning") # PLW0133
|
||||
|
||||
|
||||
# Non-violation test cases: PLW0133
|
||||
|
|
@ -119,10 +187,3 @@ def func():
|
|||
def func():
|
||||
with suppress(AttributeError):
|
||||
raise AttributeError("This is an exception") # OK
|
||||
|
||||
|
||||
import builtins
|
||||
|
||||
builtins.TypeError("still an exception even though it's an Attribute")
|
||||
|
||||
PythonFinalizationError("Added in Python 3.13")
|
||||
|
|
|
|||
|
|
@ -9,6 +9,11 @@ use crate::settings::LinterSettings;
|
|||
|
||||
// Rule-specific behavior
|
||||
|
||||
// https://github.com/astral-sh/ruff/pull/21382
|
||||
pub(crate) const fn is_custom_exception_checking_enabled(settings: &LinterSettings) -> bool {
|
||||
settings.preview.is_enabled()
|
||||
}
|
||||
|
||||
// https://github.com/astral-sh/ruff/pull/15541
|
||||
pub(crate) const fn is_suspicious_function_reference_enabled(settings: &LinterSettings) -> bool {
|
||||
settings.preview.is_enabled()
|
||||
|
|
|
|||
|
|
@ -16,10 +16,10 @@ mod tests {
|
|||
use crate::registry::Rule;
|
||||
use crate::rules::{flake8_tidy_imports, pylint};
|
||||
|
||||
use crate::assert_diagnostics;
|
||||
use crate::settings::LinterSettings;
|
||||
use crate::settings::types::PreviewMode;
|
||||
use crate::test::test_path;
|
||||
use crate::{assert_diagnostics, assert_diagnostics_diff};
|
||||
|
||||
#[test_case(Rule::SingledispatchMethod, Path::new("singledispatch_method.py"))]
|
||||
#[test_case(
|
||||
|
|
@ -253,6 +253,32 @@ mod tests {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[test_case(
|
||||
Rule::UselessExceptionStatement,
|
||||
Path::new("useless_exception_statement.py")
|
||||
)]
|
||||
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
|
||||
let snapshot = format!(
|
||||
"preview__{}_{}",
|
||||
rule_code.noqa_code(),
|
||||
path.to_string_lossy()
|
||||
);
|
||||
|
||||
assert_diagnostics_diff!(
|
||||
snapshot,
|
||||
Path::new("pylint").join(path).as_path(),
|
||||
&LinterSettings {
|
||||
preview: PreviewMode::Disabled,
|
||||
..LinterSettings::for_rule(rule_code)
|
||||
},
|
||||
&LinterSettings {
|
||||
preview: PreviewMode::Enabled,
|
||||
..LinterSettings::for_rule(rule_code)
|
||||
}
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn continue_in_finally() -> Result<()> {
|
||||
let diagnostics = test_path(
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
use ruff_macros::{ViolationMetadata, derive_message_formats};
|
||||
use ruff_python_ast::{self as ast, Expr};
|
||||
use ruff_python_semantic::SemanticModel;
|
||||
use ruff_python_semantic::{SemanticModel, analyze};
|
||||
use ruff_python_stdlib::builtins;
|
||||
use ruff_text_size::Ranged;
|
||||
|
||||
use crate::checkers::ast::Checker;
|
||||
use crate::preview::is_custom_exception_checking_enabled;
|
||||
use crate::{Edit, Fix, FixAvailability, Violation};
|
||||
use ruff_python_ast::PythonVersion;
|
||||
|
||||
|
|
@ -20,6 +21,9 @@ use ruff_python_ast::PythonVersion;
|
|||
/// This rule only detects built-in exceptions, like `ValueError`, and does
|
||||
/// not catch user-defined exceptions.
|
||||
///
|
||||
/// In [preview], this rule will also detect user-defined exceptions, but only
|
||||
/// the ones defined in the file being checked.
|
||||
///
|
||||
/// ## Example
|
||||
/// ```python
|
||||
/// ValueError("...")
|
||||
|
|
@ -32,7 +36,8 @@ use ruff_python_ast::PythonVersion;
|
|||
///
|
||||
/// ## Fix safety
|
||||
/// This rule's fix is marked as unsafe, as converting a useless exception
|
||||
/// statement to a `raise` statement will change the program's behavior.
|
||||
///
|
||||
/// [preview]: https://docs.astral.sh/ruff/preview/
|
||||
#[derive(ViolationMetadata)]
|
||||
#[violation_metadata(stable_since = "0.5.0")]
|
||||
pub(crate) struct UselessExceptionStatement;
|
||||
|
|
@ -56,7 +61,10 @@ pub(crate) fn useless_exception_statement(checker: &Checker, expr: &ast::StmtExp
|
|||
return;
|
||||
};
|
||||
|
||||
if is_builtin_exception(func, checker.semantic(), checker.target_version()) {
|
||||
if is_builtin_exception(func, checker.semantic(), checker.target_version())
|
||||
|| (is_custom_exception_checking_enabled(checker.settings())
|
||||
&& is_custom_exception(func, checker.semantic(), checker.target_version()))
|
||||
{
|
||||
let mut diagnostic = checker.report_diagnostic(UselessExceptionStatement, expr.range());
|
||||
diagnostic.set_fix(Fix::unsafe_edit(Edit::insertion(
|
||||
"raise ".to_string(),
|
||||
|
|
@ -78,3 +86,34 @@ fn is_builtin_exception(
|
|||
if builtins::is_exception(name, target_version.minor))
|
||||
})
|
||||
}
|
||||
|
||||
/// Returns `true` if the given expression is a custom exception.
|
||||
fn is_custom_exception(
|
||||
expr: &Expr,
|
||||
semantic: &SemanticModel,
|
||||
target_version: PythonVersion,
|
||||
) -> bool {
|
||||
let Some(qualified_name) = semantic.resolve_qualified_name(expr) else {
|
||||
return false;
|
||||
};
|
||||
let Some(symbol) = qualified_name.segments().last() else {
|
||||
return false;
|
||||
};
|
||||
let Some(binding_id) = semantic.lookup_symbol(symbol) else {
|
||||
return false;
|
||||
};
|
||||
let binding = semantic.binding(binding_id);
|
||||
let Some(source) = binding.source else {
|
||||
return false;
|
||||
};
|
||||
let statement = semantic.statement(source);
|
||||
if let ast::Stmt::ClassDef(class_def) = statement {
|
||||
return analyze::class::any_qualified_base_class(class_def, semantic, &|qualified_name| {
|
||||
if let ["" | "builtins", name] = qualified_name.segments() {
|
||||
return builtins::is_exception(name, target_version.minor);
|
||||
}
|
||||
false
|
||||
});
|
||||
}
|
||||
false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,250 +2,294 @@
|
|||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||
---
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:7:5
|
||||
|
|
||||
5 | # Test case 1: Useless exception statement
|
||||
6 | def func():
|
||||
7 | AssertionError("This is an assertion error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
4 |
|
||||
5 | # Test case 1: Useless exception statement
|
||||
6 | def func():
|
||||
- AssertionError("This is an assertion error") # PLW0133
|
||||
7 + raise AssertionError("This is an assertion error") # PLW0133
|
||||
8 |
|
||||
9 |
|
||||
10 | # Test case 2: Useless exception statement in try-except block
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:13:9
|
||||
--> useless_exception_statement.py:26:5
|
||||
|
|
||||
11 | def func():
|
||||
12 | try:
|
||||
13 | Exception("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
14 | except Exception as err:
|
||||
15 | pass
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
10 | # Test case 2: Useless exception statement in try-except block
|
||||
11 | def func():
|
||||
12 | try:
|
||||
- Exception("This is an exception") # PLW0133
|
||||
13 + raise Exception("This is an exception") # PLW0133
|
||||
14 | except Exception as err:
|
||||
15 | pass
|
||||
16 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:21:9
|
||||
|
|
||||
19 | def func():
|
||||
20 | if True:
|
||||
21 | RuntimeError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
18 | # Test case 3: Useless exception statement in if statement
|
||||
19 | def func():
|
||||
20 | if True:
|
||||
- RuntimeError("This is an exception") # PLW0133
|
||||
21 + raise RuntimeError("This is an exception") # PLW0133
|
||||
22 |
|
||||
23 |
|
||||
24 | # Test case 4: Useless exception statement in class
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:28:13
|
||||
|
|
||||
26 | class Class:
|
||||
27 | def __init__(self):
|
||||
28 | TypeError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
24 | # Test case 1: Useless exception statement
|
||||
25 | def func():
|
||||
26 | class Class:
|
||||
27 | def __init__(self):
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
23 |
|
||||
24 | # Test case 1: Useless exception statement
|
||||
25 | def func():
|
||||
- AssertionError("This is an assertion error") # PLW0133
|
||||
26 + raise AssertionError("This is an assertion error") # PLW0133
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:35:9
|
||||
|
|
||||
33 | def func():
|
||||
34 | try:
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
32 | # Test case 2: Useless exception statement in try-except block
|
||||
33 | def func():
|
||||
34 | try:
|
||||
- Exception("This is an exception") # PLW0133
|
||||
35 + raise Exception("This is an exception") # PLW0133
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:46:9
|
||||
|
|
||||
44 | def func():
|
||||
45 | if True:
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
43 | # Test case 3: Useless exception statement in if statement
|
||||
44 | def func():
|
||||
45 | if True:
|
||||
- RuntimeError("This is an exception") # PLW0133
|
||||
46 + raise RuntimeError("This is an exception") # PLW0133
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:56:13
|
||||
|
|
||||
54 | class Class:
|
||||
55 | def __init__(self):
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
53 | def func():
|
||||
54 | class Class:
|
||||
55 | def __init__(self):
|
||||
- TypeError("This is an exception") # PLW0133
|
||||
28 + raise TypeError("This is an exception") # PLW0133
|
||||
29 |
|
||||
30 |
|
||||
31 | # Test case 5: Useless exception statement in function
|
||||
56 + raise TypeError("This is an exception") # PLW0133
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:34:9
|
||||
--> useless_exception_statement.py:65:9
|
||||
|
|
||||
32 | def func():
|
||||
33 | def inner():
|
||||
34 | IndexError("This is an exception") # PLW0133
|
||||
63 | def func():
|
||||
64 | def inner():
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
35 |
|
||||
36 | inner()
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
31 | # Test case 5: Useless exception statement in function
|
||||
32 | def func():
|
||||
33 | def inner():
|
||||
62 | # Test case 5: Useless exception statement in function
|
||||
63 | def func():
|
||||
64 | def inner():
|
||||
- IndexError("This is an exception") # PLW0133
|
||||
34 + raise IndexError("This is an exception") # PLW0133
|
||||
35 |
|
||||
36 | inner()
|
||||
37 |
|
||||
65 + raise IndexError("This is an exception") # PLW0133
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:42:9
|
||||
--> useless_exception_statement.py:76:9
|
||||
|
|
||||
40 | def func():
|
||||
41 | while True:
|
||||
42 | KeyError("This is an exception") # PLW0133
|
||||
74 | def func():
|
||||
75 | while True:
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
39 | # Test case 6: Useless exception statement in while loop
|
||||
40 | def func():
|
||||
41 | while True:
|
||||
73 | # Test case 6: Useless exception statement in while loop
|
||||
74 | def func():
|
||||
75 | while True:
|
||||
- KeyError("This is an exception") # PLW0133
|
||||
42 + raise KeyError("This is an exception") # PLW0133
|
||||
43 |
|
||||
44 |
|
||||
45 | # Test case 7: Useless exception statement in abstract class
|
||||
76 + raise KeyError("This is an exception") # PLW0133
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:50:13
|
||||
--> useless_exception_statement.py:87:13
|
||||
|
|
||||
48 | @abstractmethod
|
||||
49 | def method(self):
|
||||
50 | NotImplementedError("This is an exception") # PLW0133
|
||||
85 | @abstractmethod
|
||||
86 | def method(self):
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
47 | class Class(ABC):
|
||||
48 | @abstractmethod
|
||||
49 | def method(self):
|
||||
84 | class Class(ABC):
|
||||
85 | @abstractmethod
|
||||
86 | def method(self):
|
||||
- NotImplementedError("This is an exception") # PLW0133
|
||||
50 + raise NotImplementedError("This is an exception") # PLW0133
|
||||
51 |
|
||||
52 |
|
||||
53 | # Test case 8: Useless exception statement inside context manager
|
||||
87 + raise NotImplementedError("This is an exception") # PLW0133
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:56:9
|
||||
--> useless_exception_statement.py:96:9
|
||||
|
|
||||
54 | def func():
|
||||
55 | with suppress(AttributeError):
|
||||
56 | AttributeError("This is an exception") # PLW0133
|
||||
94 | def func():
|
||||
95 | with suppress(Exception):
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
53 | # Test case 8: Useless exception statement inside context manager
|
||||
54 | def func():
|
||||
55 | with suppress(AttributeError):
|
||||
93 | # Test case 8: Useless exception statement inside context manager
|
||||
94 | def func():
|
||||
95 | with suppress(Exception):
|
||||
- AttributeError("This is an exception") # PLW0133
|
||||
56 + raise AttributeError("This is an exception") # PLW0133
|
||||
57 |
|
||||
58 |
|
||||
59 | # Test case 9: Useless exception statement in parentheses
|
||||
96 + raise AttributeError("This is an exception") # PLW0133
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:61:5
|
||||
|
|
||||
59 | # Test case 9: Useless exception statement in parentheses
|
||||
60 | def func():
|
||||
61 | (RuntimeError("This is an exception")) # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
58 |
|
||||
59 | # Test case 9: Useless exception statement in parentheses
|
||||
60 | def func():
|
||||
- (RuntimeError("This is an exception")) # PLW0133
|
||||
61 + raise (RuntimeError("This is an exception")) # PLW0133
|
||||
62 |
|
||||
63 |
|
||||
64 | # Test case 10: Useless exception statement in continuation
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:66:12
|
||||
|
|
||||
64 | # Test case 10: Useless exception statement in continuation
|
||||
65 | def func():
|
||||
66 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
63 |
|
||||
64 | # Test case 10: Useless exception statement in continuation
|
||||
65 | def func():
|
||||
- x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
66 + x = 1; raise (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
67 |
|
||||
68 |
|
||||
69 | # Test case 11: Useless warning statement
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:71:5
|
||||
|
|
||||
69 | # Test case 11: Useless warning statement
|
||||
70 | def func():
|
||||
71 | UserWarning("This is an assertion error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
68 |
|
||||
69 | # Test case 11: Useless warning statement
|
||||
70 | def func():
|
||||
- UserWarning("This is an assertion error") # PLW0133
|
||||
71 + raise UserWarning("This is an assertion error") # PLW0133
|
||||
72 |
|
||||
73 |
|
||||
74 | # Non-violation test cases: PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:126:1
|
||||
--> useless_exception_statement.py:104:5
|
||||
|
|
||||
124 | import builtins
|
||||
125 |
|
||||
126 | builtins.TypeError("still an exception even though it's an Attribute")
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
127 |
|
||||
128 | PythonFinalizationError("Added in Python 3.13")
|
||||
102 | # Test case 9: Useless exception statement in parentheses
|
||||
103 | def func():
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
101 |
|
||||
102 | # Test case 9: Useless exception statement in parentheses
|
||||
103 | def func():
|
||||
- (RuntimeError("This is an exception")) # PLW0133
|
||||
104 + raise (RuntimeError("This is an exception")) # PLW0133
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:112:12
|
||||
|
|
||||
110 | # Test case 10: Useless exception statement in continuation
|
||||
111 | def func():
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
109 |
|
||||
110 | # Test case 10: Useless exception statement in continuation
|
||||
111 | def func():
|
||||
- x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
112 + x = 1; raise (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:120:5
|
||||
|
|
||||
118 | # Test case 11: Useless warning statement
|
||||
119 | def func():
|
||||
120 | UserWarning("This is a user warning") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
121 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
117 |
|
||||
118 | # Test case 11: Useless warning statement
|
||||
119 | def func():
|
||||
- UserWarning("This is a user warning") # PLW0133
|
||||
120 + raise UserWarning("This is a user warning") # PLW0133
|
||||
121 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
122 |
|
||||
123 |
|
||||
124 | import builtins
|
||||
125 |
|
||||
- builtins.TypeError("still an exception even though it's an Attribute")
|
||||
126 + raise builtins.TypeError("still an exception even though it's an Attribute")
|
||||
127 |
|
||||
128 | PythonFinalizationError("Added in Python 3.13")
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:128:1
|
||||
--> useless_exception_statement.py:127:1
|
||||
|
|
||||
126 | builtins.TypeError("still an exception even though it's an Attribute")
|
||||
127 |
|
||||
128 | PythonFinalizationError("Added in Python 3.13")
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
125 | import builtins
|
||||
126 |
|
||||
127 | builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
128 |
|
||||
129 | PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
125 |
|
||||
126 | builtins.TypeError("still an exception even though it's an Attribute")
|
||||
127 |
|
||||
- PythonFinalizationError("Added in Python 3.13")
|
||||
128 + raise PythonFinalizationError("Added in Python 3.13")
|
||||
124 | # Test case 12: Useless exception statement at module level
|
||||
125 | import builtins
|
||||
126 |
|
||||
- builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
127 + raise builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
128 |
|
||||
129 | PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
130 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:129:1
|
||||
|
|
||||
127 | builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
128 |
|
||||
129 | PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
130 |
|
||||
131 | MyError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
126 |
|
||||
127 | builtins.TypeError("still an exception even though it's an Attribute") # PLW0133
|
||||
128 |
|
||||
- PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
129 + raise PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
130 |
|
||||
131 | MyError("This is an exception") # PLW0133
|
||||
132 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:137:1
|
||||
|
|
||||
135 | MyValueError("This is an exception") # PLW0133
|
||||
136 |
|
||||
137 | UserWarning("This is a user warning") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
138 |
|
||||
139 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
134 |
|
||||
135 | MyValueError("This is an exception") # PLW0133
|
||||
136 |
|
||||
- UserWarning("This is a user warning") # PLW0133
|
||||
137 + raise UserWarning("This is a user warning") # PLW0133
|
||||
138 |
|
||||
139 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
140 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
|
|
|||
|
|
@ -0,0 +1,751 @@
|
|||
---
|
||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||
---
|
||||
--- Linter settings ---
|
||||
-linter.preview = disabled
|
||||
+linter.preview = enabled
|
||||
|
||||
--- Summary ---
|
||||
Removed: 0
|
||||
Added: 35
|
||||
|
||||
--- Added ---
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:27:5
|
||||
|
|
||||
25 | def func():
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
24 | # Test case 1: Useless exception statement
|
||||
25 | def func():
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
- MyError("This is a custom error") # PLW0133
|
||||
27 + raise MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
30 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:28:5
|
||||
|
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
25 | def func():
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
- MySubError("This is a custom error") # PLW0133
|
||||
28 + raise MySubError("This is a custom error") # PLW0133
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
30 |
|
||||
31 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:29:5
|
||||
|
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
29 | MyValueError("This is a custom value error") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
26 | AssertionError("This is an assertion error") # PLW0133
|
||||
27 | MyError("This is a custom error") # PLW0133
|
||||
28 | MySubError("This is a custom error") # PLW0133
|
||||
- MyValueError("This is a custom value error") # PLW0133
|
||||
29 + raise MyValueError("This is a custom value error") # PLW0133
|
||||
30 |
|
||||
31 |
|
||||
32 | # Test case 2: Useless exception statement in try-except block
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:36:9
|
||||
|
|
||||
34 | try:
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
33 | def func():
|
||||
34 | try:
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
36 + raise MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
39 | except Exception as err:
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:37:9
|
||||
|
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
39 | except Exception as err:
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
34 | try:
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
37 + raise MySubError("This is an exception") # PLW0133
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
39 | except Exception as err:
|
||||
40 | pass
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:38:9
|
||||
|
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
38 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
39 | except Exception as err:
|
||||
40 | pass
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
35 | Exception("This is an exception") # PLW0133
|
||||
36 | MyError("This is an exception") # PLW0133
|
||||
37 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
38 + raise MyValueError("This is an exception") # PLW0133
|
||||
39 | except Exception as err:
|
||||
40 | pass
|
||||
41 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:47:9
|
||||
|
|
||||
45 | if True:
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
44 | def func():
|
||||
45 | if True:
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
47 + raise MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
50 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:48:9
|
||||
|
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
45 | if True:
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
48 + raise MySubError("This is an exception") # PLW0133
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
50 |
|
||||
51 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:49:9
|
||||
|
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
49 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
46 | RuntimeError("This is an exception") # PLW0133
|
||||
47 | MyError("This is an exception") # PLW0133
|
||||
48 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
49 + raise MyValueError("This is an exception") # PLW0133
|
||||
50 |
|
||||
51 |
|
||||
52 | # Test case 4: Useless exception statement in class
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:57:13
|
||||
|
|
||||
55 | def __init__(self):
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
54 | class Class:
|
||||
55 | def __init__(self):
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
57 + raise MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
60 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:58:13
|
||||
|
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
55 | def __init__(self):
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
58 + raise MySubError("This is an exception") # PLW0133
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
60 |
|
||||
61 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:59:13
|
||||
|
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
59 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
56 | TypeError("This is an exception") # PLW0133
|
||||
57 | MyError("This is an exception") # PLW0133
|
||||
58 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
59 + raise MyValueError("This is an exception") # PLW0133
|
||||
60 |
|
||||
61 |
|
||||
62 | # Test case 5: Useless exception statement in function
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:66:9
|
||||
|
|
||||
64 | def inner():
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
63 | def func():
|
||||
64 | def inner():
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
66 + raise MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
69 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:67:9
|
||||
|
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
64 | def inner():
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
67 + raise MySubError("This is an exception") # PLW0133
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
69 |
|
||||
70 | inner()
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:68:9
|
||||
|
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
68 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
69 |
|
||||
70 | inner()
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
65 | IndexError("This is an exception") # PLW0133
|
||||
66 | MyError("This is an exception") # PLW0133
|
||||
67 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
68 + raise MyValueError("This is an exception") # PLW0133
|
||||
69 |
|
||||
70 | inner()
|
||||
71 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:77:9
|
||||
|
|
||||
75 | while True:
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
74 | def func():
|
||||
75 | while True:
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
77 + raise MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
80 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:78:9
|
||||
|
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
75 | while True:
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
78 + raise MySubError("This is an exception") # PLW0133
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
80 |
|
||||
81 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:79:9
|
||||
|
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
79 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
76 | KeyError("This is an exception") # PLW0133
|
||||
77 | MyError("This is an exception") # PLW0133
|
||||
78 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
79 + raise MyValueError("This is an exception") # PLW0133
|
||||
80 |
|
||||
81 |
|
||||
82 | # Test case 7: Useless exception statement in abstract class
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:88:13
|
||||
|
|
||||
86 | def method(self):
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
85 | @abstractmethod
|
||||
86 | def method(self):
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
88 + raise MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
91 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:89:13
|
||||
|
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
86 | def method(self):
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
89 + raise MySubError("This is an exception") # PLW0133
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
91 |
|
||||
92 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:90:13
|
||||
|
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
90 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
87 | NotImplementedError("This is an exception") # PLW0133
|
||||
88 | MyError("This is an exception") # PLW0133
|
||||
89 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
90 + raise MyValueError("This is an exception") # PLW0133
|
||||
91 |
|
||||
92 |
|
||||
93 | # Test case 8: Useless exception statement inside context manager
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:97:9
|
||||
|
|
||||
95 | with suppress(Exception):
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
94 | def func():
|
||||
95 | with suppress(Exception):
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
- MyError("This is an exception") # PLW0133
|
||||
97 + raise MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
100 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:98:9
|
||||
|
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
95 | with suppress(Exception):
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
98 + raise MySubError("This is an exception") # PLW0133
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
100 |
|
||||
101 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:99:9
|
||||
|
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
99 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
96 | AttributeError("This is an exception") # PLW0133
|
||||
97 | MyError("This is an exception") # PLW0133
|
||||
98 | MySubError("This is an exception") # PLW0133
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
99 + raise MyValueError("This is an exception") # PLW0133
|
||||
100 |
|
||||
101 |
|
||||
102 | # Test case 9: Useless exception statement in parentheses
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:105:5
|
||||
|
|
||||
103 | def func():
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
102 | # Test case 9: Useless exception statement in parentheses
|
||||
103 | def func():
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
- (MyError("This is an exception")) # PLW0133
|
||||
105 + raise (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
108 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:106:5
|
||||
|
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
103 | def func():
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
- (MySubError("This is an exception")) # PLW0133
|
||||
106 + raise (MySubError("This is an exception")) # PLW0133
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
108 |
|
||||
109 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:107:5
|
||||
|
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
107 | (MyValueError("This is an exception")) # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
104 | (RuntimeError("This is an exception")) # PLW0133
|
||||
105 | (MyError("This is an exception")) # PLW0133
|
||||
106 | (MySubError("This is an exception")) # PLW0133
|
||||
- (MyValueError("This is an exception")) # PLW0133
|
||||
107 + raise (MyValueError("This is an exception")) # PLW0133
|
||||
108 |
|
||||
109 |
|
||||
110 | # Test case 10: Useless exception statement in continuation
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:113:12
|
||||
|
|
||||
111 | def func():
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
110 | # Test case 10: Useless exception statement in continuation
|
||||
111 | def func():
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
- x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
113 + x = 1; raise (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
116 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:114:12
|
||||
|
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
111 | def func():
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
- x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
114 + x = 1; raise (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
116 |
|
||||
117 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:115:12
|
||||
|
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
115 | x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
112 | x = 1; (RuntimeError("This is an exception")); y = 2 # PLW0133
|
||||
113 | x = 1; (MyError("This is an exception")); y = 2 # PLW0133
|
||||
114 | x = 1; (MySubError("This is an exception")); y = 2 # PLW0133
|
||||
- x = 1; (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
115 + x = 1; raise (MyValueError("This is an exception")); y = 2 # PLW0133
|
||||
116 |
|
||||
117 |
|
||||
118 | # Test case 11: Useless warning statement
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:121:5
|
||||
|
|
||||
119 | def func():
|
||||
120 | UserWarning("This is a user warning") # PLW0133
|
||||
121 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
118 | # Test case 11: Useless warning statement
|
||||
119 | def func():
|
||||
120 | UserWarning("This is a user warning") # PLW0133
|
||||
- MyUserWarning("This is a custom user warning") # PLW0133
|
||||
121 + raise MyUserWarning("This is a custom user warning") # PLW0133
|
||||
122 |
|
||||
123 |
|
||||
124 | # Test case 12: Useless exception statement at module level
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:131:1
|
||||
|
|
||||
129 | PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
130 |
|
||||
131 | MyError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
132 |
|
||||
133 | MySubError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
128 |
|
||||
129 | PythonFinalizationError("Added in Python 3.13") # PLW0133
|
||||
130 |
|
||||
- MyError("This is an exception") # PLW0133
|
||||
131 + raise MyError("This is an exception") # PLW0133
|
||||
132 |
|
||||
133 | MySubError("This is an exception") # PLW0133
|
||||
134 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:133:1
|
||||
|
|
||||
131 | MyError("This is an exception") # PLW0133
|
||||
132 |
|
||||
133 | MySubError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
134 |
|
||||
135 | MyValueError("This is an exception") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
130 |
|
||||
131 | MyError("This is an exception") # PLW0133
|
||||
132 |
|
||||
- MySubError("This is an exception") # PLW0133
|
||||
133 + raise MySubError("This is an exception") # PLW0133
|
||||
134 |
|
||||
135 | MyValueError("This is an exception") # PLW0133
|
||||
136 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:135:1
|
||||
|
|
||||
133 | MySubError("This is an exception") # PLW0133
|
||||
134 |
|
||||
135 | MyValueError("This is an exception") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
136 |
|
||||
137 | UserWarning("This is a user warning") # PLW0133
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
132 |
|
||||
133 | MySubError("This is an exception") # PLW0133
|
||||
134 |
|
||||
- MyValueError("This is an exception") # PLW0133
|
||||
135 + raise MyValueError("This is an exception") # PLW0133
|
||||
136 |
|
||||
137 | UserWarning("This is a user warning") # PLW0133
|
||||
138 |
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
|
||||
|
||||
PLW0133 [*] Missing `raise` statement on exception
|
||||
--> useless_exception_statement.py:139:1
|
||||
|
|
||||
137 | UserWarning("This is a user warning") # PLW0133
|
||||
138 |
|
||||
139 | MyUserWarning("This is a custom user warning") # PLW0133
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: Add `raise` keyword
|
||||
136 |
|
||||
137 | UserWarning("This is a user warning") # PLW0133
|
||||
138 |
|
||||
- MyUserWarning("This is a custom user warning") # PLW0133
|
||||
139 + raise MyUserWarning("This is a custom user warning") # PLW0133
|
||||
140 |
|
||||
141 |
|
||||
142 | # Non-violation test cases: PLW0133
|
||||
note: This is an unsafe fix and may change runtime behavior
|
||||
Loading…
Reference in New Issue