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.
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ae5588c)
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