ruff/crates/ruff_python_formatter/src/expression
Charlie Marsh 8ab2519717
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 |
2023-09-18 09:56:41 -04:00
..
binary_like.rs Use CommentRanges in backwards lexing (#7360) 2023-09-16 03:21:45 +00:00
expr_attribute.rs Use CommentRanges in backwards lexing (#7360) 2023-09-16 03:21:45 +00:00
expr_await.rs Fix broken is_expression_parenthesized call from rebase (#7442) 2023-09-16 17:22:16 +00:00
expr_bin_op.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_bool_op.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_call.rs Fix build (#7437) 2023-09-16 14:50:36 +00:00
expr_compare.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_constant.rs Move ExprConstant::kind to StringConstant::unicode (#7180) 2023-09-06 07:39:25 +00:00
expr_dict.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_dict_comp.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_f_string.rs Use the formatter prelude in more files (#6882) 2023-08-25 16:51:07 -04:00
expr_formatted_value.rs Use the formatter prelude in more files (#6882) 2023-08-25 16:51:07 -04:00
expr_generator_exp.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_if_exp.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_ipy_escape_command.rs Memoize text width (#6552) 2023-09-06 07:10:13 +00:00
expr_lambda.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_list.rs Move Ranged into ruff_text_size (#6919) 2023-08-27 14:12:51 -04:00
expr_list_comp.rs Use the formatter prelude in more files (#6882) 2023-08-25 16:51:07 -04:00
expr_name.rs Memoize text width (#6552) 2023-09-06 07:10:13 +00:00
expr_named_expr.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_set.rs Move Ranged into ruff_text_size (#6919) 2023-08-27 14:12:51 -04:00
expr_set_comp.rs Use the formatter prelude in more files (#6882) 2023-08-25 16:51:07 -04:00
expr_slice.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_starred.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_subscript.rs Fix build (#7437) 2023-09-16 14:50:36 +00:00
expr_tuple.rs Introduce Token element (#7048) 2023-09-02 10:05:47 +02:00
expr_unary_op.rs Respect parentheses for precedence in await (#7468) 2023-09-18 09:56:41 -04:00
expr_yield.rs Avoid extra parentheses in yield expressions (#7444) 2023-09-16 14:46:56 -04:00
expr_yield_from.rs Use the formatter prelude in more files (#6882) 2023-08-25 16:51:07 -04:00
mod.rs Use CommentRanges in backwards lexing (#7360) 2023-09-16 03:21:45 +00:00
number.rs Memoize text width (#6552) 2023-09-06 07:10:13 +00:00
operator.rs Split implicit concatenated strings before binary expressions (#7145) 2023-09-08 06:51:26 +00:00
parentheses.rs Use CommentRanges in backwards lexing (#7360) 2023-09-16 03:21:45 +00:00
string.rs Fix ''' ""''' formatting (#7485) 2023-09-18 10:28:15 +00:00