Treat blank lines in stubs the same inside top-level if statements (#2820)

This commit is contained in:
Shantanu 2022-01-28 16:29:07 -08:00 committed by GitHub
parent e1506769a4
commit 343795029f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 100 additions and 4 deletions

View File

@ -23,6 +23,7 @@ and the first release covered by our new stability policy.
- Use parentheses for attribute access on decimal float and int literals (#2799) - Use parentheses for attribute access on decimal float and int literals (#2799)
- Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex - Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex
literals (#2799) literals (#2799)
- Treat blank lines in stubs the same inside top-level `if` statements (#2820)
### Parser ### Parser

View File

@ -530,11 +530,11 @@ def _maybe_empty_lines_for_class_or_def(
return 0, 0 return 0, 0
if self.is_pyi: if self.is_pyi:
if self.previous_line.depth > current_line.depth: if current_line.is_class or self.previous_line.is_class:
newlines = 0 if current_line.depth else 1 if self.previous_line.depth < current_line.depth:
elif current_line.is_class or self.previous_line.is_class:
if current_line.depth:
newlines = 0 newlines = 0
elif self.previous_line.depth > current_line.depth:
newlines = 1
elif current_line.is_stub_class and self.previous_line.is_stub_class: 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
@ -551,6 +551,8 @@ def _maybe_empty_lines_for_class_or_def(
# 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
elif self.previous_line.depth > current_line.depth:
newlines = 1
else: else:
newlines = 0 newlines = 0
else: else:

View File

@ -32,6 +32,48 @@ def g():
def h(): ... def h(): ...
if sys.version_info >= (3, 8):
class E:
def f(self): ...
class F:
def f(self): ...
class G: ...
class H: ...
else:
class I: ...
class J: ...
def f(): ...
class K:
def f(self): ...
def f(): ...
class Nested:
class dirty: ...
class little: ...
class secret:
def who_has_to_know(self): ...
def verse(self): ...
class Conditional:
def f(self): ...
if sys.version_info >= (3, 8):
def g(self): ...
else:
def g(self): ...
def h(self): ...
def i(self): ...
if sys.version_info >= (3, 8):
def j(self): ...
def k(self): ...
if sys.version_info >= (3, 8):
class A: ...
class B: ...
class C:
def l(self): ...
def m(self): ...
# output # output
X: int X: int
@ -56,3 +98,54 @@ class A:
def g(): ... def g(): ...
def h(): ... def h(): ...
if sys.version_info >= (3, 8):
class E:
def f(self): ...
class F:
def f(self): ...
class G: ...
class H: ...
else:
class I: ...
class J: ...
def f(): ...
class K:
def f(self): ...
def f(): ...
class Nested:
class dirty: ...
class little: ...
class secret:
def who_has_to_know(self): ...
def verse(self): ...
class Conditional:
def f(self): ...
if sys.version_info >= (3, 8):
def g(self): ...
else:
def g(self): ...
def h(self): ...
def i(self): ...
if sys.version_info >= (3, 8):
def j(self): ...
def k(self): ...
if sys.version_info >= (3, 8):
class A: ...
class B: ...
class C:
def l(self): ...
def m(self): ...