Chemins de sortie explicites, pour un déploiement hors de l'arbre des sources
Deux hypothèses du code ne tiennent plus dès qu'on l'installe ailleurs que dans son dépôt : - la racine était déduite de l'emplacement du module. Une installation non éditable la fait pointer vers site-packages, et le corpus de data/input/ est alors cherché à côté du venv, où il n'est pas. VEILLE_RACINE lève l'ambiguïté ; sans elle, le comportement d'avant est conservé. - l'export JSON était figé sous data/, donc dans le répertoire d'installation. Sur YunoHost celui-ci est effacé à chaque mise à jour. VEILLE_DUMP_JSON le déplace avec la base et le cache. Constaté en simulant l'installation, pas en relisant le code : VEILLE_DB était honorée et VEILLE_DUMP_JSON ignorée, le dump repartant dans l'arbre des sources. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6c6a8d9091
commit
e27a4eca84
+20
-3
@@ -11,8 +11,17 @@ from pathlib import Path
|
|||||||
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
# pipeline/chemins.py → pipeline/ → racine du dépôt
|
# pipeline/chemins.py → pipeline/ → racine du dépôt.
|
||||||
RACINE = Path(__file__).resolve().parent.parent
|
#
|
||||||
|
# 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")
|
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)]
|
DIMENSIONS = [dimension(n) for n in range(1, 13)]
|
||||||
|
|
||||||
# ── Sorties ──────────────────────────────────────────────────────────────────
|
# ── 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"
|
DONNEES = RACINE / "data"
|
||||||
BASE_SQLITE = RACINE / os.environ.get("VEILLE_DB", "data/veille.db")
|
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")
|
CACHE_HTTP = RACINE / os.environ.get("VEILLE_CACHE", "data/cache_http")
|
||||||
|
|
||||||
MIGRATIONS = Path(__file__).resolve().parent / "migrations"
|
MIGRATIONS = Path(__file__).resolve().parent / "migrations"
|
||||||
|
|||||||
Reference in New Issue
Block a user