Skip to content

Latest commit

 

History

History
229 lines (177 loc) · 4.73 KB

File metadata and controls

229 lines (177 loc) · 4.73 KB

Setup et Configuration du Projet

Installation Rapide

1️⃣ Cloner le repository

git clone https://github.com/P3niel/Practical_MLOps.git
cd Practical_MLOps

2️⃣ Exécuter le script setup

bash setup.sh

Ce script fera automatiquement :

  • ✅ Créer un environnement virtuel Python
  • ✅ Installer les dépendances
  • ✅ Configurer les pre-commit hooks
  • ✅ Exécuter les vérifications initiales

3️⃣ Activer l'environnement virtuel

source venv/bin/activate  # Linux/Mac
# ou
venv\Scripts\activate     # Windows

Pre-commit Hooks

Les pre-commit hooks automatisent les vérifications AVANT chaque commit.

Vérifications Automatiques

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

Commandes Utiles

Installer les hooks (première fois)

pre-commit install

Exécuter manuellement sur tous les fichiers

pre-commit run --all-files

Exécuter sur fichiers staged uniquement

pre-commit run

Désactiver les hooks temporairement

git commit --no-verify

Mettre à jour les hooks

pre-commit autoupdate

Workflow Typique

1️⃣ Faire des modifications

# Éditer vos fichiers
vim src/models/trainer.py

2️⃣ Stage les changements

git add src/models/trainer.py

3️⃣ Commit (pre-commit hooks s'exécutent)

git 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 "..."

Format de Commit Obligatoire

[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()

Configuration Manuelle (Alternative)

Si tu veux configurer manuellement sans le script :

1. Créer venv

python3 -m venv venv
source venv/bin/activate

2. Installer dépendances

pip install -r requirements.txt
pip install -r requirements-dev.txt

3. Installer pre-commit

pip install pre-commit
pre-commit install

4. Vérifier installation

pre-commit run --all-files

Dépannage

Les hooks ne s'exécutent pas

# Vérifier installation
pre-commit install

Erreur "hook not found"

# Mettre à jour les hooks
pre-commit autoupdate

Un hook bloque mon commit

# 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"

Passer outre les hooks (seulement si nécessaire)

git commit --no-verify

Fichiers Importants

  • .pre-commit-config.yaml : Configuration des hooks
  • requirements.txt : Dépendances de production
  • requirements-dev.txt : Dépendances de développement
  • setup.sh : Script d'installation automatique
  • CODING_STANDARDS.md : Standards de codage (appliqués par les hooks)
  • AGENTS.md : Règles strictes (complément aux hooks)

Respect de AGENTS.md

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 ! 🚀