summaryrefslogtreecommitdiff
path: root/pycodestyle.py
diff options
context:
space:
mode:
authorNikhil Benesch <nikhil.benesch@gmail.com>2015-05-19 20:40:33 -0400
committerIan Lee <IanLee1521@gmail.com>2016-06-25 14:13:50 -0700
commit6b75c4de380c5e786d277851a7da8a581da53bcb (patch)
tree9af2652c530f6a77dd5dc35d53ec08d6c20c25bd /pycodestyle.py
parentdc08dadd84369185f3c19782fd727dbf5029a056 (diff)
downloadpep8-6b75c4de380c5e786d277851a7da8a581da53bcb.tar.gz
Fix issue #400: Require two blank lines after toplevel def, class
Diffstat (limited to 'pycodestyle.py')
-rwxr-xr-xpycodestyle.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/pycodestyle.py b/pycodestyle.py
index b32f16e..fbaae4d 100755
--- a/pycodestyle.py
+++ b/pycodestyle.py
@@ -237,7 +237,8 @@ def maximum_line_length(physical_line, max_line_length, multiline, noqa):
def blank_lines(logical_line, blank_lines, indent_level, line_number,
- blank_before, previous_logical, previous_indent_level):
+ blank_before, previous_logical, previous_logical_toplevel,
+ previous_indent_level):
r"""Separate top-level function and class definitions with two blank lines.
Method definitions inside a class are separated by a single blank line.
@@ -256,6 +257,7 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
E303: def a():\n pass\n\n\n\ndef b(n):\n pass
E303: def a():\n\n\n\n pass
E304: @decorator\n\ndef a():\n pass
+ E305: def a():\n pass\na()
"""
if line_number < 3 and not previous_logical:
return # Don't expect blank lines before the first line
@@ -271,6 +273,10 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
yield 0, "E301 expected 1 blank line, found 0"
elif blank_before != 2:
yield 0, "E302 expected 2 blank lines, found %d" % blank_before
+ elif (logical_line and not indent_level and blank_before != 2 and
+ previous_logical_toplevel.startswith(('def', 'class'))):
+ yield 0, "E305 expected 2 blank lines after " \
+ "class or function definition, found %d" % blank_before
def extraneous_whitespace(logical_line):
@@ -1450,6 +1456,8 @@ def init_checks_registry():
mod = inspect.getmodule(register_check)
for (name, function) in inspect.getmembers(mod, inspect.isfunction):
register_check(function)
+
+
init_checks_registry()
@@ -1608,6 +1616,8 @@ class Checker(object):
if self.logical_line:
self.previous_indent_level = self.indent_level
self.previous_logical = self.logical_line
+ if not self.indent_level:
+ self.previous_logical_toplevel = self.logical_line
self.blank_lines = 0
self.tokens = []
@@ -1678,6 +1688,7 @@ class Checker(object):
self.indent_char = None
self.indent_level = self.previous_indent_level = 0
self.previous_logical = ''
+ self.previous_logical_toplevel = ''
self.tokens = []
self.blank_lines = self.blank_before = 0
parens = 0