Contribuer¶
Merci de votre intérêt pour contribuer à GeoNature-atlas ! Ce document vous guidera à travers les bonnes pratiques et les conventions de développement du projet.
Table des matières¶
Prérequis¶
Avant de commencer à contribuer, assurez-vous d’avoir :
Python 3.x installé
Node.js et npm installés
Git installé et configuré
Une bonne compréhension de Flask (backend) et JavaScript (frontend)
Installer l’application !
Installer les dépendances python de développement :
pip install ".[dev](depuis la racine du répertoire)Installer les dépendances javascript de développement
npm install --only=dev
La documentation d’installation détaille l’installation d’un environnement de développement de GeoNature-atlas
Qualité et convention du code¶
Le projet utilise des outils de formatage et de linting pour maintenir une structure de code cohérente.
Python¶
Le code Python doit être formaté avec Black. La configuration de Black se trouve dans le fichier pyproject.toml.
Suivez les conventions PEP 8, appliquées automatiquement par Black
Utilisez des noms de variables explicites en anglais
Commentez le code complexe
Documentez les fonctions avec des docstrings
Formater le code Python¶
Pour formater automatiquement votre code Python :
black .
Vérifier le formatage sans modifier les fichiers¶
black --check .
Configuration Black¶
La configuration Black utilisée dans le projet (définie dans pyproject.toml) :
Longueur de ligne : 100 caractères
Ces deux règles ne sont pas dans black mais sont à respecter :
CamelCase pour les noms de classe
snake_case pour les noms de fonction et de variable
JavaScript¶
Le code JavaScript doit respecter les règles définies par ESLint (voir atlas/static/eslint.config.js)
Respectez les règles ESLint configurées
Utilisez
constetlet, évitezvarPréférez les fonctions fléchées pour les callbacks
Commentez le code complexe
Lancer le linter JavaScript¶
Pour vérifier votre code JavaScript :
npm run lint
Corriger automatiquement les erreurs ESLint¶
npm run format
Processus de contribution¶
1. Créer une issue¶
Avant de commencer à travailler sur une nouvelle fonctionnalité ou un correctif, créez une issue pour en discuter avec les mainteneurs du projet.
2. Créer une branche¶
Créez une branche dédiée à partir de develop :
git checkout develop
git pull origin develop
git checkout -b feature/ma-nouvelle-fonctionnalite
# ou
git checkout -b fix/correction-bug
Ne mergez pas la branche
developdans votre branche de feature, utilisez la commanderebaseNe faites pas de commit de lint, privilegiez un
git commit --amendpour ajouter le lint au commit comprenant les modifications du codeSquashez vos pull requests lorsqu’elles sont prêtes à être relues
Assurez vous que les tests passent et que le codecov ne baisse pas
Conventions de nommage des branches :
feature/pour les nouvelles fonctionnalitésfix/pour les corrections de bugsdocs/pour la documentationrefactor/pour les refactorisations
3. Développer et commiter¶
Effectuez vos modifications en respectant les conventions de code. Faites des commits atomiques avec des messages clairs et descriptifs. Pensez à référencer l’issue dans votre commit.
Ecrivez des tests sur les fonctionnalités que vous développez.
Types de commit courants :
feat:nouvelle fonctionnalitéfix:correction de bugdocs:documentationstyle:formatage, points-virgules manquants, etc.refactor:refactorisation du codetest:ajout ou modification de testschore:maintenance, dépendances, configuration
4. Pousser votre branche¶
git push <mon_remote> feature/ma-nouvelle-fonctionnalite
5. Créer une Pull Request¶
Allez sur GitHub et créez une Pull Request de votre branche vers
developRemplissez le template de PR avec :
Description des changements
Référence à l’issue concernée
Screenshots si applicable
Assignez des reviewers si nécessaire
6. Review et merge¶
Les mainteneurs examineront votre PR
Répondez aux commentaires et effectuez les modifications demandées
Une fois approuvée, votre PR sera mergée dans
develop
Tests automatisés¶
Les tests sont écrits avec la librairie pytest. Avant de lancer les tests, assurez vous d’avoir créé une base de données pour les tests.
create database <geonatureatlas_test> with owner <geonatadmin>
\d <ma_base>
CREATE EXTENSION IF NOT EXISTS postgis;
Exporter la variable suivante :
export ATLAS_SETTINGS=/home/theo/workspace/GeoNature-atlas/atlas/tests/test_config.py
Cela définit le fichier de configuration de l’application avec celui qui est fourni pour les tests. Vous pouvez tout à fait utiliser un autre fichier de configuration.
⚠️⚠️ Chaque run de test va supprimer le contenu de la base et la recréer !
Lancer les tests :
pytest
Documentation¶
Mettez à jour la documentation si vos changements affectent l’utilisation de l’application
Les fichiers de documentation se trouvent dans le dossier
docs/Vous pouvez ajouter votre documentation aux formats :
reStructuredTextsyntax. See the reStructuredText documentationMarkdownsyntax. See the myst-parser documentation
Vous pouvez vérifier la bonne mise en forme de la documentation avec les commandes suivantes :
cd docs
make livehtml
Questions et support¶
Pour signaler un bug, créez une issue
Pour contacter l’équipe : voir le fichier README
Merci de contribuer à GeoNature-atlas ! 🦋🌿