FLAKE8 = {
    # pyflakes
    "F401": "%r imported but unused",
    "F402": "import %r from line %r shadowed by loop variable",
    "F403": "'from %s import *' used; unable to detect undefined names",
    "F404": "future import(s) name after other statements",
    "F405": "%r may be undefined, or defined from star imports: %s",
    "F406": "'from %s import *' only allowed at module level",
    "F407": "an undefined __future__ feature name was imported",
    "F501": "'...' %% ... has invalid format string: %s",
    "F502": "'...' %% ... expected mapping but got sequence",
    "F503": "'...' %% ... expected sequence but got mapping",
    "F504": "'...' %% ... has unused named argument(s): %s",
    "F505": "'...' %% ... is missing argument(s) for placeholder(s): %s",
    "F506": "'...' %% ... has mixed positional and named placeholders",
    "F507": "'...' %% ... has %d placeholder(s) but %d substitution(s)",
    "F508": "'...' %% ... `*` specifier requires sequence",
    "F509": "'...' %% ... has unsupported format character %r",
    "F521": "'...'.format(...) has invalid format string: %s",
    "F522": "'...'.format(...) has unused named argument(s): %s",
    "F523": "'...'.format(...) has unused arguments at position(s): %s",
    "F524": "'...'.format(...) is missing argument(s) for placeholder(s): %s",
    "F525": "'...'.format(...) mixes automatic and manual numbering",
    "F541": "f-string is missing placeholders",
    "F601": "dictionary key %r repeated with different values",
    "F602": "dictionary key variable %s 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 constant literals (str, bytes, int, float, tuple)",
    "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 %r",
    "F723": "syntax error in type comment",
    "F811": "redefinition of unused %r from line %r",
    "F821": "undefined name %r",
    "F822": "undefined name %r in __all__",
    # default = 'defined in enclosing scope on line %r'
    # builtin = 'defined as a builtin'
    "F823": "local variable %r %s referenced before assignment",
    "F831": "duplicate argument %r in function definition",
    "F841": "local variable %r is assigned to but never used",
    "F901": "'raise NotImplemented' should be 'raise NotImplementedError'",
    # pycodestyle
    "E101": "indentation contains mixed spaces and tabs",
    "E111": "indentation is not a multiple of %d",
    "E112": "expected an indented block",
    "W191": "indentation contains tabs",
    "W291": "trailing whitespace",
    "W293": "blank line contains whitespace",
    "W391": "blank line at end of file",
    "W292": "no newline at end of file",
    "E501": "line too long (%d > %d characters)",
    "E304": "blank lines found after function decorator",
    "E303": "too many blank lines (%d)",
    "E306": "expected %s blank line before a nested definition, found 0",
    "E301": "expected %s blank line, found 0",
    "E302": "expected %s blank lines, found %d",
    "E305": "expected %s blank lines after class or function definition, found %d",
    "E201": "whitespace after '%s'",
    "E274": "tab before keyword",
    "E272": "multiple spaces before keyword",
    "E273": "tab after keyword",
    "E271": "multiple spaces after keyword",
    "E275": "missing whitespace after keyword",
    "E124": "closing bracket does not match visual indentation",
    "E133": "closing bracket is missing indentation",
    "E128": "continuation line under-indented for visual indent",
    "E123": "closing bracket does not match indentation of opening bracket's line",
    "E122": "missing indentation or outdented",
    "E127": "over-indented for visual indent",
    "E131": "unaligned for hanging indent",
    "E126": "over-indented for hanging indent",
    "E121": "under-indented for hanging indent",
    "E129": "visually indented line",
    "E125": "continuation line",
    "E211": "whitespace before '%s'",
    "E223": "tab before operator",
    "E221": "multiple spaces before operator",
    "E224": "tab after operator",
    "E222": "multiple spaces after operator",
    "E225": "missing whitespace around operator",
    "E242": "tab after '%s'",
    "E241": "multiple spaces after '%s'",
    "E251": "unexpected spaces around keyword / parameter equals",
    "E252": "missing whitespace around parameter equals",
    "E261": "at least two spaces before inline comment",
    "E262": "inline comment should start with '# '",
    "E265": "block comment should start with '# '",
    "E266": "too many leading '#' for block comment",
    "E401": "multiple imports on one line",
    "E402": "module level import not at top of file",
    "E731": "do not assign a lambda expression, use a def",
    "E704": "multiple statements on one line (def)",
    "E701": "multiple statements on one line (colon)",
    "E702": "multiple statements on one line (semicolon)",
    "E703": "statement ends with a semicolon",
    "E502": "the backslash is redundant between brackets",
    "W503": "line break before binary operator",
    "W504": "line break after binary operator",
    "E712": "comparison to %s should be 'if%s cond:'",
    "E713": "test for membership should be 'not in'",
    "E714": "test for object identity should be 'is not'",
    "E721": "do not compare types, for exact checks use `is` / `is not`, for instance checks use `isinstance()`",
    "E722": "do not use bare 'except'",
    "E742": "ambiguous class definition '%s'",
    "E743": "ambiguous function definition '%s'",
    "E741": "ambiguous variable name '%s'",
    "W605": "invalid escape sequence '\\%s'",
    "W505": "doc line too long (%d > %d characters)",
}
