Antoine Van Elstraete 4df930bfe6 fix: persister le token même dans le chemin d'erreur de get_informations/get_messages
Cause racine : quand pronotepy reçoit une PronoteAPIError (ex. code 20 « page
expirée »), il appelle refresh() en interne, qui peut roter le token en mémoire
(client.password mis à jour avec un nouveau jetonConnexionAppliMobile). Le retry
peut aussi échouer — l'exception atteint get_informations()/get_messages() qui
l'attrapent et retournent [] (mode dégradé). Mais _persist_credentials()
n'était appelé que dans le chemin de SUCCÈS — le token rafraîchi en mémoire
n'était jamais persisté. Au run suivant, token_login utilisait le token
périmé → échec KeyError 'dataSec' → PronoteAuthRotationError.

Correction : appeler _persist_credentials() aussi dans le chemin d'erreur de
get_informations() et get_messages(), avant le return []. L'ancien token est
déjà invalidé côté serveur lors du refresh — ne pas persister le nouveau token
garantit la perte du seul token valide.

Tests : 3 nouveaux tests (persistance dans le chemin d'erreur, sauvegarde du
token rafraîchi sur erreur). 694 passés, couverture 94.93%.
2026-09-10 13:34:51 +02:00

pronote-sync

Synchronisation Pronote → CalDAV + XMPP.


Synchronise l'agenda et les devoirs de Pronote vers un calendrier CalDAV et envoie un résumé quotidien par XMPP. Supporte les sources iCal et pronotepy avec repli automatique. Synthèse IA optionnelle.


🚀 Démarrage rapide

# Cloner le dépôt
git clone <repo-url>
cd pronote-sync

# Créer l'environnement virtuel
python3.13 -m venv .venv
source .venv/bin/activate

# Installer
pip install -e ".[dev]"

# Configurer
cp .env.example .env
# Éditer .env avec vos paramètres (voir .env.example pour le détail)

# Tester
pronote-sync --dry-run --log-level DEBUG

📖 Utilisation

pronote-sync                    # Exécute la synchronisation
pronote-sync --dry-run          # Simulation sans écriture
pronote-sync --log-level DEBUG  # Verbosité des journaux

🛠️ Déploiement

Les artefacts pour systemd/timer et logrotate sont fournis dans deploy/. Voir docs/exploitation.md pour plus de détails.


🙏 Remerciements

Ce projet repose sur les bibliothèques open-source suivantes :

Inspiré de pronote-digest par Yoan Bernabeu.


Licence

MIT — voir LICENSE.

Description
Outil python pour récupérer les informations transmises par le collège via Pronote et leur site internet.
Readme MIT 3 MiB
Languages
Python 100%