From e5f8251704c22b143b79474905c6c4b7e10ddb47 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Langa?= Date: Mon, 26 Mar 2018 22:54:08 -0700 Subject: [PATCH] Allow up to two empty lines on module level and single empty lines otherwise Fixes #74 --- README.md | 11 +++++++---- black.py | 4 ++-- tests/empty_lines.py | 4 ++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 69df9bc..182e264 100644 --- a/README.md +++ b/README.md @@ -218,10 +218,10 @@ always emit an extra empty line after ``return``, ``raise``, ``break``, ``continue``, and ``yield``. This is to make changes in control flow more prominent to readers of your code. -*Black* will allow single empty lines left by the original editors, -except when they're added within parenthesized expressions. Since such -expressions are always reformatted to fit minimal space, this whitespace -is lost. +*Black* will allow single empty lines inside functions, and single and +double empty lines on module level left by the original editors, except +when they're within parenthesized expressions. Since such expressions +are always reformatted to fit minimal space, this whitespace is lost. It will also insert proper spacing before and after function definitions. It's one line before and after inner functions and two lines before and @@ -338,6 +338,9 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). * fixed 18.3a4 regression: don't crash and burn on empty lines with trailing whitespace (#80) +* only allow up to two empty lines on module level and only single empty + lines within functions (#74) + ### 18.3a4 diff --git a/black.py b/black.py index 9ea4694..da7af03 100644 --- a/black.py +++ b/black.py @@ -754,13 +754,13 @@ class EmptyLineTracker: def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]: max_allowed = 1 - if current_line.is_comment and current_line.depth == 0: + if current_line.depth == 0: max_allowed = 2 if current_line.leaves: # Consume the first leaf's extra newlines. first_leaf = current_line.leaves[0] before = first_leaf.prefix.count('\n') - before = min(before, max(before, max_allowed)) + before = min(before, max_allowed) first_leaf.prefix = '' else: before = 0 diff --git a/tests/empty_lines.py b/tests/empty_lines.py index 8f00ddc..ec04337 100644 --- a/tests/empty_lines.py +++ b/tests/empty_lines.py @@ -12,15 +12,19 @@ def f(): if t == token.COMMENT: # another trailing comment return DOUBLESPACE + assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}" + prev = leaf.prev_sibling if not prev: prevp = preceding_leaf(p) if not prevp or prevp.type in OPENING_BRACKETS: + return NO + if prevp.type == token.EQUAL: if prevp.parent and prevp.parent.type in { syms.typedargslist, -- 2.39.5