@@ -238,7 +238,8 @@ def maximum_line_length(physical_line, max_line_length, multiline, noqa):
238238
239239def blank_lines (logical_line , blank_lines , indent_level , line_number ,
240240 blank_before , previous_logical ,
241- previous_unindented_logical_line , previous_indent_level ):
241+ previous_unindented_logical_line , previous_indent_level ,
242+ lines ):
242243 r"""Separate top-level function and class definitions with two blank lines.
243244
244245 Method definitions inside a class are separated by a single blank line.
@@ -270,7 +271,19 @@ def blank_lines(logical_line, blank_lines, indent_level, line_number,
270271 if indent_level :
271272 if not (blank_before or previous_indent_level < indent_level or
272273 DOCSTRING_REGEX .match (previous_logical )):
273- yield 0 , "E301 expected 1 blank line, found 0"
274+ ancestor_level = indent_level
275+ nested = False
276+ for line in lines [line_number - 2 ::- 1 ]:
277+ if line .strip () and expand_indent (line ) < ancestor_level :
278+ ancestor_level = expand_indent (line )
279+ nested = line .lstrip ().startswith ('def ' )
280+ if nested or ancestor_level == 0 :
281+ break
282+ if nested :
283+ yield 0 , "E306 expected 1 blank line, found 0" \
284+ " (nested definition)"
285+ else :
286+ yield 0 , "E301 expected 1 blank line, found 0"
274287 elif blank_before != 2 :
275288 yield 0 , "E302 expected 2 blank lines, found %d" % blank_before
276289 elif (logical_line and not indent_level and blank_before != 2 and
0 commit comments