Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: distinguish variable responsibilities #1963

Merged
merged 14 commits into from Feb 20, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
32 changes: 17 additions & 15 deletions src/black/__init__.py
Expand Up @@ -1480,7 +1480,8 @@ class Line:
comments: Dict[LeafID, List[Leaf]] = field(default_factory=dict)
bracket_tracker: BracketTracker = field(default_factory=BracketTracker)
inside_brackets: bool = False
should_explode: bool = False
should_split: bool = False
magic_trailing_comma: Optional[Leaf] = None

def append(self, leaf: Leaf, preformatted: bool = False) -> None:
"""Add a new `leaf` to the end of the line.
Expand Down Expand Up @@ -1508,7 +1509,7 @@ def append(self, leaf: Leaf, preformatted: bool = False) -> None:
self.bracket_tracker.mark(leaf)
if self.mode.magic_trailing_comma:
if self.has_magic_trailing_comma(leaf):
self.should_explode = True
self.magic_trailing_comma = leaf
elif self.has_magic_trailing_comma(leaf, ensure_removable=True):
self.remove_trailing_comma()
if not self.append_comment(leaf):
Expand Down Expand Up @@ -1791,7 +1792,8 @@ def clone(self) -> "Line":
mode=self.mode,
depth=self.depth,
inside_brackets=self.inside_brackets,
should_explode=self.should_explode,
should_split=self.should_split,
magic_trailing_comma=self.magic_trailing_comma,
)

def __str__(self) -> str:
Expand Down Expand Up @@ -2710,7 +2712,8 @@ def init_st(ST: Type[StringTransformer]) -> StringTransformer:
transformers: List[Transformer]
if (
not line.contains_uncollapsable_type_comments()
and not line.should_explode
and not line.should_split
and not line.magic_trailing_comma
and (
is_line_short_enough(line, line_length=mode.line_length, line_str=line_str)
or line.contains_unsplittable_type_ignore()
Expand Down Expand Up @@ -4384,7 +4387,8 @@ def do_transform(self, line: Line, string_idx: int) -> Iterator[TResult[Line]]:
mode=line.mode,
depth=line.depth + 1,
inside_brackets=True,
should_explode=line.should_explode,
should_split=line.should_split,
magic_trailing_comma=line.magic_trailing_comma,
)
string_leaf = Leaf(token.STRING, string_value)
insert_str_child(string_leaf)
Expand Down Expand Up @@ -5005,8 +5009,8 @@ def bracket_split_build_line(
result.append(leaf, preformatted=True)
for comment_after in original.comments_after(leaf):
result.append(comment_after, preformatted=True)
if is_body and should_split_body_explode(result, opening_bracket):
result.should_explode = True
if is_body and should_split_line(result, opening_bracket):
result.should_split = True
return result


Expand Down Expand Up @@ -5810,7 +5814,7 @@ def ensure_visible(leaf: Leaf) -> None:
leaf.value = ")"


def should_split_body_explode(line: Line, opening_bracket: Leaf) -> bool:
def should_split_line(line: Line, opening_bracket: Leaf) -> bool:
"""Should `line` be immediately split with `delimiter_split()` after RHS?"""

if not (opening_bracket.parent and opening_bracket.value in "[{("):
Expand Down Expand Up @@ -5946,7 +5950,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
"""

omit: Set[LeafID] = set()
if not line.should_explode:
if not line.magic_trailing_comma:
yield omit

length = 4 * line.depth
Expand All @@ -5968,8 +5972,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
elif leaf.type in CLOSING_BRACKETS:
prev = line.leaves[index - 1] if index > 0 else None
if (
line.should_explode
and prev
prev
and prev.type == token.COMMA
and not is_one_tuple_between(
leaf.opening_bracket, leaf, line.leaves
Expand All @@ -5996,8 +5999,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
yield omit

if (
line.should_explode
and prev
prev
and prev.type == token.COMMA
and not is_one_tuple_between(leaf.opening_bracket, leaf, line.leaves)
):
Expand Down Expand Up @@ -6629,7 +6631,7 @@ def can_omit_invisible_parens(

penultimate = line.leaves[-2]
last = line.leaves[-1]
if line.should_explode:
if line.magic_trailing_comma:
try:
penultimate, last = last_two_except(line.leaves, omit=omit_on_explode)
except LookupError:
Expand All @@ -6656,7 +6658,7 @@ def can_omit_invisible_parens(
# unnecessary.
return True

if line.should_explode and penultimate.type == token.COMMA:
if line.magic_trailing_comma and penultimate.type == token.COMMA:
jayaddison marked this conversation as resolved.
Show resolved Hide resolved
# The rightmost non-omitted bracket pair is the one we want to explode on.
return True

Expand Down