Skip to content

Commit

Permalink
Expand parents whenever open-parenthesis comments are present (#6389)
Browse files Browse the repository at this point in the history
## Summary

This PR modifies our dangling-open-parenthesis handling to _always_
expand the parent expression.

So, for example, given:

```python
a = int(  # type: ignore
    int(  # type: ignore
        int(  # type: ignore
            6
        )
    )
)
```

We now retain that as stable formatting, instead of truncating like:

```python
a = int(int(int(6)))  # comment  # comment  # comment
```

Note that Black _does_ collapse comments like this _unless_ they're `#
type: ignore` comments, and perhaps in some other cases, so this is an
intentional deviation
([playground](https://black.vercel.app/?version=main&state=_Td6WFoAAATm1rRGAgAhARYAAAB0L-Wj4AFEAHpdAD2IimZxl1N_WlOfrjryFgvD4ScVsKPztqdHDGJUg5knO0JCdpUfW1IrWSNmIJPx95s0hP-pRNkCQNH64-eIznIvXjeWBQ5-qax0oNw4yMOuhwr2azvMRZaEB5r8IXVPHmRCJp7fe7y4290u1zzxqK_nAi6q_5sI-jsAAAAA8HgZ9V7hG3QAAZYBxQIAAGnCHXexxGf7AgAAAAAEWVo=)).
  • Loading branch information
charliermarsh authored Aug 8, 2023
1 parent 6aefe71 commit 87984e9
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 25 deletions.
9 changes: 4 additions & 5 deletions crates/ruff_python_formatter/src/comments/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,10 @@ impl Format<PyFormatContext<'_>> for FormatDanglingOpenParenthesisComments<'_> {

write!(
f,
[line_suffix(&format_args![
space(),
space(),
format_comment(comment)
])]
[
line_suffix(&format_args![space(), space(), format_comment(comment)]),
expand_parent()
]
)?;
comment.mark_formatted();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,32 @@ print( "111" ) # type: ignore
```diff
--- Black
+++ Ruff
@@ -1,12 +1,6 @@
@@ -1,9 +1,9 @@
# This is a regression test. Issue #3737
-a = ( # type: ignore
- int( # type: ignore
- int( # type: ignore
+a = int( # type: ignore # type: ignore
int( # type: ignore
int( # type: ignore
- int(6) # type: ignore
- )
- )
-)
+a = int(int(int(6))) # type: ignore # type: ignore # type: ignore # type: ignore
b = int(6)
+ 6
)
)
)
```

## Ruff Output

```py
# This is a regression test. Issue #3737
a = int(int(int(6))) # type: ignore # type: ignore # type: ignore # type: ignore
a = int( # type: ignore # type: ignore
int( # type: ignore
int( # type: ignore
6
)
)
)
b = int(6)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,15 @@ assert (
) #
assert sort_by_dependency(
@@ -25,9 +25,7 @@
@@ -25,9 +25,9 @@
class A:
def foo(self):
for _ in range(10):
- aaaaaaaaaaaaaaaaaaa = bbbbbbbbbbbbbbb.cccccccccc(
- xxxxxxxxxxxx
+ aaaaaaaaaaaaaaaaaaa = bbbbbbbbbbbbbbb.cccccccccc( # pylint: disable=no-member
xxxxxxxxxxxx
- ) # pylint: disable=no-member
+ aaaaaaaaaaaaaaaaaaa = bbbbbbbbbbbbbbb.cccccccccc(xxxxxxxxxxxx) # pylint: disable=no-member
+ )
def test(self, othr):
Expand Down Expand Up @@ -93,7 +94,9 @@ importA
class A:
def foo(self):
for _ in range(10):
aaaaaaaaaaaaaaaaaaa = bbbbbbbbbbbbbbb.cccccccccc(xxxxxxxxxxxx) # pylint: disable=no-member
aaaaaaaaaaaaaaaaaaa = bbbbbbbbbbbbbbb.cccccccccc( # pylint: disable=no-member
xxxxxxxxxxxx
)
def test(self, othr):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,9 @@ f(
# abc
)
f(1) # abc
f( # abc
1
)
f(
# abc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,10 @@ selected_choices = {
{
k: v
for (x, aaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaay) in z # foo
for ( # foo
x,
aaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaayaaaay,
) in z
}
a = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,15 @@ c1 = [ # trailing open bracket
# own-line comment
]
[1] # end-of-line comment
[ # end-of-line comment
1
]
[first, second, third] # inner comment # outer comment
[ # inner comment
first,
second,
third,
] # outer comment
```


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -886,7 +886,9 @@ def f( # first
...


def f(a): # first # second
def f( # first
a
): # second
...


Expand Down

0 comments on commit 87984e9

Please sign in to comment.