Automatisation des Notifications de Bureau en Python avec auto-notifier
Automatisation des Notifications de Bureau en Python avec auto-notifier
Quand on travaille avec deux écrans, il est facile de lancer un script long dans un terminal puis de se concentrer sur autre chose. Cela m’est arrivé souvent : je démarre un traitement en Python, je passe à une autre tâche, et quand je reviens… le script avait terminé (ou échoué) depuis longtemps.
auto-notifier a été créé pour ce cas précis. Il enveloppe votre fonction ou bloc de code, détecte si tout s’est bien terminé ou s’il y a eu une erreur, et envoie une notification native sur le bureau. Il repose sur deux concepts bien connus en Python — décorateurs et gestionnaires de contexte — sans configuration supplémentaire.
[ Espace réservé pour l’image de notification ] Exemple : notification après la fin du script
🚀 Installation
pip install auto-notifier
auto-notifier utilise notify-py en interne pour envoyer des notifications natives (Windows, macOS, Linux).
🧭 Fonctionnement
| Interface | Idéal Pour |
|---|---|
@notify_when_done | Surveiller une fonction |
notify_on_complete() | Surveiller un bloc de code |
Les deux détectent :
- ✅ Succès de l’exécution
- ❌ Exceptions (avec alerte d’échec)
- ⏱️ Temps d’exécution mesuré
Les exceptions ne sont pas masquées — le traceback apparaît normalement dans le terminal.
🧩 Utilisation avec Décorateur
from auto_notifier import notify_when_done
import time
@notify_when_done(
title="Sauvegarde terminée",
message="La sauvegarde a été réalisée avec succès.",
error_title="Échec de la sauvegarde"
)
def executer_sauvegarde():
time.sleep(5) # simule une tâche
# raise Exception("Erreur disque") # tester un échec
return "ok"
executer_sauvegarde()
Comportement :
- Succès → Notification “Sauvegarde terminée”
- Erreur → Notification “Échec de la sauvegarde”, exception relancée
📎 Utilisation avec Gestionnaire de Contexte
from auto_notifier import notify_on_complete
import time
with notify_on_complete(title="Importation terminée"):
time.sleep(3)
print("Importation terminée")
Idéal pour les scripts ou blocs longs dans des notebooks.
🎛️ Personnalisation des Notifications
| Paramètre | Description |
|---|---|
title | Titre en cas de succès |
message | Message en cas de succès |
error_title | Titre en cas d’erreur |
error_message | Message en cas d’erreur |
icon_path | Icône personnalisé |
app_name | Nom visible dans le centre de notif |
Exemple avec icône :
@notify_when_done(
title="Rapport généré",
message="Les métriques mensuelles sont prêtes.",
icon_path="icons/chart.png"
)
def generer_rapport():
...
🛠 Décorateurs et Context Managers
- Décorateur : Enveloppe la fonction, mesure le temps, intercepte les erreurs et envoie la notification
- Gestionnaire de contexte : Utilise
__enter__/__exit__pour garantir la notification même en cas d’exception
Aucun thread, service ou configuration externe — uniquement du flux Python.
🔁 Exemple Complet (Style Pipeline)
from auto_notifier import notify_when_done, notify_on_complete
import pandas as pd
import time
@notify_when_done(title="Données nettoyées", error_title="Erreur de nettoyage")
def nettoyer_donnees(chemin):
df = pd.read_csv(chemin)
time.sleep(4)
return df.dropna()
with notify_on_complete(title="Pipeline ETL terminé"):
propre = nettoyer_donnees("raw.csv")
propre.to_csv("cleaned.csv", index=False)
🧭 Quand l’Utiliser
- Scripts longs en terminal
- Traitement de données / scraping
- Entraînement de modèles
- Sauvegardes ou exports
Conçu pour un usage local, avec notifications système.
📌 Résumé
auto-notifier ajoute des notifications aux fonctions ou blocs de code via décorateurs ou gestionnaires de contexte.
Vous pouvez vous éloigner du terminal tout en sachant exactement quand un processus s’est terminé — ou a échoué.
PyPI : https://pypi.org/project/auto-notifier/ GitHub : https://github.com/yalmeidarj/auto-notifier
Si vous lancez des scripts et passez à autre chose, cet outil évite les devinettes.