@@ -237,7 +237,8 @@ def maximum_line_length(physical_line, max_line_length, multiline, noqa):
237
237
238
238
239
239
def 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 ):
241
242
r"""Separate top-level function and class definitions with two blank lines.
242
243
243
244
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,
256
257
E303: def a():\n pass\n\n\n\ndef b(n):\n pass
257
258
E303: def a():\n\n\n\n pass
258
259
E304: @decorator\n\ndef a():\n pass
260
+ E305: def a():\n pass\na()
259
261
"""
260
262
if line_number < 3 and not previous_logical :
261
263
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,
271
273
yield 0 , "E301 expected 1 blank line, found 0"
272
274
elif blank_before != 2 :
273
275
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
274
280
275
281
276
282
def extraneous_whitespace (logical_line ):
@@ -1450,6 +1456,8 @@ def init_checks_registry():
1450
1456
mod = inspect .getmodule (register_check )
1451
1457
for (name , function ) in inspect .getmembers (mod , inspect .isfunction ):
1452
1458
register_check (function )
1459
+
1460
+
1453
1461
init_checks_registry ()
1454
1462
1455
1463
@@ -1608,6 +1616,8 @@ def check_logical(self):
1608
1616
if self .logical_line :
1609
1617
self .previous_indent_level = self .indent_level
1610
1618
self .previous_logical = self .logical_line
1619
+ if not self .indent_level :
1620
+ self .previous_logical_toplevel = self .logical_line
1611
1621
self .blank_lines = 0
1612
1622
self .tokens = []
1613
1623
@@ -1678,6 +1688,7 @@ def check_all(self, expected=None, line_offset=0):
1678
1688
self .indent_char = None
1679
1689
self .indent_level = self .previous_indent_level = 0
1680
1690
self .previous_logical = ''
1691
+ self .previous_logical_toplevel = ''
1681
1692
self .tokens = []
1682
1693
self .blank_lines = self .blank_before = 0
1683
1694
parens = 0
0 commit comments