Do not enforce empty lines after control flow statements

Fixes #90
This commit is contained in:
Łukasz Langa 2018-04-24 12:40:46 -07:00
parent 9d671bdbe1
commit b250aed47b
5 changed files with 8 additions and 38 deletions

View File

@ -218,10 +218,7 @@ bother you if you overdo it by a few km/h".
*Black* avoids spurious vertical whitespace. This is in the spirit of *Black* avoids spurious vertical whitespace. This is in the spirit of
PEP 8 which says that in-function vertical whitespace should only be PEP 8 which says that in-function vertical whitespace should only be
used sparingly. One exception is control flow statements: *Black* will used sparingly.
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 inside functions, and single and *Black* will allow single empty lines inside functions, and single and
double empty lines on module level left by the original editors, except double empty lines on module level left by the original editors, except
@ -528,6 +525,9 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
* generalized star expression handling, including double stars; this * generalized star expression handling, including double stars; this
fixes multiplication making expressions "unsafe" for trailing commas (#132) fixes multiplication making expressions "unsafe" for trailing commas (#132)
* Black no longer enforces putting empty lines behind control flow statements
(#90)
* fixed comment indentation when a standalone comment closes a block (#16, #32) * fixed comment indentation when a standalone comment closes a block (#16, #32)
* fixed standalone comments receiving extra empty lines if immediately preceding * fixed standalone comments receiving extra empty lines if immediately preceding

View File

@ -1056,9 +1056,6 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
newlines -= 1 newlines -= 1
return newlines, 0 return newlines, 0
if current_line.is_flow_control:
return before, 1
if ( if (
self.previous_line self.previous_line
and self.previous_line.is_import and self.previous_line.is_import
@ -1067,13 +1064,6 @@ def _maybe_empty_lines(self, current_line: Line) -> Tuple[int, int]:
): ):
return (before or 1), 0 return (before or 1), 0
if (
self.previous_line
and self.previous_line.is_yield
and (not current_line.is_yield or depth != self.previous_line.depth)
):
return (before or 1), 0
return before, 0 return before, 0

View File

@ -129,7 +129,7 @@
] ]
slice[0] slice[0]
slice[0:1] slice[0:1]
@@ -123,88 +145,122 @@ @@ -123,88 +145,114 @@
numpy[-(c + 1):, d] numpy[-(c + 1):, d]
numpy[:, l[-2]] numpy[:, l[-2]]
numpy[:, ::-1] numpy[:, ::-1]
@ -190,10 +190,9 @@
+ +
def gen(): def gen():
yield from outside_of_generator yield from outside_of_generator
+
a = (yield) a = (yield)
+
+
async def f(): async def f():
await some.complicated[0].call(with_args=(True or (1 is not 1))) await some.complicated[0].call(with_args=(True or (1 is not 1)))
-print(* [] or [1]) -print(* [] or [1])
@ -242,8 +241,6 @@
-if ( -if (
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa / - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa /
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-):
- return True
+print(*lambda x: x) +print(*lambda x: x)
+for (x,) in (1,), (2,), (3,): +for (x,) in (1,), (2,), (3,):
+ ... + ...
@ -263,42 +260,35 @@
+ or signal.getsignal(signal.SIGINT) != signal.default_int_handler + or signal.getsignal(signal.SIGINT) != signal.default_int_handler
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): +):
+ return True + return True
+
+if ( +if (
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+): ):
+ return True return True
+
last_call() last_call()
# standalone comment at ENDMARKER # standalone comment at ENDMARKER

View File

@ -409,7 +409,6 @@ async def f():
def gen(): def gen():
yield from outside_of_generator yield from outside_of_generator
a = (yield) a = (yield)
@ -438,42 +437,35 @@ async def f():
or signal.getsignal(signal.SIGINT) != signal.default_int_handler or signal.getsignal(signal.SIGINT) != signal.default_int_handler
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
& aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa & aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
if ( if (
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
/ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa / aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
): ):
return True return True
last_call() last_call()
# standalone comment at ENDMARKER # standalone comment at ENDMARKER

View File

@ -102,13 +102,11 @@ def func_no_args():
c c
if True: if True:
raise RuntimeError raise RuntimeError
if False: if False:
... ...
for i in range(10): for i in range(10):
print(i) print(i)
continue continue
exec("new-style exec", {}, {}) exec("new-style exec", {}, {})
return None return None