Automatizando Notificações Desktop em Python com auto-notifier
Automatizando Notificações Desktop em Python com auto-notifier
Quando você trabalha com dois monitores, é comum iniciar um script demorado em um terminal e, logo depois, mudar o foco para outra tarefa. Já me vi várias vezes escrevendo ou navegando em outro monitor enquanto um script estava rodando — e, quando percebi, ele já tinha terminado (ou falhado) há um bom tempo.
auto-notifier foi criado exatamente para esse cenário. Ele envolve sua função ou bloco de código, detecta se tudo terminou bem ou com erro, e envia uma notificação no desktop. Ele utiliza dois conceitos bem conhecidos em Python — decorators e context managers — sem exigir configurações extras.
[ Espaço reservado para imagem da notificação ]
Exemplo: pop-up de notificação após conclusão do script
🚀 Instalação
pip install auto-notifier
auto-notifier usa notify-py internamente para enviar notificações nativas (Windows, macOS, Linux).
🧩 Como Funciona
| Interface | Melhor Para |
|---|---|
@notify_when_done | Monitorar uma função |
notify_on_complete() | Monitorar um bloco de código |
Ambos detectam:
- ✅ Conclusão com sucesso
- ❌ Exceções (com alerta de falha)
- ⏱️ Tempo de execução (internamente medido)
As exceções não são suprimidas — você ainda verá o traceback no terminal.
🧰 Usando o Decorator
from auto_notifier import notify_when_done
import time
@notify_when_done(
title="Backup concluído",
message="Backup finalizado com sucesso.",
error_title="Falha no backup"
)
def executar_backup():
time.sleep(5) # simula trabalho
# raise Exception("Erro no disco") # testar falha
return "ok"
executar_backup()
O que acontece:
- Sucesso → Notificação “Backup concluído”
- Erro → Notificação “Falha no backup”, exceção relançada
📓 Usando o Context Manager
from auto_notifier import notify_on_complete
import time
with notify_on_complete(title="Importação finalizada"):
time.sleep(3)
print("Importação concluída")
Perfeito para trechos de script ou notebooks.
🎛️ Personalizando Notificações
| Parâmetro | Descrição |
|---|---|
title | Título no sucesso |
message | Texto no sucesso |
error_title | Título no erro |
error_message | Texto no erro |
icon_path | Ícone personalizado |
app_name | Nome exibido na central de notificações |
Exemplo com ícone:
@notify_when_done(
title="Relatório pronto",
message="Métricas mensais geradas.",
icon_path="icons/chart.png"
)
def gerar_relatorio():
...
🧠 Decorators e Context Managers
- Decorator: Envolve a função, mede tempo, captura erros e envia notificação
- Context Manager: Usa
__enter__/__exit__para garantir notificação mesmo com exceções
Sem threads, serviços ou configurações externas — apenas fluxo Python.
🔧 Exemplo Completo (Estilo Pipeline)
from auto_notifier import notify_when_done, notify_on_complete
import pandas as pd
import time
@notify_when_done(title="Dados limpos", error_title="Erro na limpeza")
def limpar_dados(caminho):
df = pd.read_csv(caminho)
time.sleep(4)
return df.dropna()
with notify_on_complete(title="Pipeline ETL finalizada"):
limpo = limpar_dados("raw.csv")
limpo.to_csv("cleaned.csv", index=False)
🧭 Quando Usar
- Scripts longos no terminal
- Processamento de dados / scraping
- Treinamento de modelos
- Backups ou exportações
Ideal para uso local, com notificações do sistema.
🧾 Resumo
auto-notifier adiciona notificações em funções ou blocos de código usando decorators ou context managers.
Permite que você se afaste do terminal e ainda saiba exatamente quando algo terminou — ou falhou.
PyPI: https://pypi.org/project/auto-notifier/
GitHub: https://github.com/yalmeidarj/auto-notifier
Se você inicia scripts e muda para outras tarefas, essa ferramenta evita adivinhações.