Releases: caronc/apprise
Release v1.9.5
What's Changed
This is just a small release to bundle accumulated changes since v1.9.4.
📣 New Notification Services:
n/a
🐞 Bugfixes
- pyobject availability does not impact glib testing in #1384
- Fix test case to compare url ids by @emmanuel-ferdman in #1371
- slack:// now has timestamp=yes/no kwarg support in #1394
- Fix AppriseURLTester usage of meta["self"] by @LaFeev in #1412
- Fix test_time_zoneinfo edge case by @LaFeev in #1411
💡 Features
- Added support for discord:// flags=in #1409
- Global Timezone support added (tz=) in #1398
- feat: add icon field support for bark plugin by @HerbertGao in #1393
- Add twilio phone calls support by @amanda-her in #1408
❤️ Life-Cycle Support
- Add Power Automate (Workflows/MS Teams) alternative url support by @LaFeev in #1407
- Environment improvments (updates to PR #1385) in #1395
- PEM backend definitions handling for forwards compatability in #1410
- build environment improvements in #1385
- RUF059 linting fixes against codebase in #1413
New Contributors
- @HerbertGao made their first contribution in #1393
- @amanda-her made their first contribution in #1408
- @LaFeev made their first contribution in #1412
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.5 from PyPI
pip install apprise==1.9.5Full Changelog: v1.9.4...v1.9.5
v1.9.4
What's Changed
It has been some time since I pushed a release; so this one just bundles all of the outstanding fixes/enhancments together.
This release introduces a major refactor of the code base to modernize it (for Python v3.9+). The change added more then 13,000 lines of code and refactored 70,000 lines. It took a very, very long time to do, but I'm happy how things turned out. It should make it easier for others to adapt and add to the code base. This change also greatly improved the type hinting offered by the library. I debated marking this release v2.0.0 due to the signifgance of it, but will just bump the minor to catch any fallout from the change I may have overlooked.
Please don't hesitate to open a ticket if you find any issus at all.
📣 New Notification Services:
- Added Spike.sh support in #1364
- Added Spug Push Support in #1365
- Added Lark Support in #1361
- Added QQ Push Support in #1366
- Added SIGNL4 Support by @rons4 in #1379
- Added SendPulse Support in #1192
- Added Clickatell support by @thmasker in #1347
- Added Vapid/WebPush Support in #1323
- Added SMPP support by @thmasker in #1354
🐞 Bugfixes
- Fix throttling in matrix plugin by @wolfgesbro in #1352
- minor fixes lingering from PR #1368 in #1378
- This is the major update identified in the Life-Cycle Support
- bluesky resolve did custom domains in #1363
- Update token regex on chanify by @edwinbernadus in #1325
- Fix matrix v3 attachments by @privacyfr3ak in #1373
- Minor typos and fixes in #1357
- Improved Google Chat thread handling in #1376
💡 Features
- Display SMTP host in debug mode by @emmanuel-ferdman in #1331
- Support mailto://localhost (default user is root) in #1360
- Dbus/Glib Python binding modernization + test refactoring in #1377
❤️ Life-Cycle Support
-
Add Codecov Test Analytics by @katia-sentry in #1321
-
Removed LunaSea as it's services are offline as of April 30th, 2025 in #1362
-
🔥 Apprise Build System Modernization (PEP 621 / RPM CI) in #1368
- Addresses Red Hat Bugzilla 2377453 filed against the Apprise RPM Build structure.
- Replaced
setup.pywithpyproject.toml(setuptools.build_metabackend) - Replaced legacy dynamic keyword loading with static
[project.keywords] - Added SPDX-compliant license (
BSD-2-Clause) - Introduced
tox -e releasefor full packaging lifecycle - Man page generation and translation compilation included in CI
- Verified RPM builds using Fedora-compatible GitHub Actions
- CI test matrix now supports Python 3.9–3.12, across Ubuntu, macOS, and Windows
.coveragefiles now consistently written to root; parallel coverage disabled for simpler merging- Artifact uploads now uniquely named per
${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.tox_env }} tox.ininow supports cleanqa,minimal, andreleasetesting workflowsrufflinter applied to entire code-base.pyifiles dropped and type hinting integrated into main code base
-
EL9 RPM build container public; workflow fixed to accommodate in #1375
New Contributors
- @katia-sentry made their first contribution in #1321
- @edwinbernadus made their first contribution in #1325
- @emmanuel-ferdman made their first contribution in #1331
- @thmasker made their first contribution in #1347
- @wolfgesbro made their first contribution in #1352
- @privacyfr3ak made their first contribution in #1373
- @rons4 made their first contribution in #1379
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.4 from PyPI
pip install apprise==1.9.4Full Changelog: v1.9.3...v1.9.4
Release v1.9.3
What's Changed
It has been some time since I pushed a release; so this one just bundles all of the outstanding fixes/enhancments together.
📣 New Notification Services:
🐞 Bugfixes
- Fix flaky test in translation tests by @dg98 in #1298
- Set default port for Mattermost notifications by @sochotnicky in #1293
💡 Features
- Office 365 posts include subject and body now in #1274
- Telegram messages leverage caption field when attachments in #1290
- Extend options for plugin Seven by @matthiez in #1301
- Ntfy.sh Internationalized URL support added for click= in #1312
❤️ Life-Cycle Support
- Improved SMS transmission documentation in #1291
- apprise.urls() bulletproofing/bugfix in #1302
- Add option label for plugin seven by @matthiez in #1304
- Minor and insignifigant changes (typos and alike) in #1218
New Contributors
- @dg98 made their first contribution in #1298
- @sochotnicky made their first contribution in #1293
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.3 from PyPI
pip install apprise==1.9.3Full Changelog: v1.9.2...v1.9.3
Release v1.9.2
What's Changed
This is a mini release to tuck some of the recent changes requested so they're available to all.
💡 Features
- discord:// now supports the kwarg of 'botname' in #1261
- Better support for reverse-url construction containing whitespace in #1267
❤️ Life-Cycle Support
- Updated reference to BSDv2 clause in RPM in #1260
🐞 Bugfixes
- Resolved chanify:// naming confusion in #1266
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.2 from PyPI
pip install apprise==1.9.2Full Changelog: v1.9.1...v1.9.2
Release v1.9.1
What's Changed
This is a very long over-due release that includes all of the accumulated changes in Apprise. Happy Holidays!
📣 New Notification Services:
- Plivo Support Added in #143
- Support for PGP Email Support (DeltaChat Compatible) #1205
- Seven (SMS Provider) Added by @matthiez in #1242
💡 Features
- Matrix Well Known URI Server Discovery #1198
- Eliminated non-essential warning log in mailto:// parsing #1216
- Improved voipms:// phone number parsing #1230
- CLI environment variable over-ride support #1231
- Unpin paho-mqtt version by @kruton in #1238
- Note: This triggered returning issues with
?verify=noprovided in Apprise URLs. This still continues to work with the previously pinned version ofpaho-mqtt< 2.0) but not with the newer versions. (see #802 for more details).
- Note: This triggered returning issues with
- Improved hostname verification #1243
- Bark - add critical level alert plus ?volume= argument by @pb8DvwQkfRR in #1239
- Refactored Office 365 Plugin #1225
- Refactored Apprise mailto:// and apprise.utils module #1255
- feat: Add support for latest MSTeams webhook URL format by @anothermwilson in #1253
- mmost:// supports legacy url webhooks (http://) #1258
❤️ Life-Cycle Support
- Added disclaimer for AES-CBC-128 weakness with simplepush:// #1215
- Fix print statement in test run function. by @tjni in #1220
- Dropped Python v3.7 GH Action Test Support (deprecated) #1224
- Removed python-xdist development dependency due to it not being used #1223
- Remove Boxcar due to it no longer being available upstream #1222
🐞 Bugfixes
- Remove duplicate entry for Burst SMS by @ksmarty in #1204
- Matrix: Allow token only client API authorization with token parameter by @voc0der in #1236
- Matrix Long Lived Token: Don't logout, and use UUIDv4 for transactionIds by @voc0der in #1249
- miskey:// visibility flags updated #1257
New Contributors
- @ksmarty made their first contribution in #1204
- @tjni made their first contribution in #1220
- @kruton made their first contribution in #1238
- @voc0der made their first contribution in #1236
- @matthiez made their first contribution in #1242
- @pb8DvwQkfRR made their first contribution in #1239
- @anothermwilson made their first contribution in #1253
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.1 from PyPI
pip install apprise==1.9.1New Contributors 🎉
Full Changelog: v1.9.0...v1.9.1
Release v1.9.0
What's Changed
The largest change introduced in this build is the new Persistent Storage setup which will greatly reduce and optimize a lot of existing and new supported plugins.
📣 New Notification Services:
- WxPusher Support Added in #1135
💡 Features
- 🚀 ⭐ Persistent Storage in #1131 (more then 6,500+ lines of code added to the code base) 🔥
- This feature is very big and better documented here. Some general details can also be found here on the main README.md file.
- Long overdue, plugins can now safely cache some of the query results returned from upstream endpoints to disk. This saves the need to make future extra web requests later (overall causing a performance boost to Apprise).
- It's a cache engine done right; content is contained, and those using the CLI can clean/reset it. You can also easily turn it off.
- Not all plugins that can fully leverage this for it's added boost do so... *Yet*, but just give me some time and I'll get there.
- mqtt:// support for publishing retain flag in #1185
- SendGrid Attachment Support Added in #1190
- Refactored base64 attachment handling in #1191
❤️ Life-Cycle Support
- Documentation and CLI Tidying in #1187
- Cleaner usage of Apprise CLI (0d19db8)
- RPM Testing/Building Docker Containers smaller in size (1a2eecc and 1dc22e1) refs #948
🐞 Bugfixes
- Fix typo in readme by @khaffner in #1176
- Fix Telegram Thread/Topic handling in #1177
- Fixed mattermost channel handling n #1180
- Escape unsupported Telegram MarkdownV2 characters in #1181
- Telegram MarkdownV2 has turned out to be a VERY different style of markdown. For consistency, the default telegram mode is version 1. Simply add
?format=markdown&mdv=v2to your URL to change this.
- Telegram MarkdownV2 has turned out to be a VERY different style of markdown. For consistency, the default telegram mode is version 1. Simply add
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.0 from PyPI
pip install apprise==1.9.0New Contributors 🎉
Full Changelog: v1.8.1...v1.9.0
Release v1.8.1
Details
A lot of new changes; this release was long overdue. It was really great to see so much user contribution this time around! Very impressive and much appreciated! 🎉
📣 New Notification Services:
- Added Splunk/VictorOps Support (#1125)
- Added Africas Talking Support (#1167)
- Added Microsoft Power Automate / Workflows Support (MSTeams Successor) (#1172)
- Add Société Française du Radiotéléphone (SFR) Support by @Anghille (#1132)
💡 Features
- Slack supports <@userid> in message body (#1134)
- Turn large ntfy messages into a attachments (#1136)
- Refactored the way Notifiarr Discord users are mentioned (#1153)
- OneSignal to support custom data in payload (#1163)
- Twilio WhatsApp support added (#1173)
- Allow json data in OneSignal template arguments by @phantom943 (#1171)
❤️ Life-Cycle Support
- Refactor: update streamlabs.py by @eltociear (#1160)
- Fixed series of pep8 fixes surfacinging in python 3.11 flake8 checks (#1149)
- Drop support for Python v3.6 and EPEL 8 from Apprise (#1155)
- setup.py deprecation workaround with --use-pep517 (#1168)
🐞 Bugfixes
- Automatically increment Matrix v3 transaction IDs by @nmaggioni (#1128)
- Slack files upload deprecation by @delenamalan (#1130)
- Update token regex in ServerChan by @easychen (#1148)
- Add missing % string in import failed trace message by @jpbede (#1151)
- This will fix issues with Home Assistant
- Fixes random matrix:// unittest failures (#1166)
- fix: conversion html_to_text hr tags rstrip non string object by @fabiottini (#1162)
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.8.1 from PyPI
pip install apprise==1.8.1New Contributors 🎉
- @nmaggioni made their first contribution in #1128
- @delenamalan made their first contribution in #1130
- @Anghille made their first contribution in #1132
- @easychen made their first contribution in #1148
- @jpbede made their first contribution in #1151
- @eltociear made their first contribution in #1160
- @fabiottini made their first contribution in #1162
Full Changelog: v1.8.0...v1.8.1
Release v1.8.0
Details
☝️ Attention Developers: there is a potential Breaking Change in this release. CLI users will not be impacted.
🛠️ Potential Breaking Change
PR #1119 involved the refactoring of all the internal file/module structure of the Apprise library. The hope is I didn't break anything in your source code 🙏 . The change was required in order to remain compatible with Python v3.11+ in conjunction with library importing and how it works under the hood. More details on the specific issue can be found here demonstrating it. The Python Issue I opened in reguards to this made it clear I needed to adapt the fix on my side and conform to a better file based structure.
The side effect of this massive change developers may see (if any at all) is just the way your import calls are made. If you always followed the examples provided on this GitHub project, you'll have no issues at all. However, if you got clever and leveraged some of the under-the-hood compontents Apprise is built upon, then you may have an issue. The good news is the ONLY thing impacted is the way you imported your libraries (they just slightly moved around). An example of this is someone who may have had:
# For example:
from apprise.plugins.NotifyEmail import NotifyEmail
# This has changed to :
from apprise.plugins.email import NotifyEmail
# All other object functionality has not changed at allDocumented imports still work perfectly (both before and after this major refactor) such as:
from apprise import Apprise
from apprise import AppriseAsset
# etc...📣 New Notification Services:
n/a
💡 Features
- Custom Plugin Attachment Support Enforced + Added Testing in #1115
- Do not sanitize
http://attachment URLs (#1122)- This allows the successful fetching of very complicated http based Attachment URL's where the case sensitivity of the keys matter.
- The side effect of this change, is built in switches like
cache=become case sensitive too (e.gCache=will no longer be parsed).
❤️ Life-Cycle Support
- Enhancement: Refactor Test Code for Efficiency and Quality by @freddiewanah in #1100
- 💣 Python Module Naming & Namespacing Harmonization by in #1119
- This was a major change that eliminated
ClassName.pyto not include aclass ClassNameinside. Python has issues withimportandunittestreferences when this is done.unittestsbreak completely in Python v3.11 using this method making this massive refactoring essential.
- This was a major change that eliminated
🐛 Bugfixes
- Added JSON Content-Type header to freemobile:// in #1109
- Fix mailto://ip.addr support in #1114
clicksend://authentication bugfix in #1121- Update Apprise API (
apprise//) token length by @isometimescode in #1120
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.8.0 rom PyPI
pip install apprise==1.8.0New Contributors
- @freddiewanah made their first contribution in #1100
- @isometimescode made their first contribution in #1120
Release v1.7.6
Details
📣 New Notification Services:
💡 Features
❤️ Life-Cycle Support
- Fixed deprication warnings for Markdown extensions in #1108
- Default locale logical compatibility with Python 3.12 by @liushuyu in #1054
- Retired faast.io - It is no longer responding in #1096
- ntfy loaded topic count bugfix in #1094
🐛 Bugfixes
- freemobile:// msg moved from GET parameters and into payload in #1106
- Honor overflow=truncate when sending attachments by @pomeloy in #1097
hostparsed from user login (if present) for Emails in #1095
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.7.6 from PyPI
pip install apprise==1.7.6New Contributors
Release v1.7.5
Details
📣 New Notification Services:
- Free-Mobile Support added in #1090
💡 Features
- Improved markdown to html conversions in #1089
❤️ Life-Cycle Support
- Added test case to strengthen YAML configuration validation in #1043
🐛 Bugfixes
- Improved async/threading attachment support in #1086
- Improved variable parsing in YAML files in #1088
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.7.5 from PyPI
pip install apprise==1.7.5