Skip to content

Avoid extra parentheses in await expressions#7424

Merged
charliermarsh merged 1 commit intomainfrom
charlie/await
Sep 16, 2023
Merged

Avoid extra parentheses in await expressions#7424
charliermarsh merged 1 commit intomainfrom
charlie/await

Conversation

@charliermarsh
Copy link
Member

@charliermarsh charliermarsh commented Sep 15, 2023

Summary

This PR aligns the await parenthesizing with the unary case, which is: if the value is already parenthesized, avoid parenthesizing; otherwise, only parenthesize if the value needs parenthesizing.

Closes #7420.

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 399
twine 1.00000 33 0
typeshed 0.99983 3496 18
warehouse 0.99923 648 18
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 399
twine 1.00000 33 0
typeshed 0.99983 3496 18
warehouse 0.99923 648 18
zulip 0.99962 1437 22

@charliermarsh charliermarsh marked this pull request as draft September 15, 2023 21:34
@charliermarsh charliermarsh added the formatter Related to the formatter label Sep 15, 2023
@charliermarsh
Copy link
Member Author

Draft for now, I need to explore this with the unary operator formatting.

@charliermarsh charliermarsh force-pushed the charlie/await branch 2 times, most recently from bcd37e5 to 7fd8e93 Compare September 15, 2023 21:53
@charliermarsh charliermarsh marked this pull request as ready for review September 16, 2023 02:15
Copy link
Member

@MichaReiser MichaReiser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need the same for yield, raise and other keyword starting expressions?

Please verify that the PR doesn't regress the similarity index for our test projects and update the PR summary with the metrics.

charliermarsh added a commit that referenced this pull request Sep 16, 2023
## Summary

This PR applies a similar fix to unary expressions as in
#7424. Specifically, we only need
to parenthesize the entire operator if the operand itself doesn't have
parentheses, and requires parentheses.

Closes #7423.

## 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 | 399 |
| twine | 1.00000 | 33 | 0 |
| typeshed | 0.99983 | 3496 | 18 |
| warehouse | 0.99923 | 648 | 18 |
| 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 | 399 |
| twine | 1.00000 | 33 | 0 |
| typeshed | 0.99983 | 3496 | 18 |
| warehouse | 0.99923 | 648 | 18 |
| zulip | 0.99962 | 1437 | 22 |
@charliermarsh
Copy link
Member Author

Will look into yield and raise.

@charliermarsh charliermarsh merged commit 22770fb into main Sep 16, 2023
@charliermarsh charliermarsh deleted the charlie/await branch September 16, 2023 17:10
@charliermarsh
Copy link
Member Author

raise is not necessary since it's a statement, not an expression. yield needs some work.

charliermarsh added a commit that referenced this pull request Sep 16, 2023
## Summary

This is equivalent to #7424, but
for `yield` and `yield from` expressions. Specifically, we want to avoid
adding unnecessary extra parentheses for `yield expr` when `expr` itself
does not require parentheses.

## Test Plan

`cargo test`

No change in any of the similarity metrics.

Before:

| project | similarity index | total files | changed files |

|--------------|------------------:|------------------:|------------------:|
| cpython | 0.76083 | 1789 | 1632 |
| django | 0.99982 | 2760 | 37 |
| transformers | 0.99957 | 2587 | 399 |
| 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 | 399 |
| twine | 1.00000 | 33 | 0 |
| typeshed | 0.99983 | 3496 | 18 |
| warehouse | 0.99929 | 648 | 16 |
| zulip | 0.99962 | 1437 | 22 |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

formatter Related to the formatter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Formatter incompatibility: extra parentheses around await assignment

2 participants