Skip to content

Releases: caronc/apprise

Release v1.9.0

02 Sep 17:35
Compare
Choose a tag to compare

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.

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

26 Jul 00:20
Compare
Choose a tag to compare

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 🎉

Full Changelog: v1.8.0...v1.8.1

Release v1.8.0

11 May 20:34
Compare
Choose a tag to compare

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.g Cache= 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 a class ClassName inside. Python has issues with import and unittest references when this is done. unittests break completely in Python v3.11 using this method making this massive refactoring essential.

🐛 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

Release v1.7.6

14 Apr 01:11
Compare
Choose a tag to compare

Details

📣 New Notification Services:

💡 Features

  • Added delay= switch to aprs:// plugin (#1107)
  • RocketChat Token Support (#1060)

❤️ 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

30 Mar 14:09
Compare
Choose a tag to compare

Details

📣 New Notification Services:

💡 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

09 Mar 21:50
Compare
Choose a tag to compare

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

03 Mar 23:16
Compare
Choose a tag to compare

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= and from_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

❤️ 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 the mqtt:// 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)
  • 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

02 Sep 12:00
Compare
Choose a tag to compare

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 the Apprise() object to disable this.
  • ⭐ 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:
      1. Developers: By default include entries are disabled unless the developer sets recursion to a value greater than it's default of zero (0) when initializing a AppriseConfig() object. e.g: AppriseConfig(recursion=1). A value of 1 allows 1 level of includes to work. However, if the configuration include also contains an include statement, it would be ignored. You can increase the level of recursion to whatever you wish.
      2. CLI: The apprise tool by default has a recursion of one (1) allowing one level of include statements to be executed. This can be altered by setting the --recursion-depth=<value> (-R <value>) switch.
      3. include statements have restrictions on the content being included. For example, a file:// can include another file://. But a http:// can not include a file://. A file:// can however include a http://. 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 setting insecure_includes to True when initializing a AppriseConfig() object. e.g: AppriseConfig(recursion=1, insecure_includes=True).
  • Advance Email Parsing added (#276)! All notification services that take email addresses as input can now support the (additional) formats:
    • Full Name user@domain.com
    • Full Name: user@domain.com
    • Full Name <user@domain.com>
    • Full Name : <user@domain.com>

      Services that can utilize the Full 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

27 Jan 21:01
Compare
Choose a tag to compare

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 features split and truncate (#1035 & #1038)

❤️ Life-Cycle Support

  • Python 3.12 Support (#1031)
  • Removed Spontit (upstream no longer in service) (#1034)

🐛 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

Release v1.7.1

28 Dec 19:43
Compare
Choose a tag to compare

Details

This was just a small release to patch a small bug (#1032) preventing Apprise v1.7.0 from being compatible with the Apprise API.

See the release notes for Apprise v1.7.0 to see all of the bells and whistles now available!

🐛 Bugfixes

  • Resolved ConfigMemory AttributeError Exception (#1032)

Installation Instructions

Apprise is available on PyPI through pip:

# Install Apprise v1.7.1 from PyPI
pip install apprise==1.7.1