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
F542
t-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
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
F824
global name / nonlocal name is unused: name is never assigned in scope
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.