[flake8]
max-line-length = 119
ignore =
    # Unnecessary dict call - rewrite as a literal.
    C408
    # 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
    # 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
    # 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
    # Consider using !r [shouldn't be used for f-strings]
    B028
    # Missing docstring in public function
    D103
    # Missing docstring in public class
    D101
    # Missing docstring in public method
    D102
exclude = .git,__pycache__,build,docs/_build,dist,scvi/__init__.py
per-file-ignores =
    tests/*: D
    */__init__.py: F401
extend-immutable-calls =
    # Add functions returning immutable values here to avoid B008
    pathlib.Path
    Path
rst-roles =
    class,
    func,
    ref,
    meth,
    doc,
    py:class,
    method,
    attr,
    cite:p,
    cite:t,
rst-directives =
    envvar,
    exception,
rst-substitutions =
    version,
extend-ignore =
    RST307,RST210,RST201,RST203,RST301
