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/ipmpackage contains the Python wrapper for the nativerefifclibraries. - Place Windows DLLs in
app/ipm/lib/windows/and Linux.sofiles inapp/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/ipmpour que le code applicatif importe depuisapp.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
- Copier les binaires dans le bon dossier (ex:
app/ipm/lib/windows/refifc.dll). - 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.