@@ -237,7 +237,8 @@ def maximum_line_length(physical_line, max_line_length, multiline, noqa):
237237
238238
239239def blank_lines (logical_line , blank_lines , indent_level , line_number ,
240- blank_before , previous_logical , previous_indent_level ):
240+ blank_before , previous_logical , previous_logical_toplevel ,
241+ previous_indent_level ):
241242 r"""Separate top-level function and class definitions with two blank lines.
242243
243244 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,
256257 E303: def a():\n pass\n\n\n\ndef b(n):\n pass
257258 E303: def a():\n\n\n\n pass
258259 E304: @decorator\n\ndef a():\n pass
260+ E305: def a():\n pass\na()
259261 """
260262 if line_number < 3 and not previous_logical :
261263 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,
271273 yield 0 , "E301 expected 1 blank line, found 0"
272274 elif blank_before != 2 :
273275 yield 0 , "E302 expected 2 blank lines, found %d" % blank_before
276+ elif (logical_line and not indent_level and blank_before != 2 and
277+ previous_logical_toplevel .startswith (('def' , 'class' ))):
278+ yield 0 , "E305 expected 2 blank lines after " \
279+ "class or function definition, found %d" % blank_before
274280
275281
276282def extraneous_whitespace (logical_line ):
@@ -1450,6 +1456,8 @@ def init_checks_registry():
14501456 mod = inspect .getmodule (register_check )
14511457 for (name , function ) in inspect .getmembers (mod , inspect .isfunction ):
14521458 register_check (function )
1459+
1460+
14531461init_checks_registry ()
14541462
14551463
@@ -1608,6 +1616,8 @@ def check_logical(self):
16081616 if self .logical_line :
16091617 self .previous_indent_level = self .indent_level
16101618 self .previous_logical = self .logical_line
1619+ if not self .indent_level :
1620+ self .previous_logical_toplevel = self .logical_line
16111621 self .blank_lines = 0
16121622 self .tokens = []
16131623
@@ -1678,6 +1688,7 @@ def check_all(self, expected=None, line_offset=0):
16781688 self .indent_char = None
16791689 self .indent_level = self .previous_indent_level = 0
16801690 self .previous_logical = ''
1691+ self .previous_logical_toplevel = ''
16811692 self .tokens = []
16821693 self .blank_lines = self .blank_before = 0
16831694 parens = 0
0 commit comments