Don't explode a one-element collection ending with a comma.

This commit is contained in:
Łukasz Langa 2018-05-17 15:07:40 -07:00
parent 87b8df28c4
commit 180bc06ede
3 changed files with 27 additions and 8 deletions

View File

@ -178,9 +178,9 @@ example above).
If a data structure literal (tuple, list, set, dict) or a line of "from"
imports cannot fit in the allotted length, it's always split into one
per line. This minimizes diffs as well as enables readers of code to
find which commit introduced a particular entry. This also makes
*Black* compatible with [isort](https://pypi.org/p/isort/). Use
element per line. This minimizes diffs as well as enables readers of
code to find which commit introduced a particular entry. This also
makes *Black* compatible with [isort](https://pypi.org/p/isort/). Use
`multi_line_output=3`, `include_trailing_comma=True`,
`force_grid_wrap=0`, and `line_length=88` in your isort config.

View File

@ -2532,13 +2532,21 @@ def ensure_visible(leaf: Leaf) -> None:
def should_explode(line: Line, opening_bracket: Leaf) -> bool:
"""Should `line` immediately be split with `delimiter_split()` after RHS?"""
return bool(
if not (
opening_bracket.parent
and opening_bracket.parent.type in {syms.atom, syms.import_from}
and opening_bracket.value in "[{("
and line.bracket_tracker.delimiters
and line.bracket_tracker.max_delimiter_priority() == COMMA_PRIORITY
)
):
return False
try:
last_leaf = line.leaves[-1]
exclude = {id(last_leaf)} if last_leaf.type == token.COMMA else set()
max_priority = line.bracket_tracker.max_delimiter_priority(exclude=exclude)
except (IndexError, ValueError):
return False
return max_priority == COMMA_PRIORITY
def is_python36(node: Node) -> bool:

View File

@ -147,7 +147,18 @@ def tricky_asserts(self) -> None:
"in one line because it's too long"
)
# This is weird but true.
dis_c_instance_method = """\
%3d 0 LOAD_FAST 1 (x)
2 LOAD_CONST 1 (1)
4 COMPARE_OP 2 (==)
6 LOAD_FAST 0 (self)
8 STORE_ATTR 0 (x)
10 LOAD_CONST 0 (None)
12 RETURN_VALUE
""" % (
_C.__init__.__code__.co_firstlineno + 1,
)
assert (
expectedexpectedexpectedexpectedexpectedexpectedexpectedexpectedexpect
== {