Break before slice colon
**Summary** Break slices at the colon first, since the colon is separator with the lowest precedence and we're in a parenthesized context.
**Input**
```python
section_header_data = byte_array[byte_begin_index + byte_step_index * event_index : byte_begin_index + byte_step_index * (event_index + 1)]
```
**Black**
```python
section_header_data = byte_array[
byte_begin_index
+ byte_step_index * event_index : byte_begin_index
+ byte_step_index * (event_index + 1)
]
```
**Current formatting**
```python
section_header_data = byte_array[
byte_begin_index + byte_step_index * event_index : byte_begin_index
+ byte_step_index * (event_index + 1)
]
```
**Proposed formatting**
```python
section_header_data = byte_array[
byte_begin_index + byte_step_index * event_index
: byte_begin_index + byte_step_index * (event_index + 1)
]
```
This is another intentional black deviation, but i find it a clear style improvement.
This is consistent with adding a step:
```python
section_header_data2 = byte_array[
byte_begin_index + byte_step_index * event_index
: byte_begin_index + byte_step_index
: section_size
]
```
As-is, this regresses trailing colon comments:
**in**
```python
c1 = "c"[
1: # e
# f
2
]
```
**out**
```python
c1 = "c"[
1
: # e
# f
2
]
```
Fixes #7316
**Test Plan** Added the fixtures above.
This commit is contained in:
@@ -91,7 +91,7 @@ impl FormatNodeRule<ExprSlice> for FormatExprSlice {
|
||||
if !all_simple && lower.is_some() {
|
||||
space().fmt(f)?;
|
||||
}
|
||||
token(":").fmt(f)?;
|
||||
write!(f, [soft_line_break(), token(":")])?;
|
||||
// No upper node, no need for a space, e.g. `x[a() :]`
|
||||
if !all_simple && upper.is_some() {
|
||||
space().fmt(f)?;
|
||||
@@ -125,7 +125,7 @@ impl FormatNodeRule<ExprSlice> for FormatExprSlice {
|
||||
if !all_simple && (upper.is_some() || step.is_none()) {
|
||||
space().fmt(f)?;
|
||||
}
|
||||
token(":").fmt(f)?;
|
||||
write!(f, [soft_line_break(), token(":")])?;
|
||||
// No step node, no need for a space
|
||||
if !all_simple && step.is_some() {
|
||||
space().fmt(f)?;
|
||||
|
||||
Reference in New Issue
Block a user