Commit 2110d32
authored
Summary
--
This PR fixes #25438 by narrowing the diagnostic range from the entire
`try` statement to only the
`try` keyword. This was one of the two alternatives mentioned on #25438,
and I thought this looked a
bit nicer than only narrowing the range to the `try` body. I think this
is also consistent with the
range for `too-many-statements` (`PLR0915`), which marks the function
name:
https://play.ruff.rs/dafe23a1-2e89-48a5-b4d7-b0825b737152
I'm happy to reconsider, though. Another possible alternative along
these lines is marking the first
statement that exceeds the limit, or the last statement, or something
like that.
This PR also fixes #25390 by limiting the rule to `try` statements with
`except` handlers. Either an
`except` or a `finally` clause is required, so this avoids emitting
diagnostics for
context-manager-like cases, such as the one reported in the issue:
```py
session = ...
try:
print()
print()
print()
print()
print()
print()
finally:
session.close()
```
where the `try` is just ensuring that some cleanup is performed and
can't actually trigger the bad
behavior described in the rule docs of mistakenly catching the wrong
exception.
Test Plan
--
New mdtests based on the issues
1 parent f9ba228 commit 2110d32
4 files changed
Lines changed: 67 additions & 19 deletions
File tree
- crates/ruff_linter
- resources/mdtest/pylint
- src
- checkers/ast/analyze
- rules/pylint
- rules
- snapshots
Lines changed: 50 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1341 | 1341 | | |
1342 | 1342 | | |
1343 | 1343 | | |
1344 | | - | |
1345 | | - | |
| 1344 | + | |
1346 | 1345 | | |
1347 | 1346 | | |
1348 | 1347 | | |
| |||
Lines changed: 11 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
93 | | - | |
| 92 | + | |
94 | 93 | | |
95 | 94 | | |
96 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
97 | 102 | | |
98 | 103 | | |
99 | 104 | | |
100 | 105 | | |
101 | 106 | | |
102 | 107 | | |
103 | | - | |
| 108 | + | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
Lines changed: 5 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
19 | 13 | | |
0 commit comments