345 |
345 |
346 E301: class Foo:\n b = 0\n def bar():\n pass |
346 E301: class Foo:\n b = 0\n def bar():\n pass |
347 E302: def a():\n pass\n\ndef b(n):\n pass |
347 E302: def a():\n pass\n\ndef b(n):\n pass |
348 E302: def a():\n pass\n\nasync def b(n):\n pass |
348 E302: def a():\n pass\n\nasync def b(n):\n pass |
349 E303: def a():\n pass\n\n\n\ndef b(n):\n pass |
349 E303: def a():\n pass\n\n\n\ndef b(n):\n pass |
350 E303: def a():\n\n\n\n pass |
|
351 E304: @decorator\n\ndef a():\n pass |
350 E304: @decorator\n\ndef a():\n pass |
352 E305: def a():\n pass\na() |
351 E305: def a():\n pass\na() |
353 E306: def a():\n def b():\n pass\n def c():\n pass |
352 E306: def a():\n def b():\n pass\n def c():\n pass |
|
353 E307: def a():\n def b():\n pass\n\n\n def c():\n pass |
|
354 E308: def a():\n\n\n\n pass |
354 """ |
355 """ |
355 top_level_lines = BLANK_LINES_CONFIG['top_level'] |
356 top_level_lines = BLANK_LINES_CONFIG['top_level'] |
356 method_lines = BLANK_LINES_CONFIG['method'] |
357 method_lines = BLANK_LINES_CONFIG['method'] |
357 |
358 |
358 if line_number < top_level_lines + 1 and not previous_logical: |
359 if line_number < top_level_lines + 1 and not previous_logical: |
361 if blank_lines: |
362 if blank_lines: |
362 yield 0, "E304 blank lines found after function decorator" |
363 yield 0, "E304 blank lines found after function decorator" |
363 elif (blank_lines > top_level_lines or |
364 elif (blank_lines > top_level_lines or |
364 (indent_level and blank_lines == method_lines + 1) |
365 (indent_level and blank_lines == method_lines + 1) |
365 ): |
366 ): |
366 yield 0, "E303 too many blank lines (%d)", blank_lines |
367 if indent_level: |
|
368 if previous_logical.strip().startswith(('def ', 'class ')): |
|
369 yield (0, "E308 too many blank lines (%d)", blank_lines) |
|
370 else: |
|
371 yield (0, "E307 too many blank lines (%d) in a nested " |
|
372 "scope, expected %d", blank_lines, method_lines) |
|
373 else: |
|
374 yield (0, "E303 too many blank lines (%d), expected %d", |
|
375 blank_lines, top_level_lines) |
367 elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line): |
376 elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line): |
368 if indent_level: |
377 if indent_level: |
369 if not (blank_before == method_lines or |
378 if not (blank_before == method_lines or |
370 previous_indent_level < indent_level or |
379 previous_indent_level < indent_level or |
371 DOCSTRING_REGEX.match(previous_logical) |
380 DOCSTRING_REGEX.match(previous_logical) |
378 ancestor_level = expand_indent(line) |
387 ancestor_level = expand_indent(line) |
379 nested = line.lstrip().startswith('def ') |
388 nested = line.lstrip().startswith('def ') |
380 if nested or ancestor_level == 0: |
389 if nested or ancestor_level == 0: |
381 break |
390 break |
382 if nested: |
391 if nested: |
383 yield 0, "E306 expected %s blank line before a " \ |
392 yield (0, "E306 expected %s blank lines before a " |
384 "nested definition, found 0", method_lines |
393 "nested definition, found %d", method_lines, |
|
394 blank_before) |
385 else: |
395 else: |
386 yield (0, "E301 expected %s blank line, found 0", |
396 yield (0, "E301 expected %s blank lines, found %d", |
387 method_lines) |
397 method_lines, blank_before) |
388 elif blank_before != top_level_lines: |
398 elif blank_before != top_level_lines: |
389 yield (0, "E302 expected %s blank lines, found %d", |
399 yield (0, "E302 expected %s blank lines, found %d", |
390 top_level_lines, blank_before) |
400 top_level_lines, blank_before) |
391 elif (logical_line and |
401 elif (logical_line and |
392 not indent_level and |
402 not indent_level and |