Skip to content

Commit c7aa816

Browse files
authored
Split tuples in return positions by comma first (#8280)
1 parent 3ccca33 commit c7aa816

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/return.py

+32
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,35 @@
1414
len(node.parents) for node in self.node_map.values()
1515
)
1616
)
17+
18+
# Regression tests for https://github.com/astral-sh/ruff/issues/8042
19+
def f():
20+
return (
21+
self.get_filename() + ".csv" +
22+
"text/csv" +
23+
output.getvalue().encode("utf-8----------------"),
24+
)
25+
26+
27+
def f():
28+
return (
29+
self.get_filename() + ".csv" + "text/csv",
30+
output.getvalue().encode("utf-8----------------")
31+
)
32+
33+
def f():
34+
return (
35+
self.get_filename() + ".csv",
36+
"text/csv",
37+
output.getvalue().encode("utf-8----------------")
38+
)
39+
40+
41+
def f():
42+
return self.get_filename() + ".csv" + "text/csv" + output.getvalue().encode("utf-8----------------"),
43+
44+
def f():
45+
return self.get_filename() + ".csv" + "text/csv", output.getvalue().encode("utf-8----------------")
46+
47+
def f():
48+
return self.get_filename() + ".csv", "text/csv", output.getvalue().encode("utf-8----------------")

crates/ruff_python_formatter/src/expression/expr_tuple.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,13 @@ impl FormatNodeRule<ExprTuple> for FormatExprTuple {
172172
.finish()
173173
}
174174
TupleParentheses::Preserve => group(&ExprSequence::new(item)).fmt(f),
175-
TupleParentheses::NeverPreserve | TupleParentheses::OptionalParentheses => {
175+
TupleParentheses::NeverPreserve => {
176176
optional_parentheses(&ExprSequence::new(item)).fmt(f)
177177
}
178-
TupleParentheses::Default => {
178+
TupleParentheses::OptionalParentheses if item.elts.len() == 2 => {
179+
optional_parentheses(&ExprSequence::new(item)).fmt(f)
180+
}
181+
TupleParentheses::Default | TupleParentheses::OptionalParentheses => {
179182
parenthesize_if_expands(&ExprSequence::new(item)).fmt(f)
180183
}
181184
},

crates/ruff_python_formatter/tests/snapshots/format@statement__return.py.snap

+80
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,38 @@ return (
2020
len(node.parents) for node in self.node_map.values()
2121
)
2222
)
23+
24+
# Regression tests for https://github.com/astral-sh/ruff/issues/8042
25+
def f():
26+
return (
27+
self.get_filename() + ".csv" +
28+
"text/csv" +
29+
output.getvalue().encode("utf-8----------------"),
30+
)
31+
32+
33+
def f():
34+
return (
35+
self.get_filename() + ".csv" + "text/csv",
36+
output.getvalue().encode("utf-8----------------")
37+
)
38+
39+
def f():
40+
return (
41+
self.get_filename() + ".csv",
42+
"text/csv",
43+
output.getvalue().encode("utf-8----------------")
44+
)
45+
46+
47+
def f():
48+
return self.get_filename() + ".csv" + "text/csv" + output.getvalue().encode("utf-8----------------"),
49+
50+
def f():
51+
return self.get_filename() + ".csv" + "text/csv", output.getvalue().encode("utf-8----------------")
52+
53+
def f():
54+
return self.get_filename() + ".csv", "text/csv", output.getvalue().encode("utf-8----------------")
2355
```
2456

2557
## Output
@@ -38,6 +70,54 @@ return (
3870
len(self.nodeseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee),
3971
sum(len(node.parents) for node in self.node_map.values()),
4072
)
73+
74+
75+
# Regression tests for https://github.com/astral-sh/ruff/issues/8042
76+
def f():
77+
return (
78+
self.get_filename()
79+
+ ".csv"
80+
+ "text/csv"
81+
+ output.getvalue().encode("utf-8----------------"),
82+
)
83+
84+
85+
def f():
86+
return (
87+
self.get_filename() + ".csv" + "text/csv",
88+
output.getvalue().encode("utf-8----------------"),
89+
)
90+
91+
92+
def f():
93+
return (
94+
self.get_filename() + ".csv",
95+
"text/csv",
96+
output.getvalue().encode("utf-8----------------"),
97+
)
98+
99+
100+
def f():
101+
return (
102+
self.get_filename()
103+
+ ".csv"
104+
+ "text/csv"
105+
+ output.getvalue().encode("utf-8----------------"),
106+
)
107+
108+
109+
def f():
110+
return self.get_filename() + ".csv" + "text/csv", output.getvalue().encode(
111+
"utf-8----------------"
112+
)
113+
114+
115+
def f():
116+
return (
117+
self.get_filename() + ".csv",
118+
"text/csv",
119+
output.getvalue().encode("utf-8----------------"),
120+
)
41121
```
42122

43123

0 commit comments

Comments
 (0)