git clone https://github.com/P3niel/Practical_MLOps.git
cd Practical_MLOpsbash setup.shCe script fera automatiquement :
- ✅ Créer un environnement virtuel Python
- ✅ Installer les dépendances
- ✅ Configurer les pre-commit hooks
- ✅ Exécuter les vérifications initiales
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # WindowsLes pre-commit hooks automatisent les vérifications AVANT chaque commit.
| Outil | Fonction | Action |
|---|---|---|
| Black | Formatage code | Auto-formate le code |
| Flake8 | Linting | Détecte les erreurs de style |
| isort | Organisation imports | Auto-organise les imports |
| mypy | Type checking | Vérifie les type hints |
| pydocstyle | Docstrings | Vérifie le format des docstrings |
| Trailing whitespace | Nettoyage | Supprime les espaces inutiles |
| End-of-file-fixer | Format fichiers | Ajoute ligne vide finale |
| Large files | Limite taille | Refuse fichiers >100MB |
pre-commit installpre-commit run --all-filespre-commit rungit commit --no-verifypre-commit autoupdate# Éditer vos fichiers
vim src/models/trainer.pygit add src/models/trainer.pygit commit -m "[FEATURE] Ajouter fonction train_model"Ce qui se passe :
- black → Formate le code
- isort → Organise les imports
- flake8 → Vérifie la syntaxe
- mypy → Vérifie les types
- pydocstyle → Vérifie docstrings
- trailing-whitespace → Nettoie espaces
- end-of-file-fixer → Ajoute ligne vide finale
Si ✅ tous PASSENT :
✅ Commit accepted
Si ❌ certains ÉCHOUENT :
❌ Commit rejected
Correctifs auto-appliqués (black, isort, trailing-whitespace)
Re-stage et retry: git add . && git commit -m "..."
[TYPE] Description courte
Type peut être:
- FEATURE: Nouvelle fonctionnalité
- BUG: Correction de bug
- REFACTOR: Refactorisation du code
- DOCS: Modification de documentation
- TEST: Ajout/modification de tests
- CHORE: Modifications techniques (deps, config)
Exemples:
[FEATURE] Ajouter module de validation des données
[BUG] Corriger division par zéro dans metrics.py
[DOCS] Documenter l'API du DataLoader
[TEST] Ajouter tests pour preprocessing.py
[REFACTOR] Optimiser fonction load_dataset()
Si tu veux configurer manuellement sans le script :
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txt
pip install -r requirements-dev.txtpip install pre-commit
pre-commit installpre-commit run --all-files# Vérifier installation
pre-commit install# Mettre à jour les hooks
pre-commit autoupdate# Voir l'erreur
pre-commit run --all-files
# Corriger le code selon l'erreur
# Puis re-stage et recommit
git add .
git commit -m "[TYPE] Description"git commit --no-verify.pre-commit-config.yaml: Configuration des hooksrequirements.txt: Dépendances de productionrequirements-dev.txt: Dépendances de développementsetup.sh: Script d'installation automatiqueCODING_STANDARDS.md: Standards de codage (appliqués par les hooks)AGENTS.md: Règles strictes (complément aux hooks)
Les pre-commit hooks appliquent automatiquement les RÈGLES 2-7 de AGENTS.md :
| RÈGLE | Hook | Status |
|---|---|---|
| RÈGLE 2 | black + flake8 + mypy | ✅ Automatisé |
| RÈGLE 4 | pydocstyle | ✅ Automatisé |
| RÈGLE 6 | (manuel - config externalisée) | 📝 Manuel |
| RÈGLE 7 | (détecte print() via grep) | 🟡 Partiel |
| RÈGLE 10 | (commit message format) | 📝 Manuel |
✅ Prêt ! Commence à coder en confiance ! 🚀