Matrice de compatibilité Forge¶
Ce document définit les versions officiellement supportées et testées pour chaque composant de l'environnement d'exécution Forge.
Il complète :
- Politique de release — règles MAJOR/MINOR/PATCH
- Procédure de release — checklist avant chaque tag
- Politique de dépréciation — cycle annonce → retrait
Python¶
| Version | Statut |
|---|---|
| 3.12 | Supportée — minimum requis, version de développement recommandée |
| 3.13 | Supportée — testée en CI |
| 3.14 | Supportée — testée en CI |
| < 3.12 | Non supportée |
Version minimum : Python 3.12 (requires-python = ">=3.12" dans pyproject.toml).
Version recommandée pour le développement : Python 3.12.
CI : les trois versions 3.12, 3.13 et 3.14 sont testées en parallèle
via la matrice GitHub Actions (.github/workflows/tests.yml).
MariaDB¶
| Version | Statut |
|---|---|
| 10.11 (LTS Debian stable) | Recommandée |
| 10.6 (LTS) | Compatible |
| 11.x (latest) | Compatible — non testée systématiquement |
| MySQL | Non supporté |
| PostgreSQL | Non supporté |
| SQLite | Non supporté |
Connecteur Python : mariadb==1.1.14 (dépendance runtime fixée).
Dépendance système requise pour compiler le connecteur :
Tests MariaDB : opt-in via la variable d'environnement FORGE_E2E_MARIADB=1.
Les bases de données créées par les tests doivent avoir un nom commençant par
forge_e2e_.
Note : les tests unitaires Forge (hors test_e2e_mariadb.py) ne nécessitent
pas de MariaDB. Une base de données n'est requise que pour les tests E2E et
le déploiement d'un projet Forge réel.
Node.js et npm¶
| Composant | Usage | Version |
|---|---|---|
| Node.js | Build CSS Tailwind uniquement | >= 18 recommandé |
| npm | Gestion des dépendances front | Inclus avec Node.js |
| Tailwind CSS | Génération de static/tailwind.css |
^4.2.2 |
| @tailwindcss/cli | CLI Tailwind | ^4.2.2 |
Node.js n'est pas requis pour faire tourner un projet Forge. Il est uniquement nécessaire pour régénérer le fichier CSS Tailwind lors du développement du framework lui-même.
Commande de build CSS :
Le fichier généré (static/tailwind.css) est versionné dans le dépôt.
Les projets Forge n'ont pas besoin de Node.js pour servir les fichiers statiques.
Système d'exploitation¶
| OS | Statut |
|---|---|
| Debian 12 (Bookworm) | Recommandé en production |
| Ubuntu 22.04 / 24.04 | Supporté — CI ubuntu-latest |
| macOS | Compatible pour le développement |
| Windows | Non testé, non supporté officiellement |
CI : ubuntu-latest (GitHub Actions).
Dépendances Python runtime¶
Ces dépendances sont installées automatiquement avec Forge via pip ou pipx.
| Paquet | Version requise | Usage |
|---|---|---|
mariadb |
==1.1.14 | Connecteur MariaDB |
jinja2 |
==3.1.6 | Moteur de templates |
python-dotenv |
==1.2.2 | Chargement .env |
Pillow |
>=10.0,<13 | Traitement d'images (module média) |
argon2-cffi |
>=25.1,<26 | Hachage de mots de passe (Auth/User) |
Philosophie : Forge vise un minimum de dépendances runtime. Les trois
dépendances fondamentales sont mariadb, jinja2 et python-dotenv.
Pillow n'est utilisée que par le module média ; argon2-cffi n'est
utilisée que pour le hachage des mots de passe (Auth/User). Toutes sont
installées par défaut. Les dépendances spécifiques aux modules opt-in
(pyotp pour MFA notamment) ne sont installées que via le bon extra
— voir « Dépendances optionnelles » ci-dessous.
Dépendances optionnelles¶
Les modules opt-in de Forge ont leurs propres dépendances, qui ne sont
pas installées par défaut. Elles sont tirées via les extras du package
forge-mvc.
| Extra | Module | Dépendances additionnelles |
|---|---|---|
[mfa] |
forge-mvc-mfa |
pyotp>=2.9,<3 |
[rbac] |
forge-mvc-rbac |
aucune |
[workflow] |
forge-mvc-workflow |
aucune |
[stats] |
forge-mvc-stats |
aucune |
Installation¶
Extras PyPI disponibles à partir de 1.0.0-beta.5
Les modules opt-in étaient source-only dans les versions 1.0.0-beta.1
à 1.0.0-beta.4.
À partir de 1.0.0-beta.5, forge-mvc-rbac, forge-mvc-workflow et
forge-mvc-stats sont publiés et synchronisés avec le core.
forge-mvc-mfa reste Pre-Alpha et ne sera pas publié en 1.0.
forge-mvc-media reste source-only après extraction Phase 11.
Pour installer les opt-ins en 1.0.0b5 :
# Core uniquement depuis PyPI (bêta publique)
pip install --pre forge-mvc
# Opt-ins : source-only — installer depuis le dépôt
git clone --branch v1.0.0-beta.5 https://github.com/caucrogeGit/Forge.git
cd Forge && pip install -e . && pip install -r requirements-dev.txt
Note sur MFA : le module forge-mvc-mfa est en statut Pre-Alpha
(Development Status :: 2) car son secret TOTP est stocké en clair dans
auth_mfa_factors. Ce choix est assumé pendant la phase Pre-Alpha. Voir
ticket SEC-MFA-SECRET-ENCRYPTION-001 pour la suite.
Dépendances de développement¶
Ces dépendances ne sont pas incluses dans la wheel Forge. Elles sont requises pour travailler sur le code source de Forge.
| Paquet | Version minimum | Usage |
|---|---|---|
pytest |
>=8.0 | Suite de tests |
build |
>=1.0 | Construction de la wheel |
twine |
>=5.0 | Publication PyPI |
mkdocs |
>=1.6 | Documentation |
mkdocs-material |
>=9.7 | Thème documentation |
pymdown-extensions |
>=10.0 | Extensions Markdown |
pip-audit |
>=2.0 | Audit des dépendances |
ruff |
>=0.4 | Linter et formateur Python |
Installation :
Outils de documentation¶
| Outil | Version | Usage |
|---|---|---|
| MkDocs | >=1.6 | Génération du site de documentation |
| mkdocs-material | >=9.7 | Thème Material Design |
| pymdown-extensions | >=10.0 | Admonitions, superfences, etc. |
Construction de la documentation :
Tests standard (sans MariaDB)¶
Les tests unitaires Forge tournent sans base de données et sans MariaDB installé.
Ils couvrent : CLI, générateurs, templates, RBAC, Auth/User, sécurité, CSRF, sessions, mails, médias, pages publiques, migrations SQL (SQLite en mémoire).
Tests opt-in (avec MariaDB)¶
Les tests E2E MariaDB nécessitent une instance MariaDB accessible localement.
Prérequis :
- MariaDB démarré et accessible sur
127.0.0.1:3306. - Utilisateur MariaDB autorisé à créer des bases commençant par
forge_e2e_.
Ces tests sont lancés manuellement avant les releases. Ils ne font pas partie de la CI automatique sur push.
Versions non garanties¶
| Environnement | Raison |
|---|---|
| Python < 3.12 | match/case, tomllib et typing modernes requis |
| MySQL | API MariaDB distincte, connecteur différent |
| PostgreSQL | Dialecte SQL différent, non supporté |
| Windows | Non testé, chemins et dépendances système différents |
| PyPy | Non testé |
Politique de mise à jour des dépendances¶
- Les versions fixes (
mariadb==1.1.14,jinja2==3.1.6,python-dotenv==1.2.2) sont mises à jour délibérément après audit de compatibilité. - Les versions bornées (
Pillow>=10.0,<13,argon2-cffi>=25.1,<26) suivent les nouvelles releases mineures compatibles. - Les dépendances d'extras (ex.
pyotp>=2.9,<3pour[mfa]) suivent la même politique, vérifiée dans lepyproject.tomldu package opt-in correspondant. - Chaque mise à jour de dépendance fait l'objet d'un commit dédié avec justification dans le CHANGELOG.
- Un audit
pip-auditest recommandé avant chaque release :
Limites connues¶
| Domaine | Limite |
|---|---|
| MariaDB 11.x | Pas de tests CI systématiques — compatible mais non garanti |
| Python 3.14 | En CI mais version pre-release pendant la série 2.x |
| Node.js | Aucune version minimum formelle — >= 18 recommandé |
| Tests E2E | Pas automatisés en CI — lancés manuellement avant release |
Ce que cette matrice ne couvre pas encore¶
| Domaine | Ticket futur |
|---|---|
| Guide de migration entre versions majeures | RELEASE-MIGRATION-GUIDE-001 |
| Politique LTS (Long Term Support) | RELEASE-LTS-001 |
| Automatisation des tests E2E MariaDB en CI | post-roadmap |
| Compatibilité ARM / Apple Silicon | post-roadmap |
Voir aussi¶
- Vue d'ensemble Release et compatibilité
- Guide de migration — vérifier la compatibilité avant de migrer
- Politique de release — règles MAJOR/MINOR/PATCH
- Sécurité en production — checklist de déploiement
Guide défini lors de RELEASE-COMPAT-001 (Phase 8 — Release et compatibilité).