mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-26 11:59:10 +00:00
Respect parentheses for precedence in await
(#7468)
## Summary We were using `Parenthesize::IfBreaks` universally for `await`, but dropping parentheses can change the AST due to precedence. It turns out that Black's rules aren't _exactly_ the same as operator precedence (e.g., they leave parentheses around `await ([1, 2, 3])`, although they aren't strictly required). Closes https://github.com/astral-sh/ruff/issues/7467. ## Test Plan `cargo test` No change in similarity. Before: | project | similarity index | total files | changed files | |--------------|------------------:|------------------:|------------------:| | cpython | 0.76083 | 1789 | 1632 | | django | 0.99982 | 2760 | 37 | | transformers | 0.99957 | 2587 | 398 | | twine | 1.00000 | 33 | 0 | | typeshed | 0.99983 | 3496 | 18 | | warehouse | 0.99929 | 648 | 16 | | zulip | 0.99962 | 1437 | 22 | After: | project | similarity index | total files | changed files | |--------------|------------------:|------------------:|------------------:| | cpython | 0.76083 | 1789 | 1632 | | django | 0.99982 | 2760 | 37 | | transformers | 0.99957 | 2587 | 398 | | twine | 1.00000 | 33 | 0 | | typeshed | 0.99983 | 3496 | 18 | | warehouse | 0.99929 | 648 | 16 | | zulip | 0.99962 | 1437 | 22 |
This commit is contained in:
parent
c4d85d6fb6
commit
8ab2519717
10 changed files with 165 additions and 14 deletions
|
@ -305,3 +305,21 @@ import os
|
|||
|
||||
import sys
|
||||
```
|
||||
|
||||
### Parentheses around awaited collections are not preserved
|
||||
|
||||
Black preserves parentheses around awaited collections:
|
||||
|
||||
```python
|
||||
await ([1, 2, 3])
|
||||
```
|
||||
|
||||
Ruff will instead remove them:
|
||||
|
||||
```python
|
||||
await [1, 2, 3]
|
||||
```
|
||||
|
||||
This is more consistent to the formatting of other awaited expressions: Ruff and Black both
|
||||
remove parentheses around, e.g., `await (1)`, only retaining them when syntactically required,
|
||||
as in, e.g., `await (x := 1)`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue