[flake8]

builtins = _

# Print the total number of errors:
count = true

# Don't even try to analyze these:
extend-exclude =
  # No need to traverse egg info dir
  *.egg-info,
  # tool cache dirs
  *_cache
  # project env vars
  .env,
  # GitHub configs
  .github,
  # Cache files of MyPy
  .mypy_cache,
  # Cache files of pytest
  .pytest_cache,
  # Temp dir of pytest-testmon
  .tmontmp,
  # Occasional virtualenv dir
  .venv
  # VS Code
  .vscode,
  # Temporary build dir
  build,
  # This contains sdists and wheels of ansible-navigator that we don't want to check
  dist,
  # Metadata of `pip wheel` cmd is autogenerated
  pip-wheel-metadata,
  # adjacent venv
  venv

# IMPORTANT: avoid using ignore option, always use extend-ignore instead
# Completely and unconditionally ignore the following errors:
extend-ignore =
  Q  # Safeguard neutering of flake8-quotes : https://github.com/zheller/flake8-quotes/issues/105
  E203,  # annoy black by allowing white space before : https://github.com/psf/black/issues/315
  F401,  # duplicate of pylint W0611 (unused-import)
  F821,  # duplicate of pylint E0602 (undefined-variable)
  F841,  # duplicate of pylint W0612 (unused-variable)

# Accessibility/large fonts and PEP8 unfriendly:
max-line-length = 100

# Allow certain violations in certain files:
# Please keep both sections of this list sorted, as it will be easier for others to find and add entries in the future
per-file-ignores =
  # The following ignores have been researched and should be considered permanent
  # each should be preceeded with an explanation of each of the error codes
  # If other ignores are added for a specific file in the section following this,
  # these will need to be added to that line as well.

  # S101: Allow the use of assert within the tests directory, since tests require it.
  tests/**.py: S101

  # The tokenization code is vendored and not a priority for docstrings.
  src/ansible_navigator/tm_tokenize/__init__.py: D104
  src/ansible_navigator/tm_tokenize/compiler.py: D100, D101, D102
  src/ansible_navigator/tm_tokenize/fchainmap.py: D100, D101, D105
  src/ansible_navigator/tm_tokenize/grammars.py: D100, D101, D102
  src/ansible_navigator/tm_tokenize/reg.py: D100, D103
  src/ansible_navigator/tm_tokenize/region.py: D100, D101
  src/ansible_navigator/tm_tokenize/rules.py: D100, D101, D102, D400
  src/ansible_navigator/tm_tokenize/state.py: D100, D101, D102
  src/ansible_navigator/tm_tokenize/tokenize.py: D100, D201, D400, D403, DAR101, DAR201
  src/ansible_navigator/tm_tokenize/utils.py: D100, D400, D403, DAR101, DAR201

  # The following were present during the initial implementation.
  # They are expected to be fixed and unignored over time.
  src/ansible_navigator/ui_framework/validators.py: D400, D401, D403, DAR101, DAR201, DAR401
  tests/conftest.py: D210, D400, D401, D403, DAR101, DAR201, DAR301, DAR401
  tests/integration/_action_run_test.py: D205, D400, D401, D403, DAR101, DAR201, DAR401
  tests/integration/_cli2runner.py: D400, D401, D403, DAR101, DAR401
  tests/integration/_common.py: D103, D400, D401, D403, DAR101, DAR201, DAR401
  tests/integration/_interactions.py: D204, D400, D403, DAR101, DAR201
  tests/integration/_tmux_session.py: D105, D205, D400, D403, DAR101, DAR201, DAR401
  tests/integration/conftest.py: D205, D400, D401, D403, DAR101, DAR201, DAR301
  tests/integration/test_stdout_exit_codes.py: D400, D403, DAR101, DAR201
  tests/unit/configuration_subsystem/defaults.py: D400
  tests/unit/configuration_subsystem/test_entries_sanity.py: D400, DAR101
  tests/unit/configuration_subsystem/test_fixture_sanity.py: D205, D400
  tests/unit/configuration_subsystem/test_invalid_params.py: D400, DAR101
  tests/unit/configuration_subsystem/test_mode_subcommand_action.py: D205, D400
  tests/unit/configuration_subsystem/test_precedence.py: D205, D400, DAR101
  tests/unit/configuration_subsystem/test_previous_cli.py: D205, D400
  tests/unit/configuration_subsystem/test_sample_configurations.py: D205, D400
  tests/unit/configuration_subsystem/utils.py: D400, DAR101, DAR201

# Count the number of occurrences of each error/warning code and print a report:
statistics = true
