chore(lint): elargir les regles ruff et rendre le format bloquant en CI

QUA-002, seconde moitie. Le depot etant formate, l elargissement porte sur
des defauts et non sur du brassage.

Ajoute a la selection : B (bugbear), C4, RET, SIM, UP. Le lot entier n a
produit que 24 signalements sur 76 fichiers -- le code etait plus propre
que l audit ne le craignait. Neuf corriges automatiquement, quinze a la
main.

SIM108 est ignore : forcer un ternaire se lit moins bien que le if/else
qu il remplace, au seul endroit ou il se declenche.

isort (I) n est PAS active. Il reordonnerait les imports de 48 fichiers,
soit une seconde passe de pur brassage juste apres le commit de formatage.
A faire, mais seul.

Deux vrais defauts trouves par les nouvelles regles
  - team_matches.edit_match faisait `except ValueError: pass` sur l heure de
    debut et l heure de fin, trois lignes sous un champ date qui, lui,
    signale et redirige. Une heure mal saisie etait donc acceptee par le
    formulaire, jetee, l ancienne valeur conservee -- et la page annoncait
    la reussite. Meme traitement que la date desormais.
  - backup.py levait BackupError depuis deux blocs `except` sans `from`,
    ce qui perdait la cause d origine dans la trace.

Ainsi que : un `return` explicite dans force_https, `%`-formatage remplace
dans log_auth_event (operations de chaine avant journalisation, pas des
gabarits de logger -- la redaction n est pas affectee), une compréhension
inutile, un `set(...)` en compréhension d ensemble, `open(..., 'r')`, une
variable de boucle inutilisee, et `contextlib.suppress` dans conftest.

CI : `ruff format --check` remplace le commentaire qui expliquait pourquoi
il etait absent.

263 tests passent. Les deux nouveaux messages sont traduits ; attention,
pybabel les avait apparies en `fuzzy` avec des entrees « date » existantes,
et une entree fuzzy est ignoree a l execution.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
GGThed
2026-08-08 15:59:40 -04:00
co-authored by Claude Opus 5
parent 7cec18c139
commit 8e3865f557
17 changed files with 475 additions and 439 deletions
+3 -6
View File
@@ -5,6 +5,7 @@ here: no environment variable is required to run the suite, no database
server is needed, and the Discord bot never starts.
"""
import contextlib
import os
import sys
import tempfile
@@ -87,10 +88,8 @@ def app():
with application.app_context():
_db.session.remove()
_db.engine.dispose()
try:
with contextlib.suppress(OSError):
os.unlink(db_path)
except OSError:
pass
@pytest.fixture
@@ -106,10 +105,8 @@ def app_with_csrf():
with application.app_context():
_db.session.remove()
_db.engine.dispose()
try:
with contextlib.suppress(OSError):
os.unlink(db_path)
except OSError:
pass
@pytest.fixture
+1 -2
View File
@@ -182,7 +182,6 @@ class TestCatalogueIntegrity:
@pytest.mark.parametrize('locale', SUPPORTED_LOCALES)
def test_every_message_is_translated(self, locale):
import io
import os
from babel.messages.pofile import read_po
@@ -195,7 +194,7 @@ class TestCatalogueIntegrity:
'LC_MESSAGES',
'messages.po',
)
with io.open(path, encoding='utf-8') as handle:
with open(path, encoding='utf-8') as handle:
catalog = read_po(handle, locale=locale)
untranslated = [m.id for m in catalog if m.id and not m.string]