Brent Westbrook
63b1c1ea8b
Avoid extra parentheses for long match patterns with as captures ( #21176 )
...
Summary
--
This PR fixes #17796 by taking the approach mentioned in
https://github.com/astral-sh/ruff/issues/17796#issuecomment-2847943862
of simply recursing into the `MatchAs` patterns when checking if we need
parentheses. This allows us to reuse the parentheses in the inner
pattern before also breaking the `MatchAs` pattern itself:
```diff
match class_pattern:
case Class(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) as capture:
pass
- case (
- Class(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) as capture
- ):
+ case Class(
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ ) as capture:
pass
- case (
- Class(
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- ) as capture
- ):
+ case Class(
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ ) as capture:
pass
case (
Class(
@@ -685,13 +683,11 @@
match sequence_pattern_brackets:
case [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] as capture:
pass
- case (
- [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] as capture
- ):
+ case [
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ ] as capture:
pass
- case (
- [
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- ] as capture
- ):
+ case [
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ ] as capture:
pass
```
I haven't really resolved the question of whether or not it's okay
always to recurse, but I'm hoping the ecosystem check on this PR might
shed some light on that.
Test Plan
--
New tests based on the issue and then reviewing the ecosystem check here
2025-11-03 17:06:52 -05:00
..
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2025-10-17 08:49:16 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-05-22 07:52:21 +02:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2025-01-09 10:20:06 +01:00
2025-10-14 10:14:59 -04:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2025-10-14 10:14:59 -04:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 10:14:59 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2025-04-11 10:21:47 +02:00
2025-10-07 12:23:11 -04:00
2025-10-07 12:23:11 -04:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-12-09 09:32:12 +00:00
2025-10-07 12:23:11 -04:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-02-18 08:43:51 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2025-05-30 15:00:56 -05:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2025-10-17 08:49:16 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-07-27 12:41:03 +00:00
2025-10-07 12:23:11 -04:00
2025-07-27 12:41:03 +00:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2025-07-27 12:41:03 +00:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2025-06-15 06:53:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-27 10:34:29 +00:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-31 14:53:40 -04:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-05-22 07:52:21 +02:00
2025-05-22 07:52:21 +02:00
2025-10-07 12:23:11 -04:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2025-10-27 09:52:17 -05:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-31 14:53:40 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-12-09 09:32:12 +00:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-11-03 17:06:52 -05:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-01-09 10:20:06 +01:00
2025-01-09 10:20:06 +01:00
2025-01-09 10:20:06 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-10-14 11:17:45 -04:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-02-18 12:03:13 -05:00
2025-10-13 14:13:27 -04:00
2025-10-07 12:23:11 -04:00
2025-10-07 12:23:11 -04:00
2024-11-15 19:31:15 +01:00
2025-06-24 16:25:44 +02:00
2024-11-15 19:31:15 +01:00
2024-11-15 19:31:15 +01:00
2025-06-24 16:25:44 +02:00
2025-10-07 12:23:11 -04:00
2025-06-07 16:02:43 +02:00
2024-11-15 19:31:15 +01:00