Commit f14fd5d
authored
Fix exception handler parenthesis removal for Python 3.14+ (#23126)
Summary
--
Fixes #23125. We were missing handling for starred elements within a
tuple of
exceptions. This produces valid syntax but changes the AST from a
non-starred `except` handler to a starred `except` handler (which can be
invalid
if there are other non-starred handlers):
```diff
try: ...
-except (*exceptions, ValueError): ...
+except *exceptions, ValueError: ...
```
Starred expressions in other positions are outright invalid:
```pycon
>>> try: ...
... except Exception, *exceptions: ...
...
File "<python-input-8>", line 2
except Exception, *exceptions: ...
^
SyntaxError: invalid syntax
```
We now preserve parentheses in these cases as well.
Test Plan
--
New tests derived from the issue1 parent e84b0f4 commit f14fd5d
3 files changed
Lines changed: 74 additions & 1 deletion
File tree
- crates/ruff_python_formatter
- resources/test/fixtures/ruff/statement
- src/other
- tests/snapshots
Lines changed: 13 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
Lines changed: 22 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
81 | 101 | | |
82 | 102 | | |
83 | | - | |
| 103 | + | |
| 104 | + | |
84 | 105 | | |
85 | 106 | | |
86 | 107 | | |
| |||
Lines changed: 39 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
211 | 224 | | |
212 | 225 | | |
213 | 226 | | |
| |||
454 | 467 | | |
455 | 468 | | |
456 | 469 | | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
457 | 483 | | |
458 | 484 | | |
459 | 485 | | |
| |||
727 | 753 | | |
728 | 754 | | |
729 | 755 | | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
730 | 769 | | |
731 | 770 | | |
732 | 771 | | |
| |||
0 commit comments