Zero-Code automatic notifications for long-running Python scripts.
Project description
pynotify-auto
Smart, effortless notifications for your Python scripts.
Stay informed on your desktop or your phone, without changing a single line of code.
🌐 VIEW LIVE DOCUMENTATION & SETUP GUIDE
Why use this?
Traditional notification libraries require you to manually add decorators or extra lines of code to every script. pynotify-auto is different: it works automatically for every script in your environment.
- Desktop + Mobile: Get native popups on your computer and real-time snapshots on your phone (Ntfy/Telegram).
- Cross-Platform: Full support for Windows (Toast), macOS (Notification Center), and Linux (Libnotify).
- Zero-Code Integration: Install once, and it works for all your scripts globally.
- Smart Filtering: It stays quiet for quick tasks and only alerts you for the ones that actually take time.
Features
- Zero-Code Integration: Works automatically across your entire system/environment.
- Smart Thresholding: Only pings if the script ran for a meaningful amount of time (default > 5s).
- Cross-Platform: Works on Windows, macOS, and Linux.
- Configurable: Change the threshold or disable it via environment variables.
Installation
Via Pip
pip install pynotify-auto
[!IMPORTANT] Activation Step: Due to how modern Python environments (Conda, venv) handle installation, you may need to manually enable the zero-code hook once after installation:
pynotify-auto --enableThis ensures that
pynotify-autocan monitor your scripts automatically. You can check the status at any time withpynotify-auto --info.
📱 Remote Notifications (Phone/Mobile)
pynotify-auto can track your script's progress and send real-time updates to your phone. It supports Ntfy.sh and Telegram.
Interactive Configuration
The easiest way to configure remote alerts is using the built-in wizard:
pynotify-auto --config
This interactive guide will help you choose your service and enter your credentials. It even remembers your settings so you can update them later by just pressing Enter.
Supported Backends
| Service | Setup Effort | Benefits |
|---|---|---|
| Ntfy.sh | ⭐ (Zero Signup) | No account needed, lightweight, instant setup. |
| Telegram | ⭐⭐ (Create Bot) | Private, persistent history, premium formatting. |
Setting up Ntfy.sh
- Install the Ntfy app on your phone.
- Subscribe to a unique topic name (e.g.,
my_script_alerts). - Run
pynotify-auto --config, choosentfy, and enter that topic name.
Setting up Telegram
- Message @BotFather on Telegram to create a new bot and get your API Token.
- Message @userinfobot to get your Chat ID.
- Run
pynotify-auto --config, choosetelegram, and enter your Token and Chat ID.
⏳ Real-Time Progress Tracking
Once enabled, pynotify-auto will automatically:
- Ping your phone every 30 minutes (configurable) with a snapshot of your logs.
- Notify you immediately if the script crashes with the error traceback.
- Notify you when the script finishes successfully.
⚙️ Advanced Configuration
All settings are stored in ~/.pynotify.json. You can also override them using environment variables:
| Setting | JSON Key | Env Variable | Default |
|---|---|---|---|
| Threshold | threshold |
PYNOTIFY_THRESHOLD |
5.0 (sec) |
| Progress Interval | progress_interval_minutes |
PYNOTIFY_PROGRESS_INTERVAL |
30 (min) |
| Log History | log_lines |
PYNOTIFY_LOG_LINES |
10 |
| Backend | remote_backend |
PYNOTIFY_REMOTE_BACKEND |
None |
| Ntfy Topic | ntfy_topic |
`PYNOTIFY_NTFY_TOPIC" | None |
| Telegram Token | telegram_bot_token |
PYNOTIFY_TELEGRAM_TOKEN |
None |
| Telegram Chat ID | telegram_chat_id |
PYNOTIFY_TELEGRAM_CHAT_ID |
None |
The "Zero-Code" progress tracker automatically intercepts your script's output (stdout and stderr). It captures print() statements, standard logging, and even crash tracebacks without requiring any changes to your code.
🤝 Used By
Are you using pynotify-auto in your project? We'd love to feature you here!
Open a PR to add your project to the list.
License
MIT
Contributing
I'm open to contributions! Feel free to fork the repo and open a PR if you have bug fixes or new notification backends (Slack, Discord, etc.) you'd like to add.
Check the comprehensive test suite for examples on how to run tests locally.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pynotify_auto-0.4.0.tar.gz.
File metadata
- Download URL: pynotify_auto-0.4.0.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48cad23383d5bd25d5d4a5a86ae980d952503c483803394c05c3883a0e34917b
|
|
| MD5 |
fe1bb849c134c9e00a325ed6cff78777
|
|
| BLAKE2b-256 |
d8d4855beb26ba800cd2fc8ae713581507c8a9023ac5f423bb17c6860df1b2a9
|
File details
Details for the file pynotify_auto-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pynotify_auto-0.4.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a22fb2e4847bb8a505f2f9b4474b6ebb0323710ad1935980efe6d875325190b
|
|
| MD5 |
ad7b626eb51aa6a361d84c4ae5b14bc8
|
|
| BLAKE2b-256 |
52964da5f8a124030c70cc0d1a8ddc4353df9e178667156e7069babc159c2961
|