Ce dépôt sert de base de départ minimale pour les projets Python du club, en particulier pour les membres débutants ou intermédiaires.
Il est pensé pour deux cas fréquents:
- Hackathon avec sujet déterminé, mais sans code fourni: vous pouvez partir de ce template et développez votre code/tests à partir de zéro.
- Hackathon avec dépôt de départ fourni: vous réutilisez la structure CI/tests de ce template et ajoutez les documents, codes et dépendances spécifiques au projet.
Note
Dans le cas d'un hackathon avec dépôt de départ fourni, il vaudra peut-être mieux utiliser un autre template agnostique des outils de développement (pytest, pre-commit, etc.) pour éviter les conflits de configuration. Par exemple, un template avec des instructions pour des agents sera peut-être plus adapté.
Ce template est conçu pour être utilisé comme template GitHub d'organisation afin de créer rapidement de nouveaux dépôts cohérents au sein du club.
src/: code source Python, où se trouve le code d'application.tests/: tests unitaires, suivant la convention "src layout"..github/workflows/unit-tests.yml: exécution automatique des tests sur GitHub Actions.requirements-test.txt: dépendances nécessaires aux tests.requirements-dev.txt: dépendances pour le développement, outils de qualité statique, etc..pre-commit-config.yaml: configuration des hookspre-commit(Black).
L'exemple de code est volontairement minimal (sum) pour rester lisible et servir de squelette.
- GitHub Actions (
.github/workflows/unit-tests.yml): exécute automatiquement les tests à chaque push/PR pour garantir que tout le monde valide le même niveau de qualité avant fusion. - pytest (
requirements-test.txt): framework de tests unitaires, utilisé pour vérifier le comportement du code de manière reproductible entre les membres. - pre-commit (
requirements-dev.txt+.pre-commit-config.yaml): au moment de commit, l'outilpre_commitexécute les hooks configurés, pour garantir que le code respecte les standards de qualité avant même d'être poussé. - Black (hook via
pre-commit): formateur de code Python qui impose un style unique conforme au standard PEP 8, pour éviter les débats de style et garder un code lisible et uniforme. Il existe une extension VSCode pour l'exécuter automatiquement à chaque sauvegarde, vous évitant un échec du pre-commit à cause du formatage. - Séparation des dépendances (
requirements-test.txt/requirements-dev.txt): distingue les dépendances nécessaires pour exécuter les tests de celles nécessaire pour le développement, en plus d'être distinctes du fichier habituelrequirements.txtqui pourrait être utilisé pour les dépendances de l'application ou du hackathon.
Important
Ce template est prévu pour pip avec venv ou conda. Si vous utilisez uv, ce template n'est pas approprié.
Configuration avec venv
Instructions pour venv
Windows (PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1macOS / Linux:
python3 -m venv .venv
source .venv/bin/activatepython -m pip install --upgrade pip
python -m pip install -r requirements-test.txt
python -m pip install -r requirements-dev.txtpython -m pytest tests/python -m pre_commit install
python -m pre_commit run --all-filesConfiguration avec conda
Instructions pour conda
conda create -n mon_environnement python=3.14 -y
conda activate mon_environnementpython -m pip install --upgrade pip
python -m pip install -r requirements-test.txt
python -m pip install -r requirements-dev.txtpython -m pytest tests/python -m pre_commit install
python -m pre_commit run --all-files- Développement: travaillez dans
src/pour le code d'application, et danstests/pour les tests unitaires. - Tests: lancez les tests avec pytest (
python -m pytest tests/) pour vérifier que votre code fonctionne comme prévu. - Qualité: les hooks
pre-commits'exécutent automatiquement au moment du commit. - CI: à chaque push sur
mainoudev, et à chaque Pull Request, les tests sont exécutés automatiquement sur GitHub Actions pour garantir que le code fusionné passe les tests. - Documentation: ajoutez des commentaires et des docstrings (Google Style) pour expliquer le fonctionnement de votre code, surtout si vous travaillez en équipe.
- Type-hints: utilisez des annotations de type pour faciliter la lecture par les pairs et l'IA si vous en utilisez.
Puis-je utiliser uv ?
Comme uv gère l'environnement et les dépendances à l'aide d'un groupe de fichiers de configuration (uv.lock, pyproject.toml), et que ces fichiers ne sont pas présents dans ce template, il est recommandé d'utiliser venv ou conda.