[flake8]
exclude =
    .git,
    .tox,
    .venv,
    arelle/plugin/EDGAR,
    arelle/plugin/FERC,
    arelle/plugin/iXBRLViewerPlugin
    arelle/plugin/semanticHash.py,
    arelle/plugin/serializer,
    arelle/plugin/SimpleXBRLModel,
    arelle/plugin/validate/DQC.py,
    arelle/plugin/validate/eforms.py,
    arelle/plugin/validate/ESEF-DQC.py,
    arelle/plugin/xendr,
    arelle/plugin/Xince.py,
    arelle/plugin/xodel,
    arelle/plugin/xule,
    arelle/resources,
    bin,
    build,
    deps,
    docs,
    lib,
    tests/resources,
    venv
doctests = True
noqa-require-code = True

ignore =
    # indentation contains mixed spaces and tabs
    E101,
    # indentation is not a multiple of 4
    E111,
    # indentation is not a multiple of 4 (comment)
    E114,
    # expected an indented block (comment)
    E115,
    # E116 unexpected indentation (comment)
    E116,
    # over-indented
    E117,
    # continuation line under-indented for hanging indent
    E121,
    # continuation line missing indentation or outdented
    E122,
    # closing bracket does not match indentation of opening bracket's line
    E123,
    # closing bracket does not match visual indentation
    E124,
    # continuation line with same indent as next logical line
    E125,
    # continuation line over-indented for hanging indent
    E126,
    # continuation line over-indented for visual indent
    E127,
    # continuation line under-indented for visual indent
    E128,
    # visually indented line with same indent as next logical line
    E129,
    # continuation line unaligned for hanging indent
    E131,
    # whitespace after '('
    E201,
    # whitespace before ')'
    E202,
    # whitespace before ':'
    E203,
    # whitespace before '('
    E211,
    # multiple spaces before operator
    E221,
    # multiple spaces after operator
    E222,
    # missing whitespace around operator
    E225,
    # missing whitespace around arithmetic operator
    E226,
    # missing whitespace around bitwise or shift operator
    E227,
    # missing whitespace around modulo operator
    E228,
    # missing whitespace after ':'
    E231,
    # multiple spaces after ','
    E241,
    # unexpected spaces around keyword / parameter equals
    E251,
    # missing whitespace around parameter equals
    E252,
    # at least two spaces before inline comment
    E261,
    # inline comment should start with '# '
    E262,
    # block comment should start with '# '
    E265,
    # too many leading '#' for block comment
    E266,
    # multiple spaces after keyword
    E271,
    # multiple spaces before keyword
    E272,
    # missing whitespace after keyword
    E275,
    # expected 1 blank line
    E301,
    # expected 2 blank lines
    E302,
    # too many blank lines
    E303,
    # expected 2 blank lines after class or function definition
    E305,
    # expected 1 blank line before a nested definition, found n
    E306,
    # multiple imports on one line
    E401,
    # module level import not at top of file
    E402,
    # line too long
    E501,
    # the backslash is redundant between brackets
    E502,
    # multiple statements on one line (colon)
    E701,
    # multiple statements on one line (semicolon)
    E702,
    # statement ends with a semicolon
    E703,
    # multiple statements on one line (def)
    E704,
    # comparison to None should be 'if cond is not None:'
    E711,
    # comparison to True should be 'if cond is True:' or 'if cond:'
    E712,
    # test for membership should be 'not in'
    E713,
    # test for object identity should be 'is not'
    E714,
    # do not compare types, use 'isinstance()'
    E721,
    # do not use bare 'except'
    E722,
    # do not assign a lambda expression, use a def
    E731,
    # ambiguous variable name
    E741,

    # imported but unused
    F401,
    # import 'xxx' from line 15 shadowed by loop variable
    F402,
    # 'from xxx import *' used; unable to detect undefined names
    F403,
    # xxx may be undefined, or defined from star imports: xxx
    F405,
    # '...'  ... has unused named argument(s)
    F504,
    # '...'.format(...) has unused arguments at position(s): n
    F523,
    # '...'.format(...) is missing argument(s) for placeholder(s): n
    F524,
    # dictionary key 'xs' repeated with different values
    F601,
    # redefinition of unused 'xxx' from line 31
    F811,
    # undefined name
    F821,
    # local variable 'id' defined as a builtin referenced before assignment
    F823,
    # local variable name is assigned to but never used
    F841,

    # line break before binary operator
    W503,
    # line break after binary operator
    W504,
