Releases: caronc/apprise
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=no
provided 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.1
New 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=v2
to 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.0
New 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.1
New 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 all
Documented 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.py
to not include aclass ClassName
inside. Python has issues withimport
andunittest
references when this is done.unittests
break 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.0
New 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
host
parsed 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.6
New 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
Release v1.7.4
Details
📣 New Notification Services:
💡 Features
.conf
configuration file support added to CLI. This PR also resolved some documentation ambiguity in #1080
❤️ Life-Cycle Support
- n/a
🐛 Bugfixes
- Custom module deadlock import fix in #1077
- This was primary reason for this (Apprise) release; to resolve this bug introduced in #1071 (in Apprise v1.7.3).
Apprise is available on PyPI through pip:
# Install Apprise v1.7.4 from PyPI
pip install apprise==1.7.4
Release v1.7.3
Details
Another minor release to push some outstanding bug-fixes that have accumulated and patched over the past month
📣 New Notification Services:
💡 Features
mailto://
comcast.net email template added (#1059)mailto://
improved custom email server handling (5ae212f)to=
andfrom_addr=
are no longer required in most circumstances and can be automatically determined based on basic information provided.
ntfy://
markdown support added (#1056)- just add
?format=markdown
to format the content accordingly
- just add
❤️ Life-Cycle Support
paho-mqtt
v2.0 was released and it's documentation for v1.6.1 was completely incompatible with it. For the stability of themqtt://
plugin,paho-mqtt
has been pinned to the stable v1.x release (#1065)
🐛 Bugfixes
- Fixed documents with respect to the use of
yaml
files (#1069) - Thank you @samueltardieu- Updated CLI so that it can read both
.yml
and.yaml
files by default (#1073)
- Updated CLI so that it can read both
macosx://
- Update terminal-notifier notify_paths (#1052) - Thank you @joergschultzelutter- Asynchronous Dynamic Module Loading Support (#1071)
- This was a bug introduced with Dynamic Module Loading (in Apprise v1.7.0) preventing threading/async support
Apprise is available on PyPI through pip:
# Install Apprise v1.7.3 from PyPI
pip install apprise==1.7.3
Apprise Release v0.8.8
Details
📣 New Notification Services:
- n/a
💡 Features
- ⭐ Message notifications are now asynchronous for Python 3 users! (#273) 🚀
- CLI user can set
--disable-async
or-Da
on the command line to disable this and go back to the legacy synchronous method which much slower when dealing with more then one notification. - Developers can set
AppriseAsset(async_mode=False)
before passing the asset into theApprise()
object to disable this.
- CLI user can set
- ⭐ Configuration files can now contain the keyword
include
allowing further (Apprise) configuration files to be parsed. (#226) 🚀- text base example:
include http://localhost/path/to/more/configuration/entries # No limit to the number of includes you specify include file:///path/to/another/configuration/file/on/your/system
- yaml base example:
include: - http://localhost/path/to/more/configuration/entries # No limit to the number of includes you specify - file:///path/to/another/configuration/file/on/your/system
- The following restrictions apply to the new
include
value:- Developers: By default
include
entries are disabled unless the developer setsrecursion
to a value greater than it's default of zero (0
) when initializing a AppriseConfig() object. e.g:AppriseConfig(recursion=1)
. A value of1
allows 1 level ofincludes
to work. However, if the configuration include also contains aninclude
statement, it would be ignored. You can increase the level of recursion to whatever you wish. - CLI: The
apprise
tool by default has a recursion of one (1
) allowing one level ofinclude
statements to be executed. This can be altered by setting the--recursion-depth=<value>
(-R <value>
) switch. include
statements have restrictions on the content being included. For example, afile://
can include anotherfile://
. But ahttp://
can not include afile://
. Afile://
can however include ahttp://
. All of this has been put in place for security reasons. A server hosting Apprise through a website by default will never allow a user to include local files into the configuration. Developers can disable this feature by settinginsecure_includes
toTrue
when initializing a AppriseConfig() object. e.g:AppriseConfig(recursion=1, insecure_includes=True)
.
- Developers: By default
- text base example:
- Advance Email Parsing added (#276)! All notification services that take email addresses as input can now support the (additional) formats:
Full Name [email protected]
Full Name: [email protected]
Full Name <[email protected]>
Full Name : <[email protected]>
Services that can utilize theFull Name
will make it part of the To or Cc delivery if specified (accompanied with the email it's associated with).
- Added a
/bin
directory to repository which just contains a few test tools that make it easier to test the code in development.- ⚙️
apprise
: a way of executing the code straight after pulling down the source code. This really helps in testing new features being developed right within the very branch you're working in. - ⚙️
test.sh
: a simple script you can use to run the unit tests and/or even a very specific one (or set of them). - ⚙️
checkdone.sh
: a simple script that runs a few checks against the entire code checked out to verify if there are any errors (instead of waiting for the Travis-Ci to inevitably catch them)
- ⚙️
- Lametric Time now supports an
icon=
URL argument so that you can over-ride the default icon assigned and instead choose from any of the ones provided on their website here.
❤️ Life-Cycle Support
- Removed deprecated code along with their paired notices that have been all lingering for more than a year now (#283)
🐛 Bugfixes
- Reverse URL broke in previous release (v0.8.7); this bug was fixed restoring the correct functionality of
Apprise.url()
(#275)
Installation Instructions
Apprise is available on PyPI through pip:
# Install Apprise v0.8.8 from PyPI
pip install apprise==0.8.8
Release v1.7.2
Details
This was just a second small release add some improvements and bug fixes
See the release notes for Apprise v1.7.0 to see all of the bells and whistles now available!
💡 Features
- Slack Integration Support thread_timestamp (#1033)
- Massive refactoring of
overflow
featuressplit
andtruncate
(#1035 & #1038)
❤️ Life-Cycle Support
🐛 Bugfixes
- Resolved TypeError logging exception with Custom plugin loading (#1042)
- Update README.md (form:// and forms:// examples) (#1045) - thank you @dgtlmoon
Installation Instructions
Apprise is available on PyPI through pip:
# Install Apprise v1.7.2 from PyPI
pip install apprise==1.7.2