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 |
F705 | a return statement with arguments inside a generator |
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 |
F812 | list comprehension redefines 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 |
Note that some of these entries behave differently on Python 2 and Python 3, for example F812 is specific to Python 2 only.
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.