# Whitelist Vulture — faux positifs STRUCTURELS uniquement (jamais une # excuse pour ignorer du vrai code mort). Vulture ne "voit" pas qu'un nom # est utilise par CONVENTION (une route Flask enregistree par decorateur # et jamais appelee directement en Python, un hook appele par son nom par # le framework, un champ lu dynamiquement via getattr/**kwargs...) : ce # fichier reference ces noms pour les faire compter comme "utilises", # sans jamais etre execute lui-meme (voir CODE_QUALITY.md, section # Vulture, pour la procedure de mise a jour). # # Vide pour l'instant — rempli en Phase 3 au fur et a mesure des VRAIS # faux positifs releves par le rapport de la Phase 2, jamais en avance de # phase. # app.py::from core import (auth_guard, csrf, csrf_guard, db_teardown_guard, # jinja_filters, recovery_codes_flash) — chacun est un module importe pour # son SEUL effet de bord a l'import (enregistrement d'un hook/filtre Jinja # aupres de Flask), jamais reference par son nom ensuite ; deja marque # # noqa: F401 pour ruff/pyflakes, mais Vulture ne lit pas noqa. from core import ( auth_guard, csrf, csrf_guard, db_teardown_guard, jinja_filters, recovery_codes_flash, ) _ = (auth_guard, csrf, csrf_guard, db_teardown_guard, jinja_filters, recovery_codes_flash) # routes/document/document_theme_preview.py::document_theme_preview(slug, theme_id) — # `slug` doit rester dans la signature (Flask appelle la vue avec un # kwarg par segment / de la route, TypeError sinon), mais # le corps de la fonction ne s'en sert pas : l'aperçu d'un thème ne # dépend d'aucune donnée DU support, `slug` ne sert qu'à laisser # core/auth_guard.py (générique sur `request.view_args.get("slug")`) # vérifier la propriété avant d'atteindre la vue. def _unused_but_required_route_param(slug: str) -> None: _ = slug