[flake8]

# Don't even try to analyze these:
exclude =
  # No need to traverse egg files
  *.egg,
  # Circle CI configs
  .circleci,
  # No need to traverse egg info dir
  *.egg-info,
  # No need to traverse eggs directory
  .eggs,
  # No need to traverse our git directory
  .git,
  # GitHub configs
  .github,
  # Cache files of MyPy
  .mypy_cache,
  # Cache files of pytest
  .pytest_cache,
  # Temp dir of pytest-testmon
  .tmontmp,
  # Countless third-party libs in venvs
  .tox,
  # VS Code
  .vscode,
  # There's no value in checking cache directories
  __pycache__,
  # This contains builds of cheroot that we don't want to check
  dist,
  # Metadata of `pip wheel` cmd is autogenerated
  pip-wheel-metadata,

# Completely and unconditionally ignore the following errors:
ignore =
  # W503 ignored for https://github.com/PyCQA/pycodestyle/issues/498
  W503
  # "PT001 use @pytest.fixture() over @pytest.fixture" ignored because
  # it doesn't look reasonable
  PT001
  # "PT007 wrong values type in @pytest.mark.parametrize, expected list"
  # ignored until https://github.com/m-burst/flake8-pytest-style/issues/2
  # gets solved
  PT007

# Let's not overcomplicate the code:
# 29 is to facilitate the currently present maximum
max-complexity = 29
# max-complexity = 10  # TODO: use this once possible

# Accessibility/large fonts and PEP8 friendly:
max-line-length = 79

# Allow certain violations in certain files:
per-file-ignores =
  # cheroot/makefile.py:125:5: C901 'If 125' is too complex (57)
  cheroot/makefile.py: C901

  # There are multiple `assert`s (S101)
  # and subprocesses (import – S404; call – S603) in tests:
  cheroot/test/test_*.py: S101, S404, S603
