parent
af8fd24068
commit
9db828c3de
84
black.py
84
black.py
@ -1390,44 +1390,8 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
|
||||
before = 0 if depth else 1
|
||||
else:
|
||||
before = 1 if depth else 2
|
||||
is_decorator = current_line.is_decorator
|
||||
if is_decorator or current_line.is_def or current_line.is_class:
|
||||
if not is_decorator:
|
||||
self.previous_defs.append(depth)
|
||||
if self.previous_line is None:
|
||||
# Don't insert empty lines before the first line in the file.
|
||||
return 0, 0
|
||||
|
||||
if self.previous_line.is_decorator:
|
||||
return 0, 0
|
||||
|
||||
if self.previous_line.depth < current_line.depth and (
|
||||
self.previous_line.is_class or self.previous_line.is_def
|
||||
):
|
||||
return 0, 0
|
||||
|
||||
if (
|
||||
self.previous_line.is_comment
|
||||
and self.previous_line.depth == current_line.depth
|
||||
and before == 0
|
||||
):
|
||||
return 0, 0
|
||||
|
||||
if self.is_pyi:
|
||||
if self.previous_line.depth > current_line.depth:
|
||||
newlines = 1
|
||||
elif current_line.is_class or self.previous_line.is_class:
|
||||
if current_line.is_stub_class and self.previous_line.is_stub_class:
|
||||
newlines = 0
|
||||
else:
|
||||
newlines = 1
|
||||
else:
|
||||
newlines = 0
|
||||
else:
|
||||
newlines = 2
|
||||
if current_line.depth and newlines:
|
||||
newlines -= 1
|
||||
return newlines, 0
|
||||
if current_line.is_decorator or current_line.is_def or current_line.is_class:
|
||||
return self._maybe_empty_lines_for_class_or_def(current_line, before)
|
||||
|
||||
if (
|
||||
self.previous_line
|
||||
@ -1446,6 +1410,50 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
|
||||
|
||||
return before, 0
|
||||
|
||||
def _maybe_empty_lines_for_class_or_def(
|
||||
self, current_line: Line, before: int
|
||||
) -> Tuple[int, int]:
|
||||
if not current_line.is_decorator:
|
||||
self.previous_defs.append(current_line.depth)
|
||||
if self.previous_line is None:
|
||||
# Don't insert empty lines before the first line in the file.
|
||||
return 0, 0
|
||||
|
||||
if self.previous_line.is_decorator:
|
||||
return 0, 0
|
||||
|
||||
if self.previous_line.depth < current_line.depth and (
|
||||
self.previous_line.is_class or self.previous_line.is_def
|
||||
):
|
||||
return 0, 0
|
||||
|
||||
if (
|
||||
self.previous_line.is_comment
|
||||
and self.previous_line.depth == current_line.depth
|
||||
and before == 0
|
||||
):
|
||||
return 0, 0
|
||||
|
||||
if self.is_pyi:
|
||||
if self.previous_line.depth > current_line.depth:
|
||||
newlines = 1
|
||||
elif current_line.is_class or self.previous_line.is_class:
|
||||
if current_line.is_stub_class and self.previous_line.is_stub_class:
|
||||
# No blank line between classes with an emty body
|
||||
newlines = 0
|
||||
else:
|
||||
newlines = 1
|
||||
elif current_line.is_def and not self.previous_line.is_def:
|
||||
# Blank line between a block of functions and a block of non-functions
|
||||
newlines = 1
|
||||
else:
|
||||
newlines = 0
|
||||
else:
|
||||
newlines = 2
|
||||
if current_line.depth and newlines:
|
||||
newlines -= 1
|
||||
return newlines, 0
|
||||
|
||||
|
||||
@dataclass
|
||||
class LineGenerator(Visitor[Line]):
|
||||
|
@ -1,3 +1,7 @@
|
||||
X: int
|
||||
|
||||
def f(): ...
|
||||
|
||||
class C:
|
||||
...
|
||||
|
||||
@ -16,6 +20,10 @@ def g():
|
||||
def h(): ...
|
||||
|
||||
# output
|
||||
X: int
|
||||
|
||||
def f(): ...
|
||||
|
||||
class C: ...
|
||||
class B: ...
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user