Fix long trivial assignments being wrapped in unnecessary parentheses

Fixes #273
This commit is contained in:
Łukasz Langa 2018-06-04 20:24:50 -07:00
parent 7fc6ce9906
commit 23a00f0515
3 changed files with 17 additions and 4 deletions

View File

@ -719,6 +719,8 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
* the header output in `--diff` now actually conforms to the unified diff spec * the header output in `--diff` now actually conforms to the unified diff spec
* fixed long trivial assignments being wrapped in unnecessary parentheses (#273)
* fixed stdin handling not working correctly if an old version of Click was * fixed stdin handling not working correctly if an old version of Click was
used (#276) used (#276)

View File

@ -2213,11 +2213,14 @@ def right_hand_split(
result.append(leaf, preformatted=True) result.append(leaf, preformatted=True)
for comment_after in line.comments_after(leaf): for comment_after in line.comments_after(leaf):
result.append(comment_after, preformatted=True) result.append(comment_after, preformatted=True)
bracket_split_succeeded_or_raise(head, body, tail)
assert opening_bracket and closing_bracket assert opening_bracket and closing_bracket
body.should_explode = should_explode(body, opening_bracket)
bracket_split_succeeded_or_raise(head, body, tail)
if ( if (
# the body shouldn't be exploded
not body.should_explode
# the opening bracket is an optional paren # the opening bracket is an optional paren
opening_bracket.type == token.LPAR and opening_bracket.type == token.LPAR
and not opening_bracket.value and not opening_bracket.value
# the closing bracket is an optional paren # the closing bracket is an optional paren
and closing_bracket.type == token.RPAR and closing_bracket.type == token.RPAR
@ -2234,11 +2237,15 @@ def right_hand_split(
yield from right_hand_split(line, line_length, py36=py36, omit=omit) yield from right_hand_split(line, line_length, py36=py36, omit=omit)
return return
except CannotSplit: except CannotSplit:
pass if len(body.leaves) == 1 and not is_line_short_enough(
body, line_length=line_length
):
raise CannotSplit(
"Splitting failed, body is still too long and can't be split."
)
ensure_visible(opening_bracket) ensure_visible(opening_bracket)
ensure_visible(closing_bracket) ensure_visible(closing_bracket)
body.should_explode = should_explode(body, opening_bracket)
for result in (head, body, tail): for result in (head, body, tail):
if result: if result:
yield result yield result

View File

@ -25,6 +25,9 @@
"eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs", "eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs",
this_is_a_ridiculously_long_name_and_nobody_in_their_right_mind_would_use_one_like_it=0, this_is_a_ridiculously_long_name_and_nobody_in_their_right_mind_would_use_one_like_it=0,
) )
string_variable_name = (
"a string that is waaaaaaaayyyyyyyy too long, even in parens, there's nothing you can do" # noqa
)
# output # output
@ -67,3 +70,4 @@
"eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs", "eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs with spam and eggs and spam with eggs",
this_is_a_ridiculously_long_name_and_nobody_in_their_right_mind_would_use_one_like_it=0, this_is_a_ridiculously_long_name_and_nobody_in_their_right_mind_would_use_one_like_it=0,
) )
string_variable_name = "a string that is waaaaaaaayyyyyyyy too long, even in parens, there's nothing you can do" # noqa