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,3 +91,18 @@ f = "f"[:,]
|
||||
g1 = "g"[(1):(2)]
|
||||
g2 = "g"[(1):(2):(3)]
|
||||
|
||||
# https://github.com/astral-sh/ruff/issues/7316
|
||||
section_header_data = byte_array[
|
||||
byte_begin_index
|
||||
+ byte_step_index * event_index : byte_begin_index
|
||||
+ byte_step_index * (event_index + 1)
|
||||
]
|
||||
|
||||
section_header_data2 = byte_array[
|
||||
byte_begin_index
|
||||
+ byte_step_index * event_index : byte_begin_index
|
||||
+ byte_step_index : section_size
|
||||
]
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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)?;
|
||||
|
||||
@@ -97,6 +97,21 @@ f = "f"[:,]
|
||||
g1 = "g"[(1):(2)]
|
||||
g2 = "g"[(1):(2):(3)]
|
||||
|
||||
# https://github.com/astral-sh/ruff/issues/7316
|
||||
section_header_data = byte_array[
|
||||
byte_begin_index
|
||||
+ byte_step_index * event_index : byte_begin_index
|
||||
+ byte_step_index * (event_index + 1)
|
||||
]
|
||||
|
||||
section_header_data2 = byte_array[
|
||||
byte_begin_index
|
||||
+ byte_step_index * event_index : byte_begin_index
|
||||
+ byte_step_index : section_size
|
||||
]
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
## Output
|
||||
@@ -132,21 +147,25 @@ b1 = "b"[ # a
|
||||
|
||||
# Handle the spacing from the colon correctly with upper leading comments
|
||||
c1 = "c"[
|
||||
1: # e
|
||||
1
|
||||
: # e
|
||||
# f
|
||||
2
|
||||
]
|
||||
c2 = "c"[
|
||||
1: # e
|
||||
1
|
||||
: # e
|
||||
2
|
||||
]
|
||||
c3 = "c"[
|
||||
1:
|
||||
1
|
||||
:
|
||||
# f
|
||||
2
|
||||
]
|
||||
c4 = "c"[
|
||||
1: # f
|
||||
1
|
||||
: # f
|
||||
2
|
||||
]
|
||||
|
||||
@@ -155,7 +174,8 @@ d1 = "d"[ # comment
|
||||
:
|
||||
]
|
||||
d2 = "d"[ # comment
|
||||
1:
|
||||
1
|
||||
:
|
||||
]
|
||||
d3 = "d"[
|
||||
1 # comment
|
||||
@@ -191,6 +211,18 @@ f = "f"[:,]
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/5733
|
||||
g1 = "g"[(1):(2)]
|
||||
g2 = "g"[(1):(2):(3)]
|
||||
|
||||
# https://github.com/astral-sh/ruff/issues/7316
|
||||
section_header_data = byte_array[
|
||||
byte_begin_index + byte_step_index * event_index
|
||||
: byte_begin_index + byte_step_index * (event_index + 1)
|
||||
]
|
||||
|
||||
section_header_data2 = byte_array[
|
||||
byte_begin_index + byte_step_index * event_index
|
||||
: byte_begin_index + byte_step_index
|
||||
: section_size
|
||||
]
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -175,7 +175,8 @@ raise ( # hey 2
|
||||
|
||||
# some comment
|
||||
raise aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa[
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
:bbbbbbbbbbbbbbbbbbbbbbbbbb
|
||||
]
|
||||
|
||||
raise (
|
||||
|
||||
Reference in New Issue
Block a user