[flake8]
ignore =
    E101, # indentation contains mixed spaces and tabs
    W191, # indentation contains tabs
    E111, # indentation is not a multiple of four
    E114, # indentation is not a multiple of four (comment)
    E116, # unexpected indentation (comment)
    E242, # tab after ','
    E251, # unexpected spaces around keyword / parameter equals
    E262, # inline comment should start with '# '
    E265, # block comment should start with '# '
    E266, # too many leading '#' for block comment
    E402, # module level import not at top of file
    E501, # line too long (183 > 150 characters)
    E502, # the backslash is redundant between brackets
    E701, # multiple statements on one line (colon)
    E702, # multiple statements on one line (semicolon)
    E703, # statement ends with a semicolon
    E711, # comparison to None should be 'if cond is None:'
    E712, # comparison to True should be 'if cond is True:' or 'if cond:'
    E713, # test for membership should be 'not in'
    E721, # do not compare types, use 'isinstance()'
    E722, # do not use bare 'except'
    E731, # do not assign a lambda expression, use a def
    E741, # ambiguous variable name 'l'
    F401, # '.reader.BandReferenceReader' imported but unused
    F403, # 'from ctypes import *' used; unable to detect undefined names
    F405, # 'RasterRow' may be undefined, or defined from star imports: ctypes, grass.pygrass.raster, grass.pygrass.vector
    F811, # redefinition of unused 'utils' from line 26
    F821, # undefined name '_'
    F841, # local variable 't0' is assigned to but never used
    F901, # 'raise NotImplemented' should be 'raise NotImplementedError'
    W605, # invalid escape sequence '\_'
    W291, # trailing whitespace
    W292, # no newline at end of file
    W293, # blank line contains whitespace
    W391, # blank line at end of file
    W503, # line break before binary operator
    W504, # line break after binary operator
    E117, # over-indented
    E121, # continuation line under-indented for hanging indent
    E122, # continuation line missing indentation or outdented
    E123, # closing bracket does not match indentation of opening bracket's line
    E124, # closing bracket does not match visual indentation
    E125, # continuation line with same indent as next logical line
    E126, # continuation line over-indented for hanging indent
    E127, # continuation line over-indented for visual indent
    E128, # continuation line under-indented for visual indent
    E129, # visually indented line with same indent as next logical line
    E201, # whitespace after '{'
    E202, # whitespace before ')'
    E203, # whitespace before ':'
    E211, # whitespace before '('
    E221, # multiple spaces before operator
    E222, # multiple spaces after operator
    E225, # missing whitespace around operator
    E226, # missing whitespace around arithmetic operator
    E228, # missing whitespace around modulo operator
    E231, # missing whitespace after ':'
    E241, # multiple spaces after ','
    E261, # at least two spaces before inline comment
    E271, # multiple spaces after keyword
    E272, # multiple spaces before keyword
    E301, # expected 1 blank line, found 0
    E302, # expected 2 blank lines, found 1
    E303, # too many blank lines (3)
    E305, # expected 2 blank lines after class or function definition, found 1
    E401, # multiple imports on one line

max-line-length = 88
exclude =
    .git,
    __pycache__,
    .env,
    .venv,
    env,
    venv,
    ENV,
    env.bak,
    venv.bak,
    ctypes,
    pydispatch,
    testsuite,
