[flake8]
exclude =
    .git,
    __pycache__,
    build,
    dist,
	env,
	venv,
	docs/_build

docstring-convention = numpy
max-line-length = 88

max_complexity = 100
max_function_length = 650
max_parameters_amount = 12
max_returns_amount = 30

# ----------------------- errors to include / exclude -----------------------

# See https://flake8.pycqa.org/en/latest/user/violations.html#selecting-violations-with-flake8

# For PEP8 error codes see:
# http://pep8.readthedocs.org/en/latest/intro.html#error-codes
#
# The ruff website also has a very didactic explanations on the reasons
# why those rules exist:
# https://docs.astral.sh/ruff/rules/

#   Non-exhaustive listing:
#
#   B: flake8 bugbear errors
#   CFQ: flake8 functions errors
#   D: pydocstyle
# 		D100-D104: missing docstring
# 		D105: missing docstring in magic method
# 		D107: missing docstring in __init__
# 		D205: 1 blank line required between summary line and description
# 		D400: first line should end with a period
#   E: errors
#		E203 whitespace before ':'
#			is for compatibility with black
# 			https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#flake8
# 		E402: module level import not at top of file
# 	F401: module imported but unused
#   W: warnings
# 		W503: line break before binary operator
# 		W504: line break after binary operator

--select = B,D,E,F,W,C90,CFQ

; per-file-ignores =
; 	**/__init__.py: D104
;     # - docstrings rules that should not be applied to tests
; 	**/tests/*: D100, D101, D102, D103
;     # - docstrings rules that should not be applied to examples
; 	examples/*/*: D103, D205, D301, D400
;     # - docstrings rules that should not be applied to doc
; 	doc/*: D103, F401

extend-ignore = B005, B006, B007, B008, D100, D101, D102, D103, D104, D105, D200, D202, D205, D208, D400, D401, D404, D405, D407, D411, E501, E713, E721, F401, F405, F403, F841, F821, FS001, FS002
