Skip to content

Latest commit

 

History

History
126 lines (117 loc) · 8.58 KB

error-codes.rst

File metadata and controls

126 lines (117 loc) · 8.58 KB

Error / Violation Codes

Flake8 and its plugins assign a code to each message that we refer to as an error code (or violation). Most plugins will list their error codes in their documentation or README.

Flake8 installs pycodestyle, pyflakes, and mccabe by default and generates its own error codes for pyflakes:

+------+---------------------------------------------------------------------+ | Code | Example Message | +======+=====================================================================+ | F401 | module imported but unused | +------+---------------------------------------------------------------------+ | F402 | import module from line N shadowed by loop variable | +------+---------------------------------------------------------------------+ | F403 | 'from module import *' used; unable to detect undefined names | +------+---------------------------------------------------------------------+ | F404 | future import(s) name after other statements | +------+---------------------------------------------------------------------+ | F405 | name may be undefined, or defined from star imports: module | +------+---------------------------------------------------------------------+ | F406 | 'from module import *' only allowed at module level | +------+---------------------------------------------------------------------+ | F407 | an undefined __future__ feature name was imported | +------+---------------------------------------------------------------------+ +------+---------------------------------------------------------------------+ | F501 | invalid % format literal | +------+---------------------------------------------------------------------+ | F502 | % format expected mapping but got sequence | +------+---------------------------------------------------------------------+ | F503 | % format expected sequence but got mapping | +------+---------------------------------------------------------------------+ | F504 | % format unused named arguments | +------+---------------------------------------------------------------------+ | F505 | % format missing named arguments | +------+---------------------------------------------------------------------+ | F506 | % format mixed positional and named arguments | +------+---------------------------------------------------------------------+ | F507 | % format mismatch of placeholder and argument count | +------+---------------------------------------------------------------------+ | F508 | % format with * specifier requires a sequence | +------+---------------------------------------------------------------------+ | F509 | % format with unsupported format character | +------+---------------------------------------------------------------------+ | F521 | .format(...) invalid format string | +------+---------------------------------------------------------------------+ | F522 | .format(...) unused named arguments | +------+---------------------------------------------------------------------+ | F523 | .format(...) unused positional arguments | +------+---------------------------------------------------------------------+ | F524 | .format(...) missing argument | +------+---------------------------------------------------------------------+ | F525 | .format(...) mixing automatic and manual numbering | +------+---------------------------------------------------------------------+ | F541 | f-string without any placeholders | +------+---------------------------------------------------------------------+ +------+---------------------------------------------------------------------+ | F601 | dictionary key name repeated with different values | +------+---------------------------------------------------------------------+ | F602 | dictionary key variable name repeated with different values | +------+---------------------------------------------------------------------+ | F621 | too many expressions in an assignment with star-unpacking | +------+---------------------------------------------------------------------+ | F622 | two or more starred expressions in an assignment (a, *b, *c = d)| +------+---------------------------------------------------------------------+ | F631 | assertion test is a tuple, which is always True | +------+---------------------------------------------------------------------+ | F632 | use ==/!= to compare str, bytes, and int literals | +------+---------------------------------------------------------------------+ | F633 | use of >> is invalid with print function | +------+---------------------------------------------------------------------+ | F634 | if test is a tuple, which is always True | +------+---------------------------------------------------------------------+ +------+---------------------------------------------------------------------+ | F701 | a break statement outside of a while or for loop | +------+---------------------------------------------------------------------+ | F702 | a continue statement outside of a while or for loop | +------+---------------------------------------------------------------------+ | F703 | a continue statement in a finally block in a loop | +------+---------------------------------------------------------------------+ | F704 | a yield or yield from statement outside of a function | +------+---------------------------------------------------------------------+ | F706 | a return statement outside of a function/method | +------+---------------------------------------------------------------------+ | F707 | an except: block as not the last exception handler | +------+---------------------------------------------------------------------+ | F721 | syntax error in doctest | +------+---------------------------------------------------------------------+ | F722 | syntax error in forward annotation | +------+---------------------------------------------------------------------+ | F723 | syntax error in type comment | +------+---------------------------------------------------------------------+ +------+---------------------------------------------------------------------+ | F811 | redefinition of unused name from line N | +------+---------------------------------------------------------------------+ | F821 | undefined name name | +------+---------------------------------------------------------------------+ | F822 | undefined name name in __all__ | +------+---------------------------------------------------------------------+ | F823 | local variable name ... referenced before assignment | +------+---------------------------------------------------------------------+ | F831 | duplicate argument name in function definition | +------+---------------------------------------------------------------------+ | F841 | local variable name is assigned to but never used | +------+---------------------------------------------------------------------+ +------+---------------------------------------------------------------------+ | F901 | raise NotImplemented should be raise NotImplementedError | +------+---------------------------------------------------------------------+

We also report one extra error: E999. We report E999 when we fail to compile a file into an Abstract Syntax Tree for the plugins that require it.

mccabe only ever reports one violation - C901 based on the complexity value provided by the user.

Users should also reference pycodestyle's list of error codes.