# Can't yet be moved to the pyproject.toml due to https://github.com/PyCQA/flake8/issues/234
[flake8]
max-line-length = 120
ignore =
    # line break before a binary operator -> black does not adhere to PEP8
    W503
    # line break occured after a binary operator -> black does not adhere to PEP8
    W504
    # line too long -> we accept long comment lines; black gets rid of long code lines
    E501
    # whitespace before : -> black does not adhere to PEP8
    E203
    # missing whitespace after ,', ';', or ':' -> black does not adhere to PEP8
    E231
    # continuation line over-indented for hanging indent -> black does not adhere to PEP8
    E126
    # E266 too many leading '#' for block comment -> this is fine for indicating sections
    E262
    # Do not assign a lambda expression, use a def -> lambda expression assignments are convenient
    E731
    # allow I, O, l as variable names -> I is the identity matrix, i, j, k, l is reasonable indexing notation
    E741
    # Missing docstring in public package
    D104
    # ... imported but unused
    F401
    # Missing docstring in public module
    D100
    # Missing docstring in __init__
    D107
    # Do not perform function calls in argument defaults.
    B008
    # line break before binary operator
    W503
    # Missing docstring in magic method
    D105
    # whitespace before ':'
    E203
    # format string does contain unindexed parameters
    P101
exclude = .git,__pycache__,build,docs/_build,dist
per-file-ignores =
    tests/*: D
    */__init__.py: F401
rst-roles =
    class,
    func,
    ref,
    doc,
    cite:p,
    cite:t,
rst-directives =
    envvar,
    exception,
rst-substitutions =
    version,
extend-ignore =
    RST307,
