Skip to content

Commit

Permalink
Treat walruses like other binary operators in subscripts (#4109)
Browse files Browse the repository at this point in the history
Fixes #4078
  • Loading branch information
RedGuy12 committed Dec 28, 2023
1 parent 5178614 commit c80685f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
3 changes: 3 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@

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

- Fix bug where spaces were not added around parenthesized walruses in subscripts,
unlike other binary operators (#4109)

### Configuration

<!-- Changes to how Black can be configured -->
Expand Down
9 changes: 8 additions & 1 deletion src/black/lines.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,8 +446,15 @@ def is_complex_subscript(self, leaf: Leaf) -> bool:

if subscript_start.type == syms.subscriptlist:
subscript_start = child_towards(subscript_start, leaf)

# When this is moved out of preview, add syms.namedexpr_test directly to
# TEST_DESCENDANTS in nodes.py
if Preview.walrus_subscript in self.mode:
test_decendants = TEST_DESCENDANTS | {syms.namedexpr_test}
else:
test_decendants = TEST_DESCENDANTS
return subscript_start is not None and any(
n.type in TEST_DESCENDANTS for n in subscript_start.pre_order()
n.type in test_decendants for n in subscript_start.pre_order()
)

def enumerate_with_length(
Expand Down
4 changes: 2 additions & 2 deletions tests/data/cases/preview_pep_572.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
x[:(a:=0)]

# output
x[(a := 0):]
x[:(a := 0)]
x[(a := 0) :]
x[: (a := 0)]

0 comments on commit c80685f

Please sign in to comment.