diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/slice.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/slice.py index 3b30f67cd49bca..c8921aa913717e 100644 --- a/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/slice.py +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/slice.py @@ -91,3 +91,18 @@ def a(): 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 +] + + + diff --git a/crates/ruff_python_formatter/src/expression/expr_slice.rs b/crates/ruff_python_formatter/src/expression/expr_slice.rs index c8177e9f8019af..093ae9654d2c5f 100644 --- a/crates/ruff_python_formatter/src/expression/expr_slice.rs +++ b/crates/ruff_python_formatter/src/expression/expr_slice.rs @@ -91,7 +91,7 @@ impl FormatNodeRule 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 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)?; diff --git a/crates/ruff_python_formatter/tests/snapshots/format@expression__slice.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@expression__slice.py.snap index 482cd452c1d02f..784c172060eef4 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@expression__slice.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@expression__slice.py.snap @@ -97,6 +97,14 @@ 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) +] + + ``` ## Output @@ -132,21 +140,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 +167,8 @@ d1 = "d"[ # comment : ] d2 = "d"[ # comment - 1: + 1 + : ] d3 = "d"[ 1 # comment @@ -191,6 +204,12 @@ 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) +] ``` diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__raise.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__raise.py.snap index 46637a35435a41..c4a14df0ff6d8e 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@statement__raise.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__raise.py.snap @@ -175,7 +175,8 @@ raise ( # hey 2 # some comment raise aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa[ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbb + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + :bbbbbbbbbbbbbbbbbbbbbbbbbb ] raise (