Skip to content

Commit 9afc3fd

Browse files
committed
Parenthesize single element tuples in yield expressions
Fixes #3851
1 parent bbdc28e commit 9afc3fd

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/black/linegen.py

+16
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,21 @@ def visit_stmt(
216216

217217
yield from self.visit(child)
218218

219+
def visit_yield_expr(self, node: Node) -> Iterator[Line]:
220+
"""
221+
If a "yield expr", treat similarly to "return expr",
222+
but if it is a "yield from expr", treat expr as a group
223+
"""
224+
content = node.children[1]
225+
if content.type != syms.yield_arg:
226+
# this is a "yield expr"
227+
yield from self.visit_stmt(node, keywords=set(), parens={"yield"})
228+
return
229+
# this is a "yield from expr"
230+
assert isinstance(content, Node)
231+
wrap_in_parentheses(content, content.children[1], visible=False)
232+
yield from self.visit_default(node)
233+
219234
def visit_typeparams(self, node: Node) -> Iterator[Line]:
220235
yield from self.visit_default(node)
221236
node.children[0].prefix = ""
@@ -1414,6 +1429,7 @@ def maybe_make_parens_invisible_in_atom(
14141429
syms.expr_stmt,
14151430
syms.assert_stmt,
14161431
syms.return_stmt,
1432+
syms.yield_expr,
14171433
syms.except_clause,
14181434
syms.funcdef,
14191435
syms.with_stmt,

0 commit comments

Comments
 (0)