Clarity: isolate and extract each responsibility from an overloaded variable
This commit is contained in:
parent
afc8c326bf
commit
caa3fcc2de
@ -1481,6 +1481,7 @@ class Line:
|
|||||||
bracket_tracker: BracketTracker = field(default_factory=BracketTracker)
|
bracket_tracker: BracketTracker = field(default_factory=BracketTracker)
|
||||||
inside_brackets: bool = False
|
inside_brackets: bool = False
|
||||||
should_explode: bool = False
|
should_explode: bool = False
|
||||||
|
magic_trailing_comma: Optional[Leaf] = None
|
||||||
|
|
||||||
def append(self, leaf: Leaf, preformatted: bool = False) -> None:
|
def append(self, leaf: Leaf, preformatted: bool = False) -> None:
|
||||||
"""Add a new `leaf` to the end of the line.
|
"""Add a new `leaf` to the end of the line.
|
||||||
@ -1508,7 +1509,7 @@ def append(self, leaf: Leaf, preformatted: bool = False) -> None:
|
|||||||
self.bracket_tracker.mark(leaf)
|
self.bracket_tracker.mark(leaf)
|
||||||
if self.mode.magic_trailing_comma:
|
if self.mode.magic_trailing_comma:
|
||||||
if self.has_magic_trailing_comma(leaf):
|
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):
|
elif self.has_magic_trailing_comma(leaf, ensure_removable=True):
|
||||||
self.remove_trailing_comma()
|
self.remove_trailing_comma()
|
||||||
if not self.append_comment(leaf):
|
if not self.append_comment(leaf):
|
||||||
@ -1792,6 +1793,7 @@ def clone(self) -> "Line":
|
|||||||
depth=self.depth,
|
depth=self.depth,
|
||||||
inside_brackets=self.inside_brackets,
|
inside_brackets=self.inside_brackets,
|
||||||
should_explode=self.should_explode,
|
should_explode=self.should_explode,
|
||||||
|
magic_trailing_comma=self.magic_trailing_comma,
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
@ -2710,7 +2712,7 @@ def init_st(ST: Type[StringTransformer]) -> StringTransformer:
|
|||||||
transformers: List[Transformer]
|
transformers: List[Transformer]
|
||||||
if (
|
if (
|
||||||
not line.contains_uncollapsable_type_comments()
|
not line.contains_uncollapsable_type_comments()
|
||||||
and not line.should_explode
|
and not (line.should_explode or line.magic_trailing_comma)
|
||||||
and (
|
and (
|
||||||
is_line_short_enough(line, line_length=mode.line_length, line_str=line_str)
|
is_line_short_enough(line, line_length=mode.line_length, line_str=line_str)
|
||||||
or line.contains_unsplittable_type_ignore()
|
or line.contains_unsplittable_type_ignore()
|
||||||
@ -4385,6 +4387,7 @@ def do_transform(self, line: Line, string_idx: int) -> Iterator[TResult[Line]]:
|
|||||||
depth=line.depth + 1,
|
depth=line.depth + 1,
|
||||||
inside_brackets=True,
|
inside_brackets=True,
|
||||||
should_explode=line.should_explode,
|
should_explode=line.should_explode,
|
||||||
|
magic_trailing_comma=line.magic_trailing_comma,
|
||||||
)
|
)
|
||||||
string_leaf = Leaf(token.STRING, string_value)
|
string_leaf = Leaf(token.STRING, string_value)
|
||||||
insert_str_child(string_leaf)
|
insert_str_child(string_leaf)
|
||||||
@ -5946,7 +5949,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
omit: Set[LeafID] = set()
|
omit: Set[LeafID] = set()
|
||||||
if not line.should_explode:
|
if not line.should_explode and not line.magic_trailing_comma:
|
||||||
yield omit
|
yield omit
|
||||||
|
|
||||||
length = 4 * line.depth
|
length = 4 * line.depth
|
||||||
@ -5968,7 +5971,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
|
|||||||
elif leaf.type in CLOSING_BRACKETS:
|
elif leaf.type in CLOSING_BRACKETS:
|
||||||
prev = line.leaves[index - 1] if index > 0 else None
|
prev = line.leaves[index - 1] if index > 0 else None
|
||||||
if (
|
if (
|
||||||
line.should_explode
|
(line.should_explode or line.magic_trailing_comma)
|
||||||
and prev
|
and prev
|
||||||
and prev.type == token.COMMA
|
and prev.type == token.COMMA
|
||||||
and not is_one_tuple_between(
|
and not is_one_tuple_between(
|
||||||
@ -5996,7 +5999,7 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf
|
|||||||
yield omit
|
yield omit
|
||||||
|
|
||||||
if (
|
if (
|
||||||
line.should_explode
|
(line.should_explode or line.magic_trailing_comma)
|
||||||
and prev
|
and prev
|
||||||
and prev.type == token.COMMA
|
and prev.type == token.COMMA
|
||||||
and not is_one_tuple_between(leaf.opening_bracket, leaf, line.leaves)
|
and not is_one_tuple_between(leaf.opening_bracket, leaf, line.leaves)
|
||||||
@ -6629,7 +6632,7 @@ def can_omit_invisible_parens(
|
|||||||
|
|
||||||
penultimate = line.leaves[-2]
|
penultimate = line.leaves[-2]
|
||||||
last = line.leaves[-1]
|
last = line.leaves[-1]
|
||||||
if line.should_explode:
|
if line.should_explode or line.magic_trailing_comma:
|
||||||
try:
|
try:
|
||||||
penultimate, last = last_two_except(line.leaves, omit=omit_on_explode)
|
penultimate, last = last_two_except(line.leaves, omit=omit_on_explode)
|
||||||
except LookupError:
|
except LookupError:
|
||||||
@ -6656,7 +6659,9 @@ def can_omit_invisible_parens(
|
|||||||
# unnecessary.
|
# unnecessary.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if line.should_explode and penultimate.type == token.COMMA:
|
if (
|
||||||
|
line.should_explode or line.magic_trailing_comma
|
||||||
|
) and penultimate.type == token.COMMA:
|
||||||
# The rightmost non-omitted bracket pair is the one we want to explode on.
|
# The rightmost non-omitted bracket pair is the one we want to explode on.
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user