@@ -234,7 +234,8 @@ def maximum_line_length(physical_line, max_line_length, multiline):
234
234
235
235
236
236
def blank_lines (logical_line , blank_lines , indent_level , line_number ,
237
- blank_before , previous_logical , previous_indent_level ):
237
+ blank_before , previous_logical , previous_logical_toplevel ,
238
+ previous_indent_level ):
238
239
r"""Separate top-level function and class definitions with two blank lines.
239
240
240
241
Method definitions inside a class are separated by a single blank line.
@@ -253,6 +254,7 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
253
254
E303: def a():\n pass\n\n\n\ndef b(n):\n pass
254
255
E303: def a():\n\n\n\n pass
255
256
E304: @decorator\n\ndef a():\n pass
257
+ E305: def a():\n pass\na()
256
258
"""
257
259
if line_number < 3 and not previous_logical :
258
260
return # Don't expect blank lines before the first line
@@ -268,6 +270,9 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
268
270
yield 0 , "E301 expected 1 blank line, found 0"
269
271
elif blank_before != 2 :
270
272
yield 0 , "E302 expected 2 blank lines, found %d" % blank_before
273
+ elif (logical_line and not indent_level and blank_before != 2 and
274
+ previous_logical_toplevel .startswith (('def' , 'class' ))):
275
+ yield 0 , "E305 expected 2 blank lines before, found %d" % blank_before
271
276
272
277
273
278
def extraneous_whitespace (logical_line ):
@@ -1497,6 +1502,8 @@ def check_logical(self):
1497
1502
if self .logical_line :
1498
1503
self .previous_indent_level = self .indent_level
1499
1504
self .previous_logical = self .logical_line
1505
+ if not self .indent_level :
1506
+ self .previous_logical_toplevel = self .logical_line
1500
1507
self .blank_lines = 0
1501
1508
self .tokens = []
1502
1509
@@ -1566,6 +1573,7 @@ def check_all(self, expected=None, line_offset=0):
1566
1573
self .indent_char = None
1567
1574
self .indent_level = self .previous_indent_level = 0
1568
1575
self .previous_logical = ''
1576
+ self .previous_logical_toplevel = ''
1569
1577
self .tokens = []
1570
1578
self .blank_lines = self .blank_before = 0
1571
1579
parens = 0
0 commit comments