# 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
    # line break before binary operator -> black does not adhere to PEP8
    W503
    # 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
    # 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
    E741
    # Missing docstring in public package
    D104
    # Missing docstring in public module
    D100
    # Missing docstring in __init__
    D107
    # Errors from function calls in argument defaults. These are fine when the result is immutable.
    B008
    # Missing docstring in magic method
    D105
    # format string does contain unindexed parameters
    P101
    # first line should end with a period [Bug: doesn't work with single-line docstrings]
    D400
    # First line should be in imperative mood; try rephrasing
    D401
exclude = .git,__pycache__,build,docs/_build,dist
per-file-ignores =
    tests/*: D
    */__init__.py: F401
    src/spatialdata_io/_constants/_enum.py: RST, D
rst-roles =
    class,
    func,
    ref,
    attr,
    cite:p,
    cite:t,
rst-directives =
    envvar,
    exception,
    seealso,
rst-substitutions =
    version,
extend-ignore =
    RST307,
