Account for += assignment when deciding whether to split string (#2312)

Fixes #2294
This commit is contained in:
Bryan Bugyi 2021-06-07 10:01:57 -04:00 committed by GitHub
parent c53b3ad8fa
commit 6380b9f2f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 1 deletions

View File

@ -4,6 +4,7 @@
### _Black_ ### _Black_
- Account for += assignment when deciding whether to split string (#2312)
- Correct max string length calculation when there are string operators (#2292) - Correct max string length calculation when there are string operators (#2292)
- Fixed option usage when using the `--code` flag (#2259) - Fixed option usage when using the `--code` flag (#2259)
- Do not call `uvloop.install()` when _Black_ is used as a library (#2303) - Do not call `uvloop.install()` when _Black_ is used as a library (#2303)

View File

@ -867,7 +867,7 @@ def _get_max_string_length(self, line: Line, string_idx: int) -> int:
# WMA4 a space, a comma, and a closing bracket [e.g. `), STRING`]. # WMA4 a space, a comma, and a closing bracket [e.g. `), STRING`].
offset += 3 offset += 3
if P.type in [token.COLON, token.EQUAL, token.NAME]: if P.type in [token.COLON, token.EQUAL, token.PLUSEQUAL, token.NAME]:
# This conditional branch is meant to handle dictionary keys, # This conditional branch is meant to handle dictionary keys,
# variable assignments, 'return STRING' statement lines, and # variable assignments, 'return STRING' statement lines, and
# 'else STRING' ternary expression lines. # 'else STRING' ternary expression lines.

View File

@ -32,6 +32,9 @@
assert str(result) == "This long string should be split at some point right close to or around hereeeeeee" assert str(result) == "This long string should be split at some point right close to or around hereeeeeee"
assert str(result) < "This long string should be split at some point right close to or around hereeeeee" assert str(result) < "This long string should be split at some point right close to or around hereeeeee"
assert "A format string: %s" % "This long string should be split at some point right close to or around hereeeeeee" != result assert "A format string: %s" % "This long string should be split at some point right close to or around hereeeeeee" != result
msg += "This long string should be wrapped in parens at some point right around hereeeee"
msg += "This long string should be split at some point right close to or around hereeeeeeee"
msg += "This long string should not be split at any point ever since it is just righttt"
# output # output
@ -127,3 +130,11 @@
" hereeeeeee" " hereeeeeee"
!= result != result
) )
msg += (
"This long string should be wrapped in parens at some point right around hereeeee"
)
msg += (
"This long string should be split at some point right close to or around"
" hereeeeeeee"
)
msg += "This long string should not be split at any point ever since it is just righttt"

View File

@ -407,6 +407,16 @@ def _legacy_listen_examples():
) )
class X:
async def foo(self):
msg = ""
for candidate in CANDIDATES:
msg += (
"**{candidate.object_type} {candidate.rev}**"
" - {candidate.description}\n"
)
temp_msg = ( temp_msg = (
f"{f'{humanize_number(pos)}.': <{pound_len+2}} " f"{f'{humanize_number(pos)}.': <{pound_len+2}} "
f"{balance: <{bal_len + 5}} " f"{balance: <{bal_len + 5}} "
@ -948,6 +958,16 @@ def _legacy_listen_examples():
) )
class X:
async def foo(self):
msg = ""
for candidate in CANDIDATES:
msg += (
"**{candidate.object_type} {candidate.rev}**"
" - {candidate.description}\n"
)
temp_msg = ( temp_msg = (
f"{f'{humanize_number(pos)}.': <{pound_len+2}} " f"{f'{humanize_number(pos)}.': <{pound_len+2}} "
f"{balance: <{bal_len + 5}} " f"{balance: <{bal_len + 5}} "