Allow empty lines at beginning of blocks (again) (#4060)

This commit is contained in:
Jelle Zijlstra 2023-12-09 18:29:09 -08:00 committed by GitHub
parent e7e122e9ff
commit 61b529b7d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 10 deletions

View File

@ -17,6 +17,8 @@
- Standalone form feed characters at the module level are no longer removed (#4021)
- Additional cases of immediately nested tuples, lists, and dictionaries are now
indented less (#4012)
- Allow empty lines at the beginning of all blocks, except immediately before a
docstring (#4060)
- Fix crash in preview mode when using a short `--line-length` (#4086)
### Configuration

View File

@ -689,18 +689,14 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
return 0, 1
return before, 1
# In preview mode, always allow blank lines, except right before a function
# docstring
is_empty_first_line_ok = (
Preview.allow_empty_first_line_before_new_block_or_comment
in current_line.mode
Preview.allow_empty_first_line_in_block in current_line.mode
and (
# If it's a standalone comment
current_line.leaves[0].type == STANDALONE_COMMENT
# If it opens a new block
or current_line.opens_block
# If it's a triple quote comment (but not at the start of a funcdef)
not is_docstring(current_line.leaves[0])
or (
is_docstring(current_line.leaves[0])
and self.previous_line
self.previous_line
and self.previous_line.leaves[0]
and self.previous_line.leaves[0].parent
and not is_funcdef(self.previous_line.leaves[0].parent)

View File

@ -191,7 +191,7 @@ class Preview(Enum):
accept_raw_docstrings = auto()
fix_power_op_line_length = auto()
hug_parens_with_braces_and_square_brackets = auto()
allow_empty_first_line_before_new_block_or_comment = auto()
allow_empty_first_line_in_block = auto()
single_line_format_skip_with_multiple_comments = auto()
long_case_block_line_splitting = auto()
allow_form_feeds = auto()

View File

@ -51,6 +51,17 @@ def baz():
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass
# output
def foo():
@ -104,3 +115,14 @@ def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass

View File

@ -198,6 +198,7 @@ def foo():
# form feeds are prohibited inside blocks, or on a line with nonwhitespace
def bar(a=1, b: bool = False):
pass