Skip to content

Latest commit

 

History

History
189 lines (129 loc) · 5.02 KB

File metadata and controls

189 lines (129 loc) · 5.02 KB

🤝 Guide de contribution — AlgoLab

Merci de vouloir contribuer à AlgoLab ! Ce guide vous explique comment participer au projet, que vous soyez débutant ou développeur expérimenté.

📋 Table des matières


📜 Code de conduite

En participant à ce projet, vous acceptez de respecter notre Code de conduite. Soyez bienveillant, respectueux et constructif.


🎯 Comment contribuer

Il y a de nombreuses façons de contribuer, même sans écrire de code :

Type Exemples
🐛 Bugs Signaler un problème, reproduire un bug existant
📝 Documentation Corriger une typo, améliorer un guide, ajouter des exemples .algo
🧪 Tests Ajouter des tests unitaires, des cas limites
💡 Fonctionnalités Proposer et implémenter de nouvelles features
🌍 Traduction Traduire le README ou la doc en anglais
🎨 Extension VS Code Améliorer les snippets, la coloration syntaxique

💡 Nouveau sur l'open source ? Cherchez les issues avec le label good first issue — elles sont conçues pour être abordables.


🏁 Premiers pas

1. Fork et clone

# Fork le repo sur GitHub, puis :
git clone https://github.com/<votre-username>/AlgoLab.git
cd AlgoLab

2. Installer l'environnement de développement

python -m venv .venv
source .venv/bin/activate   # Linux/macOS
# .venv\Scripts\activate    # Windows

pip install -e ".[dev]"

3. Vérifier que tout fonctionne

# Lancer les tests
pytest --cov=src/algolab --cov-report=term-missing

# Vérifier le linting
ruff check src/algolab

# Tester manuellement
algolab examples/hello_world.algo

🔀 Workflow Git

Convention de branches

main                  # Branche stable
├── feature/xxx       # Nouvelle fonctionnalité
├── fix/xxx           # Correction de bug
├── docs/xxx          # Documentation
└── test/xxx          # Ajout de tests

Workflow

# 1. Créer une branche depuis main
git checkout main
git pull origin main
git checkout -b feature/ma-fonctionnalite

# 2. Travailler, commiter
git add .
git commit -m "feat: ajouter le support des procédures"

# 3. Pousser et créer une PR
git push origin feature/ma-fonctionnalite

Convention de commits

Utilisez des messages clairs en français ou en anglais :

feat: ajouter le support des procédures sans retour
fix: corriger l'évaluation des expressions booléennes imbriquées
docs: ajouter un exemple de tri à bulles
test: couvrir les cas limites des tableaux
refactor: simplifier le visiteur d'expressions

📏 Standards de code

Python

  • Linter : Ruff (configuré dans pyproject.toml)
  • Ligne max : 100 caractères
  • Python minimum : 3.9
  • Style : suivre le code existant, garder la simplicité

Avant chaque commit :

ruff check src/algolab
pytest

Fichiers .algo

  • Indentation : 2 espaces
  • Mots-clés en PascalCase : Variable, Debut, Fin, Si, Alors, etc.
  • Commentaires dans le code en français

Tests

  • Fichiers dans tests/
  • Nommage : test_<module>.py
  • Couvrir les cas nominaux ET les cas d'erreur
  • Chaque nouvelle fonctionnalité doit venir avec des tests

🚀 Soumettre une Pull Request

  1. Assurez-vous que ruff check et pytest passent
  2. Décrivez clairement ce que fait votre PR
  3. Référencez l'issue liée (ex: Closes #12)
  4. Une PR = un sujet. Gardez les changements focalisés
  5. Soyez patient — la review peut prendre quelques jours

Template de PR

Votre PR sera automatiquement guidée par le template dans .github/pull_request_template.md.


🐛 Signaler un bug

Utilisez le template de bug report et incluez :

  • Le code .algo qui pose problème
  • Le message d'erreur obtenu
  • Le comportement attendu
  • Votre OS et version de Python (ou binaire utilisé)

💡 Proposer une fonctionnalité

Utilisez le template de feature request. Gardez en tête la philosophie du projet :

  • Pédagogie avant complexité — AlgoLab doit rester simple et accessible
  • Syntaxe française — proche de ce qui est enseigné en cours
  • Messages d'erreur clairs — chaque erreur doit aider l'apprenant

❓ Questions ?

  • Ouvrez une Discussion GitHub pour les questions générales
  • Créez une issue pour les bugs ou propositions concrètes

Merci de contribuer à AlgoLab ! 🧪🇧🇯