summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Lee <anntzer.lee@gmail.com>2018-11-28 00:43:17 +0100
committerAntony Lee <anntzer.lee@gmail.com>2019-01-05 17:19:45 +0100
commit0138bb106403241564a0c5af67886c05a2f4f690 (patch)
treea731940febd5e2e925b99f85f8536380fe6a5259
parent3d37ea0aa2e369852c98bbbcaef8a89ed00996dc (diff)
downloadpep8-0138bb106403241564a0c5af67886c05a2f4f690.tar.gz
Allow omitting blank lines around one-liner definitions.
-rwxr-xr-xpycodestyle.py10
-rw-r--r--testsuite/E30.py18
-rw-r--r--testsuite/E30not.py11
3 files changed, 39 insertions, 0 deletions
diff --git a/pycodestyle.py b/pycodestyle.py
index c9e1667..27009c6 100755
--- a/pycodestyle.py
+++ b/pycodestyle.py
@@ -354,6 +354,16 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
):
yield 0, "E303 too many blank lines (%d)" % blank_lines
elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
+ # If this is a one-liner (i.e. the next line is not more
+ # indented), and the previous line is also not deeper
+ # (it would be better to check if the previous line is part
+ # of another def/class at the same level), don't require blank
+ # lines around this.
+ prev_line = lines[line_number - 2] if line_number >= 2 else ''
+ next_line = lines[line_number] if line_number < len(lines) else ''
+ if (expand_indent(prev_line) <= indent_level and
+ expand_indent(next_line) <= indent_level):
+ return
if indent_level:
if not (blank_before == method_lines or
previous_indent_level < indent_level or
diff --git a/testsuite/E30.py b/testsuite/E30.py
index ad5518b..320b2a1 100644
--- a/testsuite/E30.py
+++ b/testsuite/E30.py
@@ -163,3 +163,21 @@ async def x():
async def x(y: int = 1):
pass
+#: E704:3:1 E302:3:1
+def bar():
+ pass
+def baz(): pass
+#: E704:1:1 E302:2:1
+def bar(): pass
+def baz():
+ pass
+#: E704:4:5 E306:4:5
+def foo():
+ def bar():
+ pass
+ def baz(): pass
+#: E704:2:5 E306:3:5
+def foo():
+ def bar(): pass
+ def baz():
+ pass
diff --git a/testsuite/E30not.py b/testsuite/E30not.py
index 6303b3b..ef795a8 100644
--- a/testsuite/E30not.py
+++ b/testsuite/E30not.py
@@ -162,3 +162,14 @@ defaults.update({})
def foo(x):
classification = x
definitely = not classification
+#: E704:3:1 E704:4:1
+# This emits the (ignored-by-default) E704, but here we're testing
+# for no E30x being emitted.
+def bar(): pass
+def baz(): pass
+#: E704:4:5 E704:5:5
+def foo():
+ # This emits the (ignored-by-default) E704, but here we're testing
+ # for no E30x being emitted.
+ def bar(): pass
+ def baz(): pass