Fix type: ignore line breaking when there is a destructuring assignment (#1065)
It turns out we also need to handle invisible *left* parens added at the *start* of a line. Refactor `contains_unsplittable_type_ignore` to handle this more cleanly.
This commit is contained in:
parent
788f87cb58
commit
7b11f04d54
20
black.py
20
black.py
@ -1341,19 +1341,15 @@ def contains_unsplittable_type_ignore(self) -> bool:
|
|||||||
# only report an unsplittable 'type: ignore' if this line was
|
# only report an unsplittable 'type: ignore' if this line was
|
||||||
# one line in the original code.
|
# one line in the original code.
|
||||||
|
|
||||||
# Like in the type comment check above, we need to skip a black added
|
# Grab the first and last line numbers, skipping generated leaves
|
||||||
# trailing comma or invisible paren, since it will be the original leaf
|
first_line = next((l.lineno for l in self.leaves if l.lineno != 0), 0)
|
||||||
# before it that has the original line number.
|
last_line = next((l.lineno for l in reversed(self.leaves) if l.lineno != 0), 0)
|
||||||
last_idx = -1
|
|
||||||
last_leaf = self.leaves[-1]
|
|
||||||
if len(self.leaves) > 2 and (
|
|
||||||
last_leaf.type == token.COMMA
|
|
||||||
or (last_leaf.type == token.RPAR and not last_leaf.value)
|
|
||||||
):
|
|
||||||
last_idx = -2
|
|
||||||
|
|
||||||
if self.leaves[0].lineno == self.leaves[last_idx].lineno:
|
if first_line == last_line:
|
||||||
for node in self.leaves[last_idx:]:
|
# We look at the last two leaves since a comma or an
|
||||||
|
# invisible paren could have been added at the end of the
|
||||||
|
# line.
|
||||||
|
for node in self.leaves[-2:]:
|
||||||
for comment in self.comments.get(id(node), []):
|
for comment in self.comments.get(id(node), []):
|
||||||
if is_type_comment(comment, " ignore"):
|
if is_type_comment(comment, " ignore"):
|
||||||
return True
|
return True
|
||||||
|
@ -112,3 +112,5 @@ def func(
|
|||||||
foo,
|
foo,
|
||||||
[AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBB], # type: ignore
|
[AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, AAAAAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBB], # type: ignore
|
||||||
)
|
)
|
||||||
|
|
||||||
|
aaaaaaaaaaaaa, bbbbbbbbb = map(list, map(itertools.chain.from_iterable, zip(*items))) # type: ignore[arg-type]
|
||||||
|
Loading…
Reference in New Issue
Block a user