- Python 3.8 ou supérieur
- Git
- make (optionnel mais recommandé)
# Cloner le dépôt
git clone https://github.com/IUTInfoAix/IntroPython.git
cd IntroPython
# Créer un environnement virtuel
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# Installer les dépendances
make install-dev
# ou
pip install -r requirements.txt
pre-commit installNous utilisons Black pour le formatage automatique du code Python et des notebooks Jupyter :
# Formater tout le code (fichiers .py et .ipynb)
make format
# Vérifier le formatage sans modifier
make format-checkNote : Le formatage fonctionne sur :
- Les fichiers Python (
.py) avecblack - Les notebooks Jupyter (
.ipynb) avecnbqa black
Configuration : voir pyproject.toml
Les imports sont triés automatiquement avec isort :
# Trier les imports
isort .Configuration : voir section [tool.isort] dans pyproject.toml
Nous utilisons flake8 pour vérifier la conformité PEP 8 des fichiers Python et des notebooks :
# Vérifier le style (fichiers .py et .ipynb)
make lintNote : La vérification s'applique à :
- Les fichiers Python (
.py) avecflake8 - Les notebooks Jupyter (
.ipynb) avecnbqa flake8
Configuration : voir .flake8
Pylint est utilisé pour une analyse plus approfondie :
# Analyser le code
make pylintConfiguration : voir .pylintrc
mypy peut être utilisé pour vérifier les annotations de types dans les fichiers Python et notebooks :
# Vérifier les types (fichiers .py et .ipynb)
make mypyNote : La vérification de types s'applique également aux notebooks Jupyter avec nbqa mypy.
Configuration : voir mypy.ini
Tous les outils de qualité du code fonctionnent sur les notebooks Jupyter grâce à nbqa :
make format: Formate le code dans les notebooks avec Black et isortmake lint: Vérifie le style PEP 8 dans les notebooks avec flake8make mypy: Vérifie les types dans les notebooks
nbqa extrait automatiquement le code des cellules, applique les outils, puis réintègre les modifications.
git checkout -b feature/ma-fonctionnalite
# ou
git checkout -b fix/mon-correctif# Écrire du code
vim mon_fichier.py
# Formater automatiquement
make format
# Vérifier la qualité
make check-all
# Lancer les tests
make testLes hooks pre-commit vont automatiquement :
- Formater le code (black, isort)
- Vérifier PEP 8 (flake8)
- Vérifier les types (mypy)
git add .
git commit -m "feat: ajoute fonctionnalité X"git push origin feature/ma-fonctionnalitePuis créer une Pull Request sur GitHub.
Placez vos tests dans le dossier tests/ :
# tests/test_exemple.py
import pytest
def test_ma_fonction():
"""Test de ma_fonction"""
assert ma_fonction(2, 3) == 5# Tous les tests
make test
# Avec couverture
make test-cov
# Un test spécifique
pytest tests/test_exemple.py::test_ma_fonctionNous suivons la convention Conventional Commits :
feat:- Nouvelle fonctionnalitéfix:- Correction de bugdocs:- Documentationstyle:- Formatage (sans changement de code)refactor:- Refactoringtest:- Ajout/modification de testschore:- Tâches de maintenance
Exemples :
git commit -m "feat: ajoute exercice sur les générateurs"
git commit -m "fix: corrige erreur dans le notebook"
git commit -m "docs: améliore le README"Le Makefile fournit des raccourcis pour toutes les commandes courantes :
make help # Affiche l'aide
make install # Installe les dépendances
make format # Formate le code
make lint # Vérifie PEP 8
make test # Lance les tests
make check-all # Vérifie tout
make clean # Nettoie les fichiers temporairesLes hooks pre-commit vérifient automatiquement votre code avant chaque commit :
# Installer les hooks
pre-commit install
# Lancer manuellement sur tous les fichiers
pre-commit run --all-filesConfiguration : voir .pre-commit-config.yaml
Si vous utilisez VS Code, les paramètres sont pré-configurés dans .vscode/settings.json.
Extensions recommandées (voir .vscode/extensions.json) :
- Python (Microsoft)
- Pylance
- Black Formatter
- isort
- Flake8
- Jupyter
IntroPython/
├── notebook_seance.ipynb # Notebook principal
├── slides/ # Présentation Slidev
│ └── slides.md
├── ressources/ # Ressources pédagogiques
│ └── cheatsheet.md
├── data/ # Données pour les exercices
├── tests/ # Tests unitaires
├── .vscode/ # Configuration VS Code
├── pyproject.toml # Configuration Python
├── .flake8 # Configuration flake8
├── .pylintrc # Configuration pylint
├── mypy.ini # Configuration mypy
├── .pre-commit-config.yaml # Configuration pre-commit
├── .editorconfig # Configuration éditeur
├── Makefile # Commandes make
└── requirements.txt # Dépendances Python
Les Pull Requests doivent :
- ✅ Passer tous les checks CI/CD
- ✅ Avoir une couverture de tests ≥ 80%
- ✅ Être revues par au moins un mainteneur
- ✅ Respecter les conventions de code
- ✅ Inclure de la documentation si nécessaire
- Petits commits : Faites des commits atomiques et fréquents
- Tests first : Écrivez les tests avant le code (TDD)
- Documentation : Documentez votre code avec des docstrings
- Lisibilité : Le code est lu plus souvent qu'il n'est écrit
- Communication : N'hésitez pas à poser des questions dans les issues
Utilisez les GitHub Issues avec le template suivant :
## Description
[Description claire du bug]
## Étapes pour reproduire
1. [Première étape]
2. [Deuxième étape]
3. ...
## Comportement attendu
[Ce qui devrait se passer]
## Comportement actuel
[Ce qui se passe réellement]
## Environnement
- OS : [Linux/macOS/Windows]
- Python : [version]
- Version du projet : [commit hash ou tag]Pour toute question, contactez :
- Email : sebastien.nedjar@univ-amu.fr
- Issues GitHub : https://github.com/IUTInfoAix/IntroPython/issues
Ce projet est sous licence Creative Commons BY-SA 4.0.
Merci de contribuer à améliorer ce matériel pédagogique ! 🐍