All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
Type comments only apply if they are the first comment on the line,
which means that allowing them to be pushed behind a regular comment
when joining lines is a semantic change (and, indeed, one that black
catches and fails on).
- def contains_inner_type_comments(self) -> bool:
+ def contains_uncollapsable_type_comments(self) -> bool:
ignored_ids = set()
try:
last_leaf = self.leaves[-1]
ignored_ids = set()
try:
last_leaf = self.leaves[-1]
except IndexError:
return False
except IndexError:
return False
+ # A type comment is uncollapsable if it is attached to a leaf
+ # that isn't at the end of the line (since that could cause it
+ # to get associated to a different argument) or if there are
+ # comments before it (since that could cause it to get hidden
+ # behind a comment.
+ comment_seen = False
for leaf_id, comments in self.comments.items():
for leaf_id, comments in self.comments.items():
- if leaf_id in ignored_ids:
- continue
-
for comment in comments:
if is_type_comment(comment):
for comment in comments:
if is_type_comment(comment):
+ if leaf_id not in ignored_ids or comment_seen:
+ return True
+
+ comment_seen = True
line_str = str(line).strip("\n")
if (
line_str = str(line).strip("\n")
if (
- not line.contains_inner_type_comments()
+ not line.contains_uncollapsable_type_comments()
and not line.should_explode
and is_line_short_enough(line, line_length=line_length, line_str=line_str)
):
and not line.should_explode
and is_line_short_enough(line, line_length=line_length, line_str=line_str)
):
+def f(
+ x, # not a type comment
+ y, # type: int
+):
+ # type: (...) -> None
+ pass
+
+
+def f(
+ x, # not a type comment
+): # type: (int) -> None
+ pass
+
+
def func(
a=some_list[0], # type: int
): # type: () -> int
def func(
a=some_list[0], # type: int
): # type: () -> int