[flake8]
max-line-length = 120

extend-ignore =
    # black
    E203,
    # too many leading '#' for block comment
    E266,
    # expected 2 blank lines, found 1
    E302,
    # do not use mutable data structures for argument defaults (too many false positives)
    B006,
    # ===== TODO: to be fixed:
    # invalid escape sequence, necessary for sphinx directives in docstrings but should switch to raw string
    W605,
    # line length, exceeded by some docstrings
    E501,
    # Function definition does not bind loop variable, happens everywhere in our code
    B023,
    # pydocstyle
    D

# Only add patterns here that are not included by the defaults of flake8 or other plugins
# extend-select =

# flake8-docstrings
docstring-convention = numpy

# flake8-rst-docstrings
rst-roles =
    class,
    func,
    ref,
    meth,

rst-directives =
    # Custom directives defined in the sphinx_mdolab_theme
    embed-compare,
    embed-bibtex,
    embed-code,
    embed-shell-cmd,
    embed-n2,

# mccabe complexity
# max-complexity = 10

# ignored files/directories
# we use exclude here and extend-exclude in repo-specific config files
# so that we can pass both to flake8 directly without needing to merge them first
exclude =
    # No need to traverse the git directory
    .git,
    # There's no value in checking cache directories
    __pycache__,
    # The conf file is mostly autogenerated, ignore it
    doc/conf.py,
    # No need for init and setup files
    __init__.py,
    setup.py,