mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 20:42:10 +00:00
Avoiding grouping comprehension targets separately from conditions (#7429)
## Summary Black seems to treat comprehension targets and conditions as if they're in a single group -- so if the comprehension expands, all conditions are rendered on their own line, etc. Closes https://github.com/astral-sh/ruff/issues/7421. ## 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.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 |
This commit is contained in:
parent
22770fb4be
commit
7e2eba2592
3 changed files with 89 additions and 13 deletions
|
@ -56,16 +56,14 @@ impl FormatNodeRule<Comprehension> for FormatComprehension {
|
|||
[
|
||||
token("for"),
|
||||
trailing_comments(before_target_comments),
|
||||
group(&format_args!(
|
||||
Spacer(target),
|
||||
ExprTupleWithoutParentheses(target),
|
||||
in_spacer,
|
||||
leading_comments(before_in_comments),
|
||||
token("in"),
|
||||
trailing_comments(trailing_in_comments),
|
||||
Spacer(iter),
|
||||
iter.format(),
|
||||
)),
|
||||
Spacer(target),
|
||||
ExprTupleWithoutParentheses(target),
|
||||
in_spacer,
|
||||
leading_comments(before_in_comments),
|
||||
token("in"),
|
||||
trailing_comments(trailing_in_comments),
|
||||
Spacer(iter),
|
||||
iter.format(),
|
||||
]
|
||||
)?;
|
||||
if !ifs.is_empty() {
|
||||
|
@ -79,18 +77,18 @@ impl FormatNodeRule<Comprehension> for FormatComprehension {
|
|||
dangling_if_comments
|
||||
.partition_point(|comment| comment.line_position().is_own_line()),
|
||||
);
|
||||
joiner.entry(&group(&format_args!(
|
||||
joiner.entry(&format_args!(
|
||||
leading_comments(own_line_if_comments),
|
||||
token("if"),
|
||||
trailing_comments(end_of_line_if_comments),
|
||||
Spacer(if_case),
|
||||
if_case.format(),
|
||||
)));
|
||||
));
|
||||
}
|
||||
joiner.finish()
|
||||
});
|
||||
|
||||
write!(f, [soft_line_break_or_space(), group(&joined)])?;
|
||||
write!(f, [soft_line_break_or_space(), joined])?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue