Simplify is_trivial_*
methods
This commit is contained in:
parent
2b3206dc23
commit
8b64e916f6
81
black.py
81
black.py
@ -841,7 +841,7 @@ def is_class(self) -> bool:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_trivial_class(self) -> bool:
|
def is_stub_class(self) -> bool:
|
||||||
"""Is this line a class definition with a body consisting only of "..."?"""
|
"""Is this line a class definition with a body consisting only of "..."?"""
|
||||||
return (
|
return (
|
||||||
self.is_class
|
self.is_class
|
||||||
@ -1177,10 +1177,7 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
|
|||||||
if self.previous_line.depth > current_line.depth:
|
if self.previous_line.depth > current_line.depth:
|
||||||
newlines = 1
|
newlines = 1
|
||||||
elif current_line.is_class or self.previous_line.is_class:
|
elif current_line.is_class or self.previous_line.is_class:
|
||||||
if (
|
if current_line.is_stub_class and self.previous_line.is_stub_class:
|
||||||
current_line.is_trivial_class
|
|
||||||
and self.previous_line.is_trivial_class
|
|
||||||
):
|
|
||||||
newlines = 0
|
newlines = 0
|
||||||
else:
|
else:
|
||||||
newlines = 1
|
newlines = 1
|
||||||
@ -1329,51 +1326,16 @@ def visit_stmt(
|
|||||||
|
|
||||||
def visit_suite(self, node: Node) -> Iterator[Line]:
|
def visit_suite(self, node: Node) -> Iterator[Line]:
|
||||||
"""Visit a suite."""
|
"""Visit a suite."""
|
||||||
if self.is_pyi and self.is_trivial_suite(node):
|
if self.is_pyi and is_stub_suite(node):
|
||||||
yield from self.visit(node.children[2])
|
yield from self.visit(node.children[2])
|
||||||
else:
|
else:
|
||||||
yield from self.visit_default(node)
|
yield from self.visit_default(node)
|
||||||
|
|
||||||
def is_trivial_suite(self, node: Node) -> bool:
|
|
||||||
if len(node.children) != 4:
|
|
||||||
return False
|
|
||||||
if (
|
|
||||||
not isinstance(node.children[0], Leaf)
|
|
||||||
or node.children[0].type != token.NEWLINE
|
|
||||||
):
|
|
||||||
return False
|
|
||||||
if (
|
|
||||||
not isinstance(node.children[1], Leaf)
|
|
||||||
or node.children[1].type != token.INDENT
|
|
||||||
):
|
|
||||||
return False
|
|
||||||
if (
|
|
||||||
not isinstance(node.children[3], Leaf)
|
|
||||||
or node.children[3].type != token.DEDENT
|
|
||||||
):
|
|
||||||
return False
|
|
||||||
stmt = node.children[2]
|
|
||||||
if not isinstance(stmt, Node):
|
|
||||||
return False
|
|
||||||
return self.is_trivial_body(stmt)
|
|
||||||
|
|
||||||
def is_trivial_body(self, stmt: Node) -> bool:
|
|
||||||
if not isinstance(stmt, Node) or stmt.type != syms.simple_stmt:
|
|
||||||
return False
|
|
||||||
if len(stmt.children) != 2:
|
|
||||||
return False
|
|
||||||
child = stmt.children[0]
|
|
||||||
return (
|
|
||||||
child.type == syms.atom
|
|
||||||
and len(child.children) == 3
|
|
||||||
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
|
|
||||||
)
|
|
||||||
|
|
||||||
def visit_simple_stmt(self, node: Node) -> Iterator[Line]:
|
def visit_simple_stmt(self, node: Node) -> Iterator[Line]:
|
||||||
"""Visit a statement without nested statements."""
|
"""Visit a statement without nested statements."""
|
||||||
is_suite_like = node.parent and node.parent.type in STATEMENT
|
is_suite_like = node.parent and node.parent.type in STATEMENT
|
||||||
if is_suite_like:
|
if is_suite_like:
|
||||||
if self.is_pyi and self.is_trivial_body(node):
|
if self.is_pyi and is_stub_body(node):
|
||||||
yield from self.visit_default(node)
|
yield from self.visit_default(node)
|
||||||
else:
|
else:
|
||||||
yield from self.line(+1)
|
yield from self.line(+1)
|
||||||
@ -1381,11 +1343,7 @@ def visit_simple_stmt(self, node: Node) -> Iterator[Line]:
|
|||||||
yield from self.line(-1)
|
yield from self.line(-1)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if (
|
if not self.is_pyi or not node.parent or not is_stub_suite(node.parent):
|
||||||
not self.is_pyi
|
|
||||||
or not node.parent
|
|
||||||
or not self.is_trivial_suite(node.parent)
|
|
||||||
):
|
|
||||||
yield from self.line()
|
yield from self.line()
|
||||||
yield from self.visit_default(node)
|
yield from self.visit_default(node)
|
||||||
|
|
||||||
@ -2474,6 +2432,35 @@ def is_vararg(leaf: Leaf, within: Set[NodeType]) -> bool:
|
|||||||
return p.type in within
|
return p.type in within
|
||||||
|
|
||||||
|
|
||||||
|
def is_stub_suite(node: Node) -> bool:
|
||||||
|
"""Return True if `node` is a suite with a stub body."""
|
||||||
|
if (
|
||||||
|
len(node.children) != 4
|
||||||
|
or node.children[0].type != token.NEWLINE
|
||||||
|
or node.children[1].type != token.INDENT
|
||||||
|
or node.children[3].type != token.DEDENT
|
||||||
|
):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return is_stub_body(node.children[2])
|
||||||
|
|
||||||
|
|
||||||
|
def is_stub_body(node: LN) -> bool:
|
||||||
|
"""Return True if `node` is a simple statement containing an ellipsis."""
|
||||||
|
if not isinstance(node, Node) or node.type != syms.simple_stmt:
|
||||||
|
return False
|
||||||
|
|
||||||
|
if len(node.children) != 2:
|
||||||
|
return False
|
||||||
|
|
||||||
|
child = node.children[0]
|
||||||
|
return (
|
||||||
|
child.type == syms.atom
|
||||||
|
and len(child.children) == 3
|
||||||
|
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def max_delimiter_priority_in_atom(node: LN) -> int:
|
def max_delimiter_priority_in_atom(node: LN) -> int:
|
||||||
"""Return maximum delimiter priority inside `node`.
|
"""Return maximum delimiter priority inside `node`.
|
||||||
|
|
||||||
|
@ -12,10 +12,6 @@ Assertions and checks
|
|||||||
|
|
||||||
.. autofunction:: black.assert_stable
|
.. autofunction:: black.assert_stable
|
||||||
|
|
||||||
.. autofunction:: black.is_split_after_delimiter
|
|
||||||
|
|
||||||
.. autofunction:: black.is_split_before_delimiter
|
|
||||||
|
|
||||||
.. autofunction:: black.is_empty_tuple
|
.. autofunction:: black.is_empty_tuple
|
||||||
|
|
||||||
.. autofunction:: black.is_import
|
.. autofunction:: black.is_import
|
||||||
@ -26,6 +22,14 @@ Assertions and checks
|
|||||||
|
|
||||||
.. autofunction:: black.is_python36
|
.. autofunction:: black.is_python36
|
||||||
|
|
||||||
|
.. autofunction:: black.is_split_after_delimiter
|
||||||
|
|
||||||
|
.. autofunction:: black.is_split_before_delimiter
|
||||||
|
|
||||||
|
.. autofunction:: black.is_stub_body
|
||||||
|
|
||||||
|
.. autofunction:: black.is_stub_suite
|
||||||
|
|
||||||
.. autofunction:: black.is_vararg
|
.. autofunction:: black.is_vararg
|
||||||
|
|
||||||
Formatting
|
Formatting
|
||||||
|
Loading…
Reference in New Issue
Block a user