Skip to content

Commit dd2d8cb

Browse files
authored
Avoid parenthesizing unsplittable because of comments (#8431)
1 parent a08c5b7 commit dd2d8cb

File tree

8 files changed

+781
-35
lines changed

8 files changed

+781
-35
lines changed
Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
comment_string = "Long lines with inline comments should have their comments appended to the reformatted string's enclosing right parentheses." # This comment gets thrown to the top.
2+
3+
# 88 characters unparenthesized
4+
____aaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvv # c
5+
6+
# 88 characters
7+
____aaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv # c
8+
9+
# 89 characters parenthesized (collapse)
10+
____aaa = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
11+
12+
## Parenthesized
13+
14+
# 88 characters unparenthesized
15+
____aaa = (
16+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvv # c
17+
)
18+
19+
# 88 characters
20+
____aaa = (
21+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv # c
22+
)
23+
24+
# 89 characters parenthesized (collapse)
25+
____aaa = (
26+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
27+
)
28+
29+
## Expression and statement comments
30+
31+
# 88 characters unparenthesized
32+
____aaa = (
33+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb # c
34+
) # d
35+
36+
# 88 characters
37+
____aaa = (
38+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvv # c
39+
) # d
40+
41+
# 89 characters parenthesized (collapse)
42+
____aaa = (
43+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvv # c
44+
) # d
45+
46+
## Strings
47+
48+
# 88 characters unparenthesized
49+
____aaa = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvv" # c
50+
51+
# 88 characters
52+
____aaa = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv" # c
53+
54+
# 89 characters parenthesized (collapse)
55+
____aaa = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv" # c
56+
57+
# Always parenthesize if implicit concatenated
58+
____aaa = (
59+
"aaaaaaaaaaaaaaaaaaaaa" "aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvvvvv"
60+
) # c
61+
62+
## Numbers
63+
64+
# 88 characters unparenthesized
65+
____aaa = 1111111111111111111111111111111111111111111111111111111111111111111111111 # c
66+
67+
# 88 characters
68+
____aaa = 1111111111111111111111111111111111111111111111111111111111111111111111111111111 # c
69+
70+
# 89 characters parenthesized (collapse)
71+
____aaa = 11111111111111111111111111111111111111111111111111111111111111111111111111111111 # c
72+
73+
## Breaking left
74+
75+
# Should break `[a]` first
76+
____[a] = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv # c
77+
78+
____[
79+
a
80+
] = (
81+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv # cc
82+
)
83+
84+
(
85+
# some weird comments
86+
____[aaaaaaaaa]
87+
# some weird comments 2
88+
) = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv # c
89+
90+
# Preserve trailing assignment comments when the expression has own line comments
91+
____aaa = (
92+
# leading
93+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv
94+
# trailing
95+
) # cc
96+
97+
def setUpTestData(cls):
98+
cls.happening = (
99+
Happening.objects.create()
100+
) # make sure the defaults are working (#20158)
101+
102+
def setUpTestData(cls):
103+
cls.happening = (
104+
Happening.objects.create # make sure the defaults are working (#20158)
105+
)
106+
107+
if True:
108+
if True:
109+
if True:
110+
# Black layout
111+
model.config.use_cache = (
112+
False # FSTM still requires this hack -> FSTM should probably be refactored s
113+
)
114+
115+
## Annotated Assign
116+
117+
# 88 characters unparenthesized
118+
____a: a = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvv # c
119+
120+
# 88 characters
121+
____a: a = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv # c
122+
123+
# 89 characters parenthesized (collapse)
124+
____a: a = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
125+
126+
# 88 characters unparenthesized
127+
____a : a = (
128+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvv # c
129+
)
130+
131+
# 88 characters
132+
____a: a = (
133+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvv # c
134+
)
135+
136+
# 89 characters parenthesized (collapse)
137+
____a: a = (
138+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
139+
)
140+
141+
_a: a[b] = (
142+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
143+
)
144+
145+
## Augmented Assign
146+
147+
# 88 characters unparenthesized
148+
____aa += aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvv # c
149+
150+
# 88 characters
151+
____aa += aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv # c
152+
153+
# 89 characters parenthesized (collapse)
154+
____aa += aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
155+
156+
# 88 characters unparenthesized
157+
____aa += (
158+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvv # c
159+
)
160+
161+
# 88 characters
162+
____aa += (
163+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvv # c
164+
)
165+
166+
# 89 characters parenthesized (collapse)
167+
____aa += (
168+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvvvvvv # c
169+
)
170+
171+
## Return
172+
173+
def test():
174+
# 88 characters unparenthesized
175+
return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvv # c
176+
177+
def test2():
178+
# 88 characters
179+
return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvv # c
180+
181+
def test3():
182+
# 89 characters parenthesized (collapse)
183+
return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvv # c
184+
185+
## Return Parenthesized
186+
187+
def test4():
188+
# 88 characters unparenthesized
189+
return (
190+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvv # c
191+
)
192+
193+
def test5():
194+
# 88 characters
195+
return (
196+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvv # c
197+
)
198+
199+
def test6():
200+
# 89 characters parenthesized (collapse)
201+
return (
202+
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbvvvvvvvv # c
203+
)
204+
205+
206+

crates/ruff_python_formatter/src/expression/expr_await.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl FormatNodeRule<ExprAwait> for FormatExprAwait {
2020
[
2121
token("await"),
2222
space(),
23-
maybe_parenthesize_expression(value, item, Parenthesize::IfBreaks)
23+
maybe_parenthesize_expression(value, item, Parenthesize::IfRequired)
2424
]
2525
)
2626
}
@@ -39,6 +39,7 @@ impl NeedsParentheses for ExprAwait {
3939
context.comments().ranges(),
4040
context.source(),
4141
) {
42+
// Prefer splitting the value if it is parenthesized.
4243
OptionalParentheses::Never
4344
} else {
4445
self.value.needs_parentheses(self.into(), context)

crates/ruff_python_formatter/src/expression/expr_yield.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ impl NeedsParentheses for AnyExpressionYield<'_> {
5959
OptionalParentheses::Never
6060
} else {
6161
// Ex) `x = yield f(1, 2, 3)`
62-
value.needs_parentheses(self.into(), context)
62+
match value.needs_parentheses(self.into(), context) {
63+
OptionalParentheses::BestFit => OptionalParentheses::Never,
64+
parentheses => parentheses,
65+
}
6366
}
6467
} else {
6568
// Ex) `x = yield`

0 commit comments

Comments
 (0)