Ctrl K
ComunidadGuías…

pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[tool.ruff]
line-length = 88
target-version = 'py39'
# Modules and module_utils run on the managed node, down to Python 3.6 on RHEL 8, and their
# tests run there too (tox.ini, py36-target). py37 is the oldest target ruff knows; it keeps
# the formatter and pyupgrade from introducing newer syntax such as parenthesized context
# managers.
per-file-target-version = { 'plugins/module_utils/**' = 'py37', 'plugins/modules/**' = 'py37', 'tests/ansible_harness.py' = 'py37', 'tests/conftest.py' = 'py37', 'tests/exoscale_fake.py' = 'py37', 'tests/unit/plugins/module_utils/**' = 'py37', 'tests/unit/plugins/modules/**' = 'py37' }
# Vendored upstream code that is kept as-is so patches stay sendable, plus the
# vulture whitelist, which is a list of bare names by construction and not
# runnable Python.
exclude = [
    '.vulture_whitelist.py',
    'plugins/module_utils/gnupg.py',
    'plugins/modules/ipa*.py',
]

[tool.ruff.lint]
select = [
    'B',    # flake8-bugbear (potential bugs)
    'C4',   # flake8-comprehensions
    'E',    # pycodestyle errors
    'F',    # pyflakes (logic errors)
    'I',    # isort (import sorting)
    'RUF',  # Ruff-specific rules
    'SIM',  # flake8-simplify
    'UP',   # pyupgrade (modernize syntax for py39+)
    'W',    # pycodestyle warnings
]
ignore = [
    'C408',    # dict() instead of a literal (Ansible argument_spec convention)
    'E402',    # import not at top of file (the DOCUMENTATION block comes first)
    'E501',    # line too long (handled by code review, not auto-enforcement)
    'SIM102',  # nested if statements (sometimes clearer than combined conditions)
    'SIM105',  # contextlib.suppress (try/except/pass is more explicit)
    'UP001',   # __metaclass__ = type is obsolete (Ansible module preamble)
    'UP009',   # UTF-8 encoding declaration (we keep our standard file header)
    'UP010',   # unnecessary __future__ import (Ansible module preamble)
    'UP015',   # redundant open() mode (we keep explicit modes for clarity)
]

[tool.ruff.format]
docstring-code-format = true
quote-style = 'single'

# Configuration for tools that the LFOps repo runs under pre-commit.
# This file does *not* describe the Ansible collection itself — that lives
# in galaxy.yml. It exists only to point the linters at the right paths.

[tool.vulture]
# The pre-commit hook passes the files explicitly (see .pre-commit-config.yaml), so
# `paths` only applies to a plain `vulture` run by hand, which only finds `*.py` files
# there and misses the extension-less scripts in `tools/`.
#
# The whitelist file lists pre-existing findings (tracked in
# https://github.com/Linuxfabrik/lfops/issues/221) so unrelated commits
# don't fail the hook. Drop entries from .vulture_whitelist.py as the
# real issues are fixed.
paths = ['plugins', '.vulture_whitelist.py']
min_confidence = 80

[tool.pytest.ini_options]
# Unit tests for the in-house plugins. The matrix of Python / ansible-core
# versions is driven by tox; see tox.ini.
testpaths = ['tests/unit']
# importlib mode lets same-named test files live in different plugin-type
# directories (e.g. modules/ and lookup/ both have test_bitwarden_item.py)
# without needing __init__.py packages.
addopts = ['--import-mode=importlib']

[tool.bandit]
# B110 (try/except/pass) and B112 (try/except/continue): intentional patterns
# for graceful degradation.
# B311 (pseudo-random): not used for cryptographic purposes.
skips = ['B110', 'B112', 'B311']

[tool.bandit.assert_used]
# A test suite may assert with the bare statement, so B101 does not apply under
# tests/. bandit still scans the directory for every other finding.
skips = ['*/tests/*.py', 'tests/*.py']