aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CLAUDE.md15
1 files changed, 13 insertions, 2 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 384e86a..e576326 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -45,14 +45,25 @@ python3 -m venv .venv --clear
source .venv/bin/activate
# Toutes les dépendances sont déclarées dans les pyproject.toml — un seul pip install suffit
-pip install -e packages/meshbay-common -e packages/meshbay-hub -e packages/meshbay-node
-pip install pytest pytest-asyncio aiosqlite # extras dev
+pip install -e "packages/meshbay-common[dev]" -e "packages/meshbay-hub[dev]" \
+ -e "packages/meshbay-node[dev]"
```
Les deps clés (aioquic, watchdog, fastapi, blake3, etc.) sont dans les `pyproject.toml`
et installées automatiquement. Ne pas ajouter manuellement des packages sans les déclarer
dans le bon `pyproject.toml`.
+> **L'extra `[dev]`, pas une liste à la main.** Cette ligne a longtemps été
+> `pip install pytest pytest-asyncio aiosqlite`, ce qui contredisait la règle
+> ci-dessus et coûtait trois choses invisibles. Sans `piexif`,
+> `test_enrich_photo.py` échoue à l'import et **toute la suite du nœud s'arrête à
+> la collecte**. Sans `pytest-timeout`, le `timeout = 60` du `pyproject.toml` est
+> une option inconnue : la protection que son propre commentaire décrit — « un
+> test bloqué ne doit pas coincer le run » — n'existe pas, et pytest ne le dit que
+> dans un warning parmi d'autres. Sans `ruff`, le linter du projet n'est pas là.
+> `aiosqlite` n'avait pas à être cité : c'est une dépendance de runtime du hub et
+> du nœud, déjà installée par les `-e`.
+
> **Ne jamais copier `.venv/` entre machines d'OS différents.** Si rsync depuis Fedora vers Ubuntu,
> exclure `.venv/` et recréer sur la cible avec `python3 -m venv .venv --clear`.
> Sans `--clear`, `certifi.where()` pointe vers un chemin Fedora inexistant sur Ubuntu → `FileNotFoundError`.