[flake8]
# max_line_length = 79
# max-complexity = 10
doctests = true
# https://github.com/psf/black/blob/main/docs/guides/using_black_with_other_tools.md
# - E203: whitespace before ‘,’, ‘;’, or ‘:’
# - E701: multiple statements on one line (colon)
# - E704: multiple statements on one line (def)
# + W504: line break after binary operator
# https://www.pydocstyle.org/en/stable/error_codes.html
# - D105: undocumented-magic-method
# - D107: undocumented-public-init
# https://github.com/gforcada/flake8-builtins?tab=readme-ov-file#rules
# - A003: A class attribute is shadowing a Python builtin.
# - A005: A module is shadowing a Python builtin module (e.g: logging or socket)
# https://github.com/PyCQA/flake8-bugbear?tab=readme-ov-file#list-of-warnings
# + B950: (smart) Line too long
# https://github.com/orsinium-labs/flake8-todos
# - T003: add link on issue into TODO.
# https://github.com/plinss/flake8-noqa?tab=readme-ov-file#error-codes
# NQA102: "# noqa: X000" has no matching violations
# misc
# - I  # flake8-import-order: not compatible with isort
# - SC  # flake8-spellcheck: too aggressive
# - CNL  # flake8-class-newline: incompatible with black
extend-ignore = E203,E501,E701,W503,SC,CNL
extend-select = W504,B950
per-file-ignores =
    tests/*: D,ANN,C812,PT009,PT027,T003,T201,NIC002
    */tests/*: D,ANN,C812,PT009,PT027,T003,T201,NIC002
statistics = True
count = True
# extend-exclude = packagename/subpackage/*

# flake8-cognitive-complexity
# max-cognitive-complexity = 7  # default
max-cognitive-complexity = 11

# flake8-noqa
noqa-require-code = True

# flake8-spellcheck
dictionaries = en_US,python,technical,pandas
# spellcheck-allowlist-file = .spellcheck-allowlist
