diagram_ph/app/ipm/README.md

3.1 KiB

IPM native integration (app.ipm) — English (default)

This is the default README for the app/ipm package. It is the English version.

For the French version, see: README_fr.md

Short summary

  • The app/ipm package contains the Python wrapper for the native refifc libraries.
  • Place Windows DLLs in app/ipm/lib/windows/ and Linux .so files in app/ipm/lib/linux/.

See README_en.md for the full English documentation and README_fr.md for the French translation.

IPM native integration (app.ipm)

Ce dossier contient l'enveloppe Python qui appelle les bibliothèques natives (refifc).

But

  • centraliser le wrapper Python dans app/ipm pour que le code applicatif importe depuis app.ipm.simple_refrig_api.
  • fournir un emplacement clair pour les binaires natifs (DLL pour Windows, .so pour Linux).

Où placer les binaires

  • Windows (local/dev): placez vos DLL dans app/ipm/lib/windows/.
  • Linux (container/production): placez vos .so dans app/ipm/lib/linux/.

Le wrapper app/ipm/simple_refrig_api.py recherche automatiquement, en priorité, le répertoire app/ipm/lib/<platform> (windows ou linux) puis retombe sur le répertoire du package si rien n'est trouvé.

Ne pas committer les binaires

Les fichiers natifs ne doivent pas être committés dans Git (poids, licence, portabilité). Le dépôt contient une règle .gitignore qui exclut app/ipm/lib/windows/*.dll et app/ipm/lib/linux/*.so.

Déploiement / Docker

Le Dockerfile doit copier les binaires appropriés dans le répertoire app/ipm/lib/<platform> au moment du build. Exemple (Linux image):

FROM python:3.12-slim
WORKDIR /app
COPY . /app

# Copier les libs natives Linux dans le bon dossier
COPY path/to/linlibs/*.so /app/app/ipm/lib/linux/

RUN pip install --no-cache-dir -r requirements.txt
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

Pour Windows-based artifacts (si vous buildissez une image Windows ou déployez sur Windows), copiez les DLL dans app/ipm/lib/windows/.

CI/CD

  • Stockez les binaires dans un artefact sécurisé (release, storage interne, S3, etc.).
  • Lors du pipeline, téléchargez-les et copiez-les dans app/ipm/lib/<platform> avant l'étape d'image ou de déploiement.

Test rapide local

  1. Copier les binaires dans le bon dossier (ex: app/ipm/lib/windows/refifc.dll).
  2. Lancer un shell Python depuis la racine du projet et tester :
.venv\Scripts\python -c "import app.ipm.simple_refrig_api as s; r=s.Refifc('R290'); print('hsl_px exists', hasattr(r,'hsl_px'))"

Bonnes pratiques

  • Ne stockez pas les binaires dans Git.
  • Documentez dans votre release notes la provenance et la version exacte des fichiers natifs.
  • Préparez un script scripts/fetch-ipm-libs.sh (ou équivalent PowerShell) pour automatiser la récupération des binaires dans vos environnements de build.

Si tu veux, j'ajoute un petit scripts/ helper pour télécharger/copy automatiquement les binaires depuis un dossier central ou un storage.