diff --git a/pipeline/chemins.py b/pipeline/chemins.py index 3f4353a..c03a49c 100644 --- a/pipeline/chemins.py +++ b/pipeline/chemins.py @@ -11,8 +11,17 @@ from pathlib import Path from dotenv import load_dotenv -# pipeline/chemins.py → pipeline/ → racine du dépôt -RACINE = Path(__file__).resolve().parent.parent +# pipeline/chemins.py → pipeline/ → racine du dépôt. +# +# Ce calcul suppose que le paquet est exécuté depuis l'arbre des sources, ce qui +# est le cas en développement. Une installation non éditable le met en défaut : +# `__file__` pointe alors vers site-packages, et le corpus de `data/input/` est +# cherché à côté du venv, où il n'est pas. +# +# `VEILLE_RACINE` lève l'ambiguïté. Les déploiements la renseignent ; sans elle, +# le comportement historique est conservé. +_RACINE_PAR_DEFAUT = Path(__file__).resolve().parent.parent +RACINE = Path(os.environ.get("VEILLE_RACINE") or _RACINE_PAR_DEFAUT).resolve() load_dotenv(RACINE / ".env") @@ -43,9 +52,17 @@ CHAPITRES = [chapitre(n) for n in range(11)] DIMENSIONS = [dimension(n) for n in range(1, 13)] # ── Sorties ────────────────────────────────────────────────────────────────── +# +# Les trois chemins de sortie sont configurables par variable d'environnement, +# et acceptent une valeur absolue — `Path("/a") / "/b"` vaut `/b`. +# +# Ce n'est pas de la souplesse gratuite : sur un déploiement YunoHost, la mise +# à jour efface intégralement le répertoire d'installation (`ynh_setup_source +# --full_replace`). Tout ce qui doit survivre — base, cache, export — vit donc +# ailleurs, dans le répertoire de données persistant de l'application. DONNEES = RACINE / "data" BASE_SQLITE = RACINE / os.environ.get("VEILLE_DB", "data/veille.db") -DUMP_JSON = DONNEES / "textes.json" +DUMP_JSON = RACINE / os.environ.get("VEILLE_DUMP_JSON", "data/textes.json") CACHE_HTTP = RACINE / os.environ.get("VEILLE_CACHE", "data/cache_http") MIGRATIONS = Path(__file__).resolve().parent / "migrations"