diff --git a/crates/ruff_python_formatter/README.md b/crates/ruff_python_formatter/README.md index a87c2056dcd88..4d52242e08b63 100644 --- a/crates/ruff_python_formatter/README.md +++ b/crates/ruff_python_formatter/README.md @@ -537,28 +537,6 @@ def update_emission_strength(): value = self.emission_strength * 2 ``` -#### Type annotations may be parenthesized when expanded ([#7315](https://github.com/astral-sh/ruff/issues/7315)) - -Black will avoid parenthesizing type annotations in an annotated assignment, while Ruff will insert -parentheses in some cases. - -For example: - -```python -# Black -StartElementHandler: Callable[[str, dict[str, str]], Any] | Callable[[str, list[str]], Any] | Callable[ - [str, dict[str, str], list[str]], Any -] | None - -# Ruff -StartElementHandler: ( - Callable[[str, dict[str, str]], Any] - | Callable[[str, list[str]], Any] - | Callable[[str, dict[str, str], list[str]], Any] - | None -) -``` - #### Call chain calls break differently ([#7051](https://github.com/astral-sh/ruff/issues/7051)) Black occasionally breaks call chains differently than Ruff; in particular, Black occasionally diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/ann_assign.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/ann_assign.py index b965199c98260..2e4da78295556 100644 --- a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/ann_assign.py +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/ann_assign.py @@ -1,6 +1,21 @@ # Regression test: Don't forget the parentheses in the value when breaking aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int = a + 1 * a +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() +) + +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +)= Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() + +JSONSerializable: TypeAlias = ( + "str | int | float | bool | None | list | tuple | JSONMapping" +) + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = {1, 2, 3, 4} + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = aaaaaaaaaaaaaaaa # Regression test: Don't forget the parentheses in the annotation when breaking class DefaultRunner: diff --git a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs index a29798d4c3316..f22457cc4b56a 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs @@ -21,12 +21,7 @@ impl FormatNodeRule for FormatStmtAnnAssign { write!( f, - [ - target.format(), - token(":"), - space(), - maybe_parenthesize_expression(annotation, item, Parenthesize::IfBreaks) - ] + [target.format(), token(":"), space(), annotation.format(),] )?; if let Some(value) = value { diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__ann_assign.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__ann_assign.py.snap index 52d136a3bef13..83dcc0fbac867 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@statement__ann_assign.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__ann_assign.py.snap @@ -7,6 +7,21 @@ input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/ # Regression test: Don't forget the parentheses in the value when breaking aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int = a + 1 * a +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() +) + +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +)= Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() + +JSONSerializable: TypeAlias = ( + "str | int | float | bool | None | list | tuple | JSONMapping" +) + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = {1, 2, 3, 4} + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = aaaaaaaaaaaaaaaa # Regression test: Don't forget the parentheses in the annotation when breaking class DefaultRunner: @@ -20,12 +35,35 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int = a + 1 * a ) +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() +) + +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: ( + Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +) = Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb() + +JSONSerializable: TypeAlias = ( + "str | int | float | bool | None | list | tuple | JSONMapping" +) + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = { + 1, + 2, + 3, + 4, +} + +JSONSerializable: str | int | float | bool | None | list | tuple | JSONMapping = ( + aaaaaaaaaaaaaaaa +) + # Regression test: Don't forget the parentheses in the annotation when breaking class DefaultRunner: - task_runner_cls: ( - TaskRunnerProtocol | typing.Callable[[], typing.Any] - ) = DefaultTaskRunner + task_runner_cls: TaskRunnerProtocol | typing.Callable[ + [], typing.Any + ] = DefaultTaskRunner ``` diff --git a/docs/formatter/black.md b/docs/formatter/black.md index 44816f62beb02..d9683c89b02bc 100644 --- a/docs/formatter/black.md +++ b/docs/formatter/black.md @@ -399,28 +399,6 @@ def update_emission_strength(): value = self.emission_strength * 2 ``` -### Type annotations may be parenthesized when expanded - -Black will avoid parenthesizing type annotations in an annotated assignment, while Ruff will insert -parentheses in some cases. - -For example: - -```python -# Black -StartElementHandler: Callable[[str, dict[str, str]], Any] | Callable[[str, list[str]], Any] | Callable[ - [str, dict[str, str], list[str]], Any -] | None - -# Ruff -StartElementHandler: ( - Callable[[str, dict[str, str]], Any] - | Callable[[str, list[str]], Any] - | Callable[[str, dict[str, str], list[str]], Any] - | None -) -``` - ### Call chain calls break differently Black occasionally breaks call chains differently than Ruff; in particular, Black occasionally