From a60baf743e0e66c87ef3cfacba42a472f577715c Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Thu, 3 Sep 2026 02:13:57 -0400 Subject: [PATCH] [FIX] commit msg : chercher lib_identifiant sans masquer GitPython MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le répertoire ajouté est `script/`, qui porte un `git/` : en tête de `sys.path`, il fait résoudre `import git` vers ce paquet plutôt que vers GitPython, pour tout module importé ENSUITE dans le même processus — une bibliothèque tierce disparaît parce qu'une des nôtres porte le même nom. En queue, `lib_identifiant` se trouve toujours et les paquets installés gardent la priorité ; la racine du dépôt suit la même règle, elle porte un `test/` homonyme d'un paquet standard. Mesuré : `unittest discover -p 'test_git*.py'` passe de 49 tests et une erreur d'import à 84 verts ; le hook commit-msg reste vérifié. --- EN --- The directory being added is `script/`, which holds a `git/`: at the head of `sys.path` it makes `import git` resolve to that package rather than to GitPython, for every module imported AFTERWARDS in the same process — a third-party library vanishes because one of ours bears the same name. At the tail, `lib_identifiant` is still found and installed packages keep their precedence; the repository root follows the same rule, it holds a `test/` sharing its name with a standard library package. Measured: `unittest discover -p 'test_git*.py'` goes from 49 tests and one import error to 84 green; the commit-msg hook stays verified. Assisted-by: Claude Opus 5 --- script/git/commit_msg_lib.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/script/git/commit_msg_lib.py b/script/git/commit_msg_lib.py index f4f1b6c..d449a63 100644 --- a/script/git/commit_msg_lib.py +++ b/script/git/commit_msg_lib.py @@ -21,7 +21,13 @@ import re import sys from pathlib import Path -sys.path.insert(0, str(Path(__file__).resolve().parents[1])) +# APPEND et non insert(0) : ce répertoire est `script/`, qui contient +# `git/`. En tête de `sys.path`, il fait résoudre `import git` vers +# `script/git/` au lieu de GitPython, pour tout module importé ensuite — +# une bibliothèque tierce disparaît alors parce qu'une des nôtres porte le +# même nom. En queue, `lib_identifiant` se trouve toujours, et les paquets +# installés gardent la priorité qui leur revient. +sys.path.append(str(Path(__file__).resolve().parents[1])) from lib_identifiant import ( # noqa: E402 NOMS_INTERDITS, @@ -29,7 +35,9 @@ from lib_identifiant import ( # noqa: E402 termes_interdits, ) -sys.path.insert(0, str(Path(__file__).resolve().parents[2])) +# Même raison : la racine du dépôt porte un `test/`, qui masquerait le +# paquet `test` de la bibliothèque standard. +sys.path.append(str(Path(__file__).resolve().parents[2])) try: from script.todo.todo_i18n import t