"""Réutilisation des briques déjà livrées (workflow #5 · zéro duplication). Le dossier bancable dérive du MÊME brief que le générateur Faisabilité 4 volets et doit rester cohérent avec lui : - `is_filled` : même notion de « champ réellement rempli » que le générateur (un placeholder / « non défini » / 0-inventé n'est pas rempli). - `CANONICAL` : les paramètres canoniques CLAUDE.md #9/#10 (3 % / 8.5 % / 52 % · USD+DOP · Cardnet · Letter US) — jamais issus du brief. - `validate` : le validateur JSON-Schema maison du Publiciste (draft-07, sous-ensemble), pour valider le manifeste SANS installation pip (le gate CI Gitea Actions tourne sans réseau · CLAUDE.md #2). On importe par manipulation de `sys.path` (comme `faisabilite_gen.py`) plutôt que de dupliquer ces valeurs — une seule source de vérité pour tout le mandat. """ from __future__ import annotations import os import sys _HERE = os.path.dirname(os.path.abspath(__file__)) # faisabilite/bancable/banclib → générateur (genlib) : ../../generator _GEN = os.path.normpath(os.path.join(_HERE, "..", "..", "generator")) # faisabilite/bancable/banclib → Publiciste (lib) : ../../../publiciste _PUB = os.path.normpath(os.path.join(_HERE, "..", "..", "..", "publiciste")) for _p in (_GEN, _PUB): if _p not in sys.path: sys.path.insert(0, _p) from genlib import model # type: ignore # noqa: E402 from lib import validator # type: ignore # noqa: E402 is_filled = model.is_filled CANONICAL = model.CANONICAL TEMPLATE_VERSION = model.TEMPLATE_VERSION validate = validator.validate __all__ = ["is_filled", "CANONICAL", "TEMPLATE_VERSION", "validate"]