Refactor logic for stub empty lines (#2796)

This PR is intended to have no change to semantics.

This is in preparation for #2784 which will likely introduce more logic
that depends on `current_line.depth`.

Inlining the subtraction gets rid of offsetting and makes it much easier
to see what the result will be.
This commit is contained in:
Shantanu 2022-01-22 07:29:38 -08:00 committed by GitHub
parent fb1d1b2fc8
commit 811de5f36b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -529,9 +529,11 @@ def _maybe_empty_lines_for_class_or_def(
if self.is_pyi: if self.is_pyi:
if self.previous_line.depth > current_line.depth: if self.previous_line.depth > current_line.depth:
newlines = 1 newlines = 0 if current_line.depth else 1
elif current_line.is_class or self.previous_line.is_class: elif current_line.is_class or self.previous_line.is_class:
if current_line.is_stub_class and self.previous_line.is_stub_class: if current_line.depth:
newlines = 0
elif current_line.is_stub_class and self.previous_line.is_stub_class:
# No blank line between classes with an empty body # No blank line between classes with an empty body
newlines = 0 newlines = 0
else: else:
@ -539,21 +541,18 @@ def _maybe_empty_lines_for_class_or_def(
elif ( elif (
current_line.is_def or current_line.is_decorator current_line.is_def or current_line.is_decorator
) and not self.previous_line.is_def: ) and not self.previous_line.is_def:
if not current_line.depth: if current_line.depth:
# In classes empty lines between attributes and methods should
# be preserved.
newlines = min(1, before)
else:
# Blank line between a block of functions (maybe with preceding # Blank line between a block of functions (maybe with preceding
# decorators) and a block of non-functions # decorators) and a block of non-functions
newlines = 1 newlines = 1
else:
# In classes empty lines between attributes and methods should
# be preserved. The +1 offset is to negate the -1 done later as
# this function is indented.
newlines = min(2, before + 1)
else: else:
newlines = 0 newlines = 0
else: else:
newlines = 2 newlines = 1 if current_line.depth else 2
if current_line.depth and newlines:
newlines -= 1
return newlines, 0 return newlines, 0