Skip to content

Commit

Permalink
Fix #3638: Do not add trailing commas to return type annotations usin…
Browse files Browse the repository at this point in the history
…g PEP 604 unions.
  • Loading branch information
yilei committed Jun 15, 2023
1 parent 35722df commit 0ce244d
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

<!-- Changes that affect Black's stable style -->

- Fix a bug where an illegal trailing comma was added to return type annotations using
PEP 604 unions (#3735)

### Preview style

<!-- Changes that affect Black's preview style -->
Expand Down
7 changes: 7 additions & 0 deletions src/black/linegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,13 @@ def bracket_split_build_line(
)
if isinstance(node, Node) and isinstance(node.prev_sibling, Leaf)
)
# Except the false negatives above for PEP 604 unions where we
# can't add the comma.
and not (
leaves[0].parent
and leaves[0].parent.next_sibling
and leaves[0].parent.next_sibling.type == token.VBAR
)
)

if original.is_import or no_commas:
Expand Down
25 changes: 25 additions & 0 deletions tests/data/simple_cases/pep_604.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
def some_very_long_name_function() -> my_module.Asdf | my_module.AnotherType | my_module.YetAnotherType | None:
pass


def some_very_long_name_function() -> my_module.Asdf | my_module.AnotherType | my_module.YetAnotherType | my_module.EvenMoreType | None:
pass


# output


def some_very_long_name_function() -> (
my_module.Asdf | my_module.AnotherType | my_module.YetAnotherType | None
):
pass


def some_very_long_name_function() -> (
my_module.Asdf
| my_module.AnotherType
| my_module.YetAnotherType
| my_module.EvenMoreType
| None
):
pass

0 comments on commit 0ce244d

Please sign in to comment.