aboutsummaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/apprise-1.7.6.dist-info/RECORD183
-rw-r--r--libs/apprise-1.7.6.dist-info/REQUESTED0
-rw-r--r--libs/apprise-1.8.0.dist-info/INSTALLER (renamed from libs/apprise-1.7.6.dist-info/INSTALLER)0
-rw-r--r--libs/apprise-1.8.0.dist-info/LICENSE (renamed from libs/apprise-1.7.6.dist-info/LICENSE)0
-rw-r--r--libs/apprise-1.8.0.dist-info/METADATA (renamed from libs/apprise-1.7.6.dist-info/METADATA)2
-rw-r--r--libs/apprise-1.8.0.dist-info/RECORD183
-rw-r--r--libs/apprise-1.8.0.dist-info/REQUESTED (renamed from libs/apprise-1.7.4.dist-info/REQUESTED)0
-rw-r--r--libs/apprise-1.8.0.dist-info/WHEEL (renamed from libs/apprise-1.7.6.dist-info/WHEEL)0
-rw-r--r--libs/apprise-1.8.0.dist-info/entry_points.txt (renamed from libs/apprise-1.7.6.dist-info/entry_points.txt)0
-rw-r--r--libs/apprise-1.8.0.dist-info/top_level.txt (renamed from libs/apprise-1.7.6.dist-info/top_level.txt)0
-rw-r--r--libs/apprise/Apprise.py14
-rw-r--r--libs/apprise/__init__.py23
-rw-r--r--libs/apprise/apprise_attachment.py (renamed from libs/apprise/AppriseAttachment.py)6
-rw-r--r--libs/apprise/apprise_attachment.pyi (renamed from libs/apprise/AppriseAttachment.pyi)0
-rw-r--r--libs/apprise/apprise_config.py (renamed from libs/apprise/AppriseConfig.py)4
-rw-r--r--libs/apprise/apprise_config.pyi (renamed from libs/apprise/AppriseConfig.pyi)0
-rw-r--r--libs/apprise/asset.py (renamed from libs/apprise/AppriseAsset.py)2
-rw-r--r--libs/apprise/asset.pyi (renamed from libs/apprise/AppriseAsset.pyi)0
-rw-r--r--libs/apprise/attachment/__init__.py5
-rw-r--r--libs/apprise/attachment/base.py (renamed from libs/apprise/attachment/AttachBase.py)9
-rw-r--r--libs/apprise/attachment/base.pyi (renamed from libs/apprise/attachment/AttachBase.pyi)0
-rw-r--r--libs/apprise/attachment/file.py (renamed from libs/apprise/attachment/AttachFile.py)4
-rw-r--r--libs/apprise/attachment/http.py (renamed from libs/apprise/attachment/AttachHTTP.py)12
-rw-r--r--libs/apprise/config/__init__.py5
-rw-r--r--libs/apprise/config/base.py (renamed from libs/apprise/config/ConfigBase.py)8
-rw-r--r--libs/apprise/config/base.pyi (renamed from libs/apprise/config/ConfigBase.pyi)0
-rw-r--r--libs/apprise/config/file.py (renamed from libs/apprise/config/ConfigFile.py)4
-rw-r--r--libs/apprise/config/http.py (renamed from libs/apprise/config/ConfigHTTP.py)6
-rw-r--r--libs/apprise/config/memory.py (renamed from libs/apprise/config/ConfigMemory.py)4
-rw-r--r--libs/apprise/conversion.py2
-rw-r--r--libs/apprise/decorators/base.py (renamed from libs/apprise/decorators/CustomNotifyPlugin.py)7
-rw-r--r--libs/apprise/decorators/notify.py2
-rw-r--r--libs/apprise/i18n/en/LC_MESSAGES/apprise.mobin3959 -> 3959 bytes
-rw-r--r--libs/apprise/locale.py (renamed from libs/apprise/AppriseLocale.py)0
-rw-r--r--libs/apprise/manager.py83
-rw-r--r--libs/apprise/manager_attachment.py (renamed from libs/apprise/AttachmentManager.py)5
-rw-r--r--libs/apprise/manager_config.py (renamed from libs/apprise/ConfigurationManager.py)5
-rw-r--r--libs/apprise/manager_plugins.py (renamed from libs/apprise/NotificationManager.py)6
-rw-r--r--libs/apprise/plugins/__init__.py8
-rw-r--r--libs/apprise/plugins/apprise_api.py (renamed from libs/apprise/plugins/NotifyAppriseAPI.py)8
-rw-r--r--libs/apprise/plugins/aprs.py (renamed from libs/apprise/plugins/NotifyAprs.py)6
-rw-r--r--libs/apprise/plugins/bark.py (renamed from libs/apprise/plugins/NotifyBark.py)6
-rw-r--r--libs/apprise/plugins/base.py (renamed from libs/apprise/plugins/NotifyBase.py)6
-rw-r--r--libs/apprise/plugins/base.pyi (renamed from libs/apprise/plugins/NotifyBase.pyi)0
-rw-r--r--libs/apprise/plugins/boxcar.py (renamed from libs/apprise/plugins/NotifyBoxcar.py)6
-rw-r--r--libs/apprise/plugins/bulksms.py (renamed from libs/apprise/plugins/NotifyBulkSMS.py)6
-rw-r--r--libs/apprise/plugins/bulkvs.py (renamed from libs/apprise/plugins/NotifyBulkVS.py)6
-rw-r--r--libs/apprise/plugins/burstsms.py (renamed from libs/apprise/plugins/NotifyBurstSMS.py)6
-rw-r--r--libs/apprise/plugins/chantify.py (renamed from libs/apprise/plugins/NotifyChantify.py)4
-rw-r--r--libs/apprise/plugins/clicksend.py (renamed from libs/apprise/plugins/NotifyClickSend.py)27
-rw-r--r--libs/apprise/plugins/custom_form.py (renamed from libs/apprise/plugins/NotifyForm.py)6
-rw-r--r--libs/apprise/plugins/custom_json.py (renamed from libs/apprise/plugins/NotifyJSON.py)6
-rw-r--r--libs/apprise/plugins/custom_xml.py (renamed from libs/apprise/plugins/NotifyXML.py)6
-rw-r--r--libs/apprise/plugins/d7networks.py (renamed from libs/apprise/plugins/NotifyD7Networks.py)4
-rw-r--r--libs/apprise/plugins/dapnet.py (renamed from libs/apprise/plugins/NotifyDapnet.py)6
-rw-r--r--libs/apprise/plugins/dbus.py (renamed from libs/apprise/plugins/NotifyDBus.py)4
-rw-r--r--libs/apprise/plugins/dingtalk.py (renamed from libs/apprise/plugins/NotifyDingTalk.py)6
-rw-r--r--libs/apprise/plugins/discord.py (renamed from libs/apprise/plugins/NotifyDiscord.py)6
-rw-r--r--libs/apprise/plugins/email.py (renamed from libs/apprise/plugins/NotifyEmail.py)16
-rw-r--r--libs/apprise/plugins/emby.py (renamed from libs/apprise/plugins/NotifyEmby.py)6
-rw-r--r--libs/apprise/plugins/enigma2.py (renamed from libs/apprise/plugins/NotifyEnigma2.py)6
-rw-r--r--libs/apprise/plugins/fcm/__init__.py (renamed from libs/apprise/plugins/NotifyFCM/__init__.py)6
-rw-r--r--libs/apprise/plugins/fcm/color.py (renamed from libs/apprise/plugins/NotifyFCM/color.py)2
-rw-r--r--libs/apprise/plugins/fcm/common.py (renamed from libs/apprise/plugins/NotifyFCM/common.py)0
-rw-r--r--libs/apprise/plugins/fcm/oauth.py (renamed from libs/apprise/plugins/NotifyFCM/oauth.py)0
-rw-r--r--libs/apprise/plugins/fcm/priority.py (renamed from libs/apprise/plugins/NotifyFCM/priority.py)0
-rw-r--r--libs/apprise/plugins/feishu.py (renamed from libs/apprise/plugins/NotifyFeishu.py)4
-rw-r--r--libs/apprise/plugins/flock.py (renamed from libs/apprise/plugins/NotifyFlock.py)4
-rw-r--r--libs/apprise/plugins/freemobile.py (renamed from libs/apprise/plugins/NotifyFreeMobile.py)5
-rw-r--r--libs/apprise/plugins/gnome.py (renamed from libs/apprise/plugins/NotifyGnome.py)4
-rw-r--r--libs/apprise/plugins/google_chat.py (renamed from libs/apprise/plugins/NotifyGoogleChat.py)4
-rw-r--r--libs/apprise/plugins/gotify.py (renamed from libs/apprise/plugins/NotifyGotify.py)4
-rw-r--r--libs/apprise/plugins/growl.py (renamed from libs/apprise/plugins/NotifyGrowl.py)6
-rw-r--r--libs/apprise/plugins/guilded.py (renamed from libs/apprise/plugins/NotifyGuilded.py)5
-rw-r--r--libs/apprise/plugins/home_assistant.py (renamed from libs/apprise/plugins/NotifyHomeAssistant.py)6
-rw-r--r--libs/apprise/plugins/httpsms.py (renamed from libs/apprise/plugins/NotifyHttpSMS.py)4
-rw-r--r--libs/apprise/plugins/ifttt.py (renamed from libs/apprise/plugins/NotifyIFTTT.py)4
-rw-r--r--libs/apprise/plugins/join.py (renamed from libs/apprise/plugins/NotifyJoin.py)4
-rw-r--r--libs/apprise/plugins/kavenegar.py (renamed from libs/apprise/plugins/NotifyKavenegar.py)4
-rw-r--r--libs/apprise/plugins/kumulos.py (renamed from libs/apprise/plugins/NotifyKumulos.py)4
-rw-r--r--libs/apprise/plugins/lametric.py (renamed from libs/apprise/plugins/NotifyLametric.py)4
-rw-r--r--libs/apprise/plugins/line.py (renamed from libs/apprise/plugins/NotifyLine.py)6
-rw-r--r--libs/apprise/plugins/lunasea.py (renamed from libs/apprise/plugins/NotifyLunaSea.py)6
-rw-r--r--libs/apprise/plugins/macosx.py (renamed from libs/apprise/plugins/NotifyMacOSX.py)4
-rw-r--r--libs/apprise/plugins/mailgun.py (renamed from libs/apprise/plugins/NotifyMailgun.py)4
-rw-r--r--libs/apprise/plugins/mastodon.py (renamed from libs/apprise/plugins/NotifyMastodon.py)8
-rw-r--r--libs/apprise/plugins/matrix.py (renamed from libs/apprise/plugins/NotifyMatrix.py)6
-rw-r--r--libs/apprise/plugins/mattermost.py (renamed from libs/apprise/plugins/NotifyMattermost.py)4
-rw-r--r--libs/apprise/plugins/messagebird.py (renamed from libs/apprise/plugins/NotifyMessageBird.py)4
-rw-r--r--libs/apprise/plugins/misskey.py (renamed from libs/apprise/plugins/NotifyMisskey.py)4
-rw-r--r--libs/apprise/plugins/mqtt.py (renamed from libs/apprise/plugins/NotifyMQTT.py)6
-rw-r--r--libs/apprise/plugins/msg91.py (renamed from libs/apprise/plugins/NotifyMSG91.py)4
-rw-r--r--libs/apprise/plugins/msteams.py (renamed from libs/apprise/plugins/NotifyMSTeams.py)6
-rw-r--r--libs/apprise/plugins/nextcloud.py (renamed from libs/apprise/plugins/NotifyNextcloud.py)6
-rw-r--r--libs/apprise/plugins/nextcloudtalk.py (renamed from libs/apprise/plugins/NotifyNextcloudTalk.py)6
-rw-r--r--libs/apprise/plugins/notica.py (renamed from libs/apprise/plugins/NotifyNotica.py)6
-rw-r--r--libs/apprise/plugins/notifiarr.py (renamed from libs/apprise/plugins/NotifyNotifiarr.py)4
-rw-r--r--libs/apprise/plugins/notifico.py (renamed from libs/apprise/plugins/NotifyNotifico.py)4
-rw-r--r--libs/apprise/plugins/ntfy.py (renamed from libs/apprise/plugins/NotifyNtfy.py)8
-rw-r--r--libs/apprise/plugins/office365.py (renamed from libs/apprise/plugins/NotifyOffice365.py)6
-rw-r--r--libs/apprise/plugins/one_signal.py (renamed from libs/apprise/plugins/NotifyOneSignal.py)4
-rw-r--r--libs/apprise/plugins/opsgenie.py (renamed from libs/apprise/plugins/NotifyOpsgenie.py)4
-rw-r--r--libs/apprise/plugins/pagerduty.py (renamed from libs/apprise/plugins/NotifyPagerDuty.py)6
-rw-r--r--libs/apprise/plugins/pagertree.py (renamed from libs/apprise/plugins/NotifyPagerTree.py)4
-rw-r--r--libs/apprise/plugins/parseplatform.py (renamed from libs/apprise/plugins/NotifyParsePlatform.py)4
-rw-r--r--libs/apprise/plugins/popcorn_notify.py (renamed from libs/apprise/plugins/NotifyPopcornNotify.py)4
-rw-r--r--libs/apprise/plugins/prowl.py (renamed from libs/apprise/plugins/NotifyProwl.py)4
-rw-r--r--libs/apprise/plugins/pushbullet.py (renamed from libs/apprise/plugins/NotifyPushBullet.py)6
-rw-r--r--libs/apprise/plugins/pushdeer.py (renamed from libs/apprise/plugins/NotifyPushDeer.py)4
-rw-r--r--libs/apprise/plugins/pushed.py (renamed from libs/apprise/plugins/NotifyPushed.py)6
-rw-r--r--libs/apprise/plugins/pushjet.py (renamed from libs/apprise/plugins/NotifyPushjet.py)6
-rw-r--r--libs/apprise/plugins/pushme.py (renamed from libs/apprise/plugins/NotifyPushMe.py)4
-rw-r--r--libs/apprise/plugins/pushover.py (renamed from libs/apprise/plugins/NotifyPushover.py)6
-rw-r--r--libs/apprise/plugins/pushsafer.py (renamed from libs/apprise/plugins/NotifyPushSafer.py)4
-rw-r--r--libs/apprise/plugins/pushy.py (renamed from libs/apprise/plugins/NotifyPushy.py)4
-rw-r--r--libs/apprise/plugins/reddit.py (renamed from libs/apprise/plugins/NotifyReddit.py)6
-rw-r--r--libs/apprise/plugins/revolt.py (renamed from libs/apprise/plugins/NotifyRevolt.py)4
-rw-r--r--libs/apprise/plugins/rocketchat.py (renamed from libs/apprise/plugins/NotifyRocketChat.py)6
-rw-r--r--libs/apprise/plugins/rsyslog.py (renamed from libs/apprise/plugins/NotifyRSyslog.py)4
-rw-r--r--libs/apprise/plugins/ryver.py (renamed from libs/apprise/plugins/NotifyRyver.py)4
-rw-r--r--libs/apprise/plugins/sendgrid.py (renamed from libs/apprise/plugins/NotifySendGrid.py)4
-rw-r--r--libs/apprise/plugins/serverchan.py (renamed from libs/apprise/plugins/NotifyServerChan.py)4
-rw-r--r--libs/apprise/plugins/ses.py (renamed from libs/apprise/plugins/NotifySES.py)6
-rw-r--r--libs/apprise/plugins/signal_api.py (renamed from libs/apprise/plugins/NotifySignalAPI.py)6
-rw-r--r--libs/apprise/plugins/simplepush.py (renamed from libs/apprise/plugins/NotifySimplePush.py)6
-rw-r--r--libs/apprise/plugins/sinch.py (renamed from libs/apprise/plugins/NotifySinch.py)6
-rw-r--r--libs/apprise/plugins/slack.py (renamed from libs/apprise/plugins/NotifySlack.py)4
-rw-r--r--libs/apprise/plugins/smseagle.py (renamed from libs/apprise/plugins/NotifySMSEagle.py)6
-rw-r--r--libs/apprise/plugins/smsmanager.py (renamed from libs/apprise/plugins/NotifySMSManager.py)4
-rw-r--r--libs/apprise/plugins/smtp2go.py (renamed from libs/apprise/plugins/NotifySMTP2Go.py)4
-rw-r--r--libs/apprise/plugins/sns.py (renamed from libs/apprise/plugins/NotifySNS.py)6
-rw-r--r--libs/apprise/plugins/sparkpost.py (renamed from libs/apprise/plugins/NotifySparkPost.py)4
-rw-r--r--libs/apprise/plugins/streamlabs.py (renamed from libs/apprise/plugins/NotifyStreamlabs.py)4
-rw-r--r--libs/apprise/plugins/synology.py (renamed from libs/apprise/plugins/NotifySynology.py)6
-rw-r--r--libs/apprise/plugins/syslog.py (renamed from libs/apprise/plugins/NotifySyslog.py)4
-rw-r--r--libs/apprise/plugins/techuluspush.py (renamed from libs/apprise/plugins/NotifyTechulusPush.py)4
-rw-r--r--libs/apprise/plugins/telegram.py (renamed from libs/apprise/plugins/NotifyTelegram.py)6
-rw-r--r--libs/apprise/plugins/threema.py (renamed from libs/apprise/plugins/NotifyThreema.py)6
-rw-r--r--libs/apprise/plugins/twilio.py (renamed from libs/apprise/plugins/NotifyTwilio.py)6
-rw-r--r--libs/apprise/plugins/twist.py (renamed from libs/apprise/plugins/NotifyTwist.py)6
-rw-r--r--libs/apprise/plugins/twitter.py (renamed from libs/apprise/plugins/NotifyTwitter.py)8
-rw-r--r--libs/apprise/plugins/voipms.py (renamed from libs/apprise/plugins/NotifyVoipms.py)4
-rw-r--r--libs/apprise/plugins/vonage.py (renamed from libs/apprise/plugins/NotifyVonage.py)6
-rw-r--r--libs/apprise/plugins/webexteams.py (renamed from libs/apprise/plugins/NotifyWebexTeams.py)4
-rw-r--r--libs/apprise/plugins/wecombot.py (renamed from libs/apprise/plugins/NotifyWeComBot.py)4
-rw-r--r--libs/apprise/plugins/whatsapp.py (renamed from libs/apprise/plugins/NotifyWhatsApp.py)4
-rw-r--r--libs/apprise/plugins/windows.py (renamed from libs/apprise/plugins/NotifyWindows.py)4
-rw-r--r--libs/apprise/plugins/xbmc.py (renamed from libs/apprise/plugins/NotifyXBMC.py)6
-rw-r--r--libs/apprise/plugins/zulip.py (renamed from libs/apprise/plugins/NotifyZulip.py)4
-rw-r--r--libs/apprise/url.py (renamed from libs/apprise/URLBase.py)9
-rw-r--r--libs/apprise/url.pyi (renamed from libs/apprise/URLBase.pyi)0
-rw-r--r--libs/apprise/utils.py13
-rw-r--r--libs/version.txt2
153 files changed, 616 insertions, 569 deletions
diff --git a/libs/apprise-1.7.6.dist-info/RECORD b/libs/apprise-1.7.6.dist-info/RECORD
deleted file mode 100644
index 250648105..000000000
--- a/libs/apprise-1.7.6.dist-info/RECORD
+++ /dev/null
@@ -1,183 +0,0 @@
-../../bin/apprise,sha256=ZJ-e4qqxNLtdW_DAvpuPPX5iROIiQd8I6nvg7vtAv-g,233
-apprise-1.7.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
-apprise-1.7.6.dist-info/LICENSE,sha256=gt7qKBxRhVcdmXCYVtrWP6DtYjD0DzONet600dkU994,1343
-apprise-1.7.6.dist-info/METADATA,sha256=z_gaX2IdNJqw4T9q7AYQri9jcIs-OTGCo3t2EgEY-mw,44823
-apprise-1.7.6.dist-info/RECORD,,
-apprise-1.7.6.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
-apprise-1.7.6.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
-apprise-1.7.6.dist-info/entry_points.txt,sha256=71YypBuNdjAKiaLsiMG40HEfLHxkU4Mi7o_S0s0d8wI,45
-apprise-1.7.6.dist-info/top_level.txt,sha256=JrCRn-_rXw5LMKXkIgMSE4E0t1Ks9TYrBH54Pflwjkk,8
-apprise/Apprise.py,sha256=Stm2NhJprWRaMwQfTiIQG_nR1bLpHi_zcdwEcsCpa-A,32865
-apprise/Apprise.pyi,sha256=_4TBKvT-QVj3s6PuTh3YX-BbQMeJTdBGdVpubLMY4_k,2203
-apprise/AppriseAsset.py,sha256=jRW8Y1EcAvjVA9h_mINmsjO4DM3S0aDl6INIFVMcUCs,11647
-apprise/AppriseAsset.pyi,sha256=NYLXXYbScgRkspP27XGpRRM_uliPu1OCdWdZBPPvLng,979
-apprise/AppriseAttachment.py,sha256=vhrktSrp8GLr32aK4KqV6BX83IpI1lxZe-pGo1wiSFM,12540
-apprise/AppriseAttachment.pyi,sha256=R9-0dVqWpeaFrVpcREwPhGy3qHWztG5jEjYIOsbE5dM,1145
-apprise/AppriseConfig.py,sha256=wfuR6Mb3ZLHvjvqWdFp9lVmjjDRWs65unY9qa92RkCg,16909
-apprise/AppriseConfig.pyi,sha256=_mUlCnncqAq8sL01WxQTgZjnb2ic9kZXvtqZmVl-fc8,1568
-apprise/AppriseLocale.py,sha256=4uSr4Nj_rz6ISMMAfRVRk58wZVLKOofJgk2x0_E8NkQ,8994
-apprise/AttachmentManager.py,sha256=EwlnjuKn3fv_pioWcmMCkyDTsO178t6vkEOD8AjAPsw,2053
-apprise/ConfigurationManager.py,sha256=MUmGajxjgnr6FGN7xb3q0nD0VVgdTdvapBBR7CsI-rc,2058
-apprise/NotificationManager.py,sha256=ZJgkiCgcJ7Bz_6bwQ47flrcxvLMbA4Vbw0HG_yTsGdE,2041
-apprise/URLBase.py,sha256=xRP0-blocp9UudYh04Hb3fIEmTZWJaTv_tzjrqaB9fg,29423
-apprise/URLBase.pyi,sha256=WLaRREH7FzZ5x3-qkDkupojWGFC4uFwJ1EDt02lVs8c,520
-apprise/__init__.py,sha256=ArtvoarAMnBcSfXF7L_hzq5CUJ9TUnHopiC7xafCe3c,3368
-apprise/assets/NotifyXML-1.0.xsd,sha256=292qQ_IUl5EWDhPyzm9UTT0C2rVvJkyGar8jiODkJs8,986
-apprise/assets/NotifyXML-1.1.xsd,sha256=bjR3CGG4AEXoJjYkGCbDttKHSkPP1FlIWO02E7G59g4,1758
-apprise/assets/themes/default/apprise-failure-128x128.ico,sha256=Mt0ptfHJaN3Wsv5UCNDn9_3lyEDHxVDv1JdaDEI_xCA,67646
-apprise/assets/themes/default/apprise-failure-128x128.png,sha256=66ps8TDPxVH3g9PlObJqF-0x952CjnqQyN3zvpRcOT8,16135
-apprise/assets/themes/default/apprise-failure-256x256.png,sha256=bQBsKKCsKfR9EqgYOZrcVcVa5y8qG58PN2mEqO5eNRI,41931
-apprise/assets/themes/default/apprise-failure-32x32.png,sha256=vH0pZffIDCvkejpr3fJHGXW__8Yc3R_p0bacX6t6l18,2437
-apprise/assets/themes/default/apprise-failure-72x72.png,sha256=EP5A8DHRDr9srgupFSwOoyQ308bNJ8aL192J_L4K-ec,7600
-apprise/assets/themes/default/apprise-info-128x128.ico,sha256=F5_CirmXueRCRI5Z_Crf6TS6jVIXTJlRD83zw1oJ66g,67646
-apprise/assets/themes/default/apprise-info-128x128.png,sha256=bBqRZAgQey-gkmJrnFhPbzjILSrljE59mRkgj3raMQo,16671
-apprise/assets/themes/default/apprise-info-256x256.png,sha256=B5r_O4d9MHCmSWZwfbqQgZSp-ZetTdiBSwKcMTF1aFA,43331
-apprise/assets/themes/default/apprise-info-32x32.png,sha256=lt3NZ95TzkiCNVNlurrB2fE2nriMa1wftl7nrNXmb6c,2485
-apprise/assets/themes/default/apprise-info-72x72.png,sha256=kDnsZpqNUZGqs9t1ECUup7FOfXUIL-rupnQCYJp9So4,7875
-apprise/assets/themes/default/apprise-logo.png,sha256=85ttALudKkLmiqilJT7mUQLUXRFmM1AK89rnwLm313s,160907
-apprise/assets/themes/default/apprise-success-128x128.ico,sha256=uCopPwdQjxgfohKazHaDzYs9y4oiaOpL048PYC6WRlg,67646
-apprise/assets/themes/default/apprise-success-128x128.png,sha256=nvDuU_QqhGlw6cMtdj7Mv-gPgqCEx-0DaaXn1KBLVYg,17446
-apprise/assets/themes/default/apprise-success-256x256.png,sha256=vXfKuxY3n0eeXHKdb9hTxICxOEn7HjAQ4IZpX0HSLzc,48729
-apprise/assets/themes/default/apprise-success-32x32.png,sha256=Jg9pFJh3YPI-LiPBebyJ7Z4Vt7BRecaE8AsRjQVIkME,2471
-apprise/assets/themes/default/apprise-success-72x72.png,sha256=FQbgvIhqKOhEK0yvrhaSpai0R7hrkTt_-GaC2KUgCCk,7858
-apprise/assets/themes/default/apprise-warning-128x128.ico,sha256=6XaQPOx0oWK_xbhr4Yhb7qNazCWwSs9lk2SYR2MHTrQ,67646
-apprise/assets/themes/default/apprise-warning-128x128.png,sha256=pf5c4Ph7jWH7gf39dJoieSj8TzAsY3TXI-sGISGVIW4,16784
-apprise/assets/themes/default/apprise-warning-256x256.png,sha256=SY-xlaiXaj420iEYKC2_fJxU-yj2SuaQg6xfPNi83bw,43708
-apprise/assets/themes/default/apprise-warning-32x32.png,sha256=97R2ywNvcwczhBoWEIgajVtWjgT8fLs4FCCz4wu0dwc,2472
-apprise/assets/themes/default/apprise-warning-72x72.png,sha256=L8moEInkO_OLxoOcuvN7rmrGZo64iJeH20o-24MQghE,7913
-apprise/attachment/AttachBase.py,sha256=T3WreGrTsqqGplXJO36jm-N14X7ymSc9xt7XdTYuXVE,13656
-apprise/attachment/AttachBase.pyi,sha256=w0XG_QKauiMLJ7eQ4S57IiLIURZHm_Snw7l6-ih9GP8,961
-apprise/attachment/AttachFile.py,sha256=MbHY_av0GeM_AIBKV02Hq7SHiZ9eCr1yTfvDMUgi2I4,4765
-apprise/attachment/AttachHTTP.py,sha256=_CMPp4QGLATfGO2-Nw57sxsQyed9z3ywgoB0vpK3KZk,13779
-apprise/attachment/__init__.py,sha256=xabgXpvV05X-YRuqIt3uGYMXwYNXjHyF6Dwd8HfZCFE,1658
-apprise/cli.py,sha256=h-pWSQPqQficH6J-OEp3MTGydWyt6vMYnDZvHCeAt4Y,20697
-apprise/common.py,sha256=I6wfrndggCL7l7KAl7Cm4uwAX9n0l3SN4-BVvTE0L0M,5593
-apprise/common.pyi,sha256=luF3QRiClDCk8Z23rI6FCGYsVmodOt_JYfYyzGogdNM,447
-apprise/config/ConfigBase.py,sha256=d1efIuQFCJr66WgpudV2DWtxY3-tuZAyMAhHXBzJ8p0,53194
-apprise/config/ConfigBase.pyi,sha256=cngfobwH6v2vxYbQrObDi5Z-t5wcquWF-wR0kBCr3Eg,54
-apprise/config/ConfigFile.py,sha256=u_SDaN3OHMyaAq2X7k_T4_PRKkVsDwleqBz9YIN5lbA,6138
-apprise/config/ConfigHTTP.py,sha256=Iy6Ji8_nX3xDjFgJGLrz4ftrMlMiyKiFGzYGJ7rMSMQ,9457
-apprise/config/ConfigMemory.py,sha256=epEAgNy-eJVWoQaUOvjivMWxXTofy6wAQ-NbCqYmuyE,2829
-apprise/config/__init__.py,sha256=lbsxrUpB1IYM2q7kjYhsXQGgPF-yZXJrKFE361tdIPY,1663
-apprise/conversion.py,sha256=0VZ0eCZfksN-97Vl0TjVjwnCTgus3XTRioceSFnP-gc,6277
-apprise/decorators/CustomNotifyPlugin.py,sha256=i4D-sgOsBWsxO5auWCN2bgXLLPuADaaLlJ1gUKLj2bU,7972
-apprise/decorators/__init__.py,sha256=e_PDAm0kQNzwDPx-NJZLPfLMd2VAABvNZtxx_iDviRM,1487
-apprise/decorators/notify.py,sha256=a2WupErNw1_SMAld7jPC273bskiChMpYy95BOog5A9w,5111
-apprise/emojis.py,sha256=ONF0t8dY9f2XlEkLUG79-ybKVAj2GqbPj2-Be97vAoI,87738
-apprise/i18n/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
-apprise/i18n/en/LC_MESSAGES/apprise.mo,sha256=oUTuHREmLEYN07oqYqRMJ_kU71-o5o37NsF4RXlC5AU,3959
-apprise/logger.py,sha256=131hqhed8cUj9x_mfXDEvwA2YbcYDFAYiWVK1HgxRVY,6921
-apprise/manager.py,sha256=R9w8jxQRNy6Z_XDcobkt4JYbrC4jtj2OwRw9Zrib3CA,26857
-apprise/plugins/NotifyAppriseAPI.py,sha256=ISBE0brD3eQdyw3XrGXd4Uc4kSYvIuI3SSUVCt-bkdo,16654
-apprise/plugins/NotifyAprs.py,sha256=xdL_aIVgb4ggxRFeCdkZAbgHYZ8DWLw9pRpLZQ0rHoE,25523
-apprise/plugins/NotifyBark.py,sha256=bsDvKooRy4k1Gg7tvBjv3DIx7-WZiV_mbTrkTwMtd9Q,15698
-apprise/plugins/NotifyBase.py,sha256=G3xkF_a2BWqNSxsrnOW7NUgHjOqBCYC5zihCifWemo8,30360
-apprise/plugins/NotifyBase.pyi,sha256=aKlZXRYUgG8lz_ZgGkYYJ_GKhuf18youTmMU-FlG7z8,21
-apprise/plugins/NotifyBoxcar.py,sha256=vR00-WggHa1nHYWyb-f5P2V-G4f683fU_-GBlIeJvD0,12867
-apprise/plugins/NotifyBulkSMS.py,sha256=stPWAFCfhBP617zYK9Dgk6pNJBN_WcyJtODzo0jR1QQ,16005
-apprise/plugins/NotifyBulkVS.py,sha256=viLGeyUDiirRRM7CgRqqElHSLYFnMugDtWE6Ytjqfaw,13290
-apprise/plugins/NotifyBurstSMS.py,sha256=cN2kRETKIK5LhwpQEA8C68LKv8KEUPmXYe-nTSegGls,15550
-apprise/plugins/NotifyChantify.py,sha256=GJJOAtSnVoIfKbJF_W1DTu7WsvS_zHdjO4T1XTKT87g,6673
-apprise/plugins/NotifyClickSend.py,sha256=UfOJqsas6WLjQskojuJE7I_-lrb5QrkMiBZv-po_Q9c,11229
-apprise/plugins/NotifyD7Networks.py,sha256=4E6Fh0kQoDlMMwgZJDOXky7c7KrdMMvqprcfm29scWU,15043
-apprise/plugins/NotifyDBus.py,sha256=1eVJHIL3XkFjDePMqfcll35Ie1vxggJ1iBsVFAIaF00,14379
-apprise/plugins/NotifyDapnet.py,sha256=KuXjBU0ZrIYtoDei85NeLZ-IP810T4w5oFXH9sWiSh0,13624
-apprise/plugins/NotifyDingTalk.py,sha256=NJyETgN6QjtRqtxQjfBLFVuFpURyWykRftm6WpQJVbY,12009
-apprise/plugins/NotifyDiscord.py,sha256=M_qmTzB7NNL5_agjYDX38KBN1jRzDBp2EMSNwEF_9Tw,26072
-apprise/plugins/NotifyEmail.py,sha256=Y_ZOrdK6hTUKHLvogKpV5VqD8byzDyDSvwIVmfdsC2g,39789
-apprise/plugins/NotifyEmby.py,sha256=OMVO8XsVl_XCBYNNNQi8ni2lS4voLfU8Puk1xJOAvHs,24039
-apprise/plugins/NotifyEnigma2.py,sha256=Hj0Q9YOeljSwbfiuMKLqXTVX_1g_mjNUGEts7wfrwno,11498
-apprise/plugins/NotifyFCM/__init__.py,sha256=mBFtIgIJuLIFnMB5ndx5Makjs9orVMc2oLoD7LaVT48,21669
-apprise/plugins/NotifyFCM/color.py,sha256=8iqDtadloQh2TMxkFmIFwenHqKp1pHHn1bwyWOzZ6TY,4592
-apprise/plugins/NotifyFCM/common.py,sha256=978uBUoNdtopCtylipGiKQdsQ8FTONxkFBp7uJMZHc8,1718
-apprise/plugins/NotifyFCM/oauth.py,sha256=Vvbd0-rd5BPIjAneG3rILU153JIzfSZ0kaDov6hm96M,11197
-apprise/plugins/NotifyFCM/priority.py,sha256=0WuRW1y1HVnybgjlTeCZPHzt7j8SwWnC7faNcjioAOc,8163
-apprise/plugins/NotifyFeishu.py,sha256=IpcABdLZJ1vcQdZHlmASVbNOiOCIrmgKFhz1hbdskY4,7266
-apprise/plugins/NotifyFlock.py,sha256=0rUIa9nToGsO8BTUgixh8Z_qdVixJeH479UNYjcE4EM,12748
-apprise/plugins/NotifyForm.py,sha256=38nL-2m1cf4gEQFQ4NpvA4j9i5_nNUgelReWFSjyV5U,17905
-apprise/plugins/NotifyFreeMobile.py,sha256=XCkgZLc3KKGlx_9UdeoMJVcHpeQrOml9T93S-DGf4bs,6644
-apprise/plugins/NotifyGnome.py,sha256=8MXTa8gZg1wTgNJfLlmq7_fl3WaYK-SX6VR91u308C4,9059
-apprise/plugins/NotifyGoogleChat.py,sha256=lnoN17m6lZANaXcElDTP8lcuVWjIZEK8C6_iqJNAnw4,12622
-apprise/plugins/NotifyGotify.py,sha256=DNlOIHyuYitO5use9oa_REPm2Fant7y9QSaatrZFNI0,10551
-apprise/plugins/NotifyGrowl.py,sha256=M6ViUz967VhEHtXrE7lbCKF3aB4pIXNEzJLjjGAmvhM,14023
-apprise/plugins/NotifyGuilded.py,sha256=eCMCoFFuE0XNY8HlLM21zoxgBNgqEKQ8dwYj8LihfRU,3641
-apprise/plugins/NotifyHomeAssistant.py,sha256=zqWu7TtdXhTbGNuflC8WfydbHsCLiEBw4uBUcF7YZtw,10739
-apprise/plugins/NotifyHttpSMS.py,sha256=pDEUHCCB18IhOgDcVK3_FFDJdAcrdTIfPzj0jNnZZBo,11136
-apprise/plugins/NotifyIFTTT.py,sha256=oMvTQ0bEu2eJQgw9BwxAwTNOtbZ_ER-zleJvWpWTj7w,13425
-apprise/plugins/NotifyJSON.py,sha256=70ctjmArGzuvM1gHNt1bCiQVWE7Fp9vd2nWhSXwFvw0,13851
-apprise/plugins/NotifyJoin.py,sha256=B8FHp7cblZBkxTgfrka6mNnf6oQVBXVuGISgSau00z0,13581
-apprise/plugins/NotifyKavenegar.py,sha256=F5xTUdebM1lK6yGFbZJQB9Zgw2LTI0angeA-3Nu-89w,12620
-apprise/plugins/NotifyKumulos.py,sha256=eCEW2ZverZqETOLHVWMC4E8Ll6rEhhEWOSD73RD80SM,8214
-apprise/plugins/NotifyLametric.py,sha256=h8vZoX-Ll5NBZRprBlxTO2H9w0lOiMxglGvUgJtK4_8,37534
-apprise/plugins/NotifyLine.py,sha256=OVI0ozMJcq_-dI8dodVX52dzUzgENlAbOik-Kw4l-rI,10676
-apprise/plugins/NotifyLunaSea.py,sha256=woN8XdkwAjhgxAXp7Zj4XsWLybNL80l4W3Dx5BvobZg,14459
-apprise/plugins/NotifyMQTT.py,sha256=cnuG4f3bYYNPhEj9qDX8SLmnxLVT9G1b8J5w6-mQGKY,19545
-apprise/plugins/NotifyMSG91.py,sha256=P7JPyT1xmucnaEeCZPf_6aJfe1gS_STYYwEM7hJ7QBw,12677
-apprise/plugins/NotifyMSTeams.py,sha256=dFH575hoLL3zRddbBKfozlYjxvPJGbj3BKvfJSIkvD0,22976
-apprise/plugins/NotifyMacOSX.py,sha256=y2fGpSZXomFiNwKbWImrXQUMVM4JR4uPCnsWpnxQrFA,8271
-apprise/plugins/NotifyMailgun.py,sha256=FNS_QLOQWMo62yVO-mMZkpiXudUtSdbHOjfSrLC4oIo,25409
-apprise/plugins/NotifyMastodon.py,sha256=2ovjQIOOITHH8lOinC8QCFCJN2QA8foIM2pjdknbblc,35277
-apprise/plugins/NotifyMatrix.py,sha256=I8kdaZUZS-drew0JExBbChQVe7Ib4EwAjQd0xE30XT0,50049
-apprise/plugins/NotifyMattermost.py,sha256=JgEc-wC-43FBMItezDJ62zv1Nc9ROFjDiwD_8bt8rgM,12722
-apprise/plugins/NotifyMessageBird.py,sha256=EUPwhs1PHiPZpluIrLiNKQMUPcdlKnx1sdnllCtN_Ns,12248
-apprise/plugins/NotifyMisskey.py,sha256=zYZkBKv0p3jJpm_HLDBugUgKeGb0qpLoPqy0ffwwxVg,9600
-apprise/plugins/NotifyNextcloud.py,sha256=M3EyvUzBMHbTKU3gxW_7fPA6vmQUF5x8GTMZQ78sWCA,12759
-apprise/plugins/NotifyNextcloudTalk.py,sha256=dLl_g7Knq5PVcadbzDuQsxbGHTZlC4r-pQC8wzYnmAo,11011
-apprise/plugins/NotifyNotica.py,sha256=yHmk8HiNFjzoI4Gewo_nBRrx9liEmhT95k1d10wqhYg,12990
-apprise/plugins/NotifyNotifiarr.py,sha256=ADwLJO9eenfLkNa09tXMGSBTM4c3zTY0SEePvyB8WYA,15857
-apprise/plugins/NotifyNotifico.py,sha256=Qe9jMN_M3GL4XlYIWkAf-w_Hf65g9Hde4bVuytGhUW4,12035
-apprise/plugins/NotifyNtfy.py,sha256=AtJt2zH35mMQTwRDxKia93NPy6-4rtixplP53zIYV2M,27979
-apprise/plugins/NotifyOffice365.py,sha256=8TxsVsdbUghmNj0kceMlmoZzTOKQTgn3priI8JuRuHE,25190
-apprise/plugins/NotifyOneSignal.py,sha256=gsw7ckW7xLiJDRUb7eJHNe_4bvdBXmt6_YsB1u_ghjw,18153
-apprise/plugins/NotifyOpsgenie.py,sha256=zJWpknjoHq35Iv9w88ucR62odaeIN3nrGFPtYnhDdjA,20515
-apprise/plugins/NotifyPagerDuty.py,sha256=lu6oNdygrs6UezYm6xgiQxQDeDz8EVUtfP-xsArRvyw,17874
-apprise/plugins/NotifyPagerTree.py,sha256=mPl6ejdelNlWUWGVs46kZT0VV4uFZoeCdcv4VJ_f_XQ,13849
-apprise/plugins/NotifyParsePlatform.py,sha256=6oFOTpu-HMhesaYXRBvu5oaESYlFrKBNYTHE-ItCBRk,10291
-apprise/plugins/NotifyPopcornNotify.py,sha256=kRstzG0tWBdxSRfn2RN2J7FhvIj2qYWlwUyLxxZCbPc,10587
-apprise/plugins/NotifyProwl.py,sha256=EGOdmiZq8CFbjxTtWWKLQEdYiSvr4czZfE_8aCMEokw,9782
-apprise/plugins/NotifyPushBullet.py,sha256=JVd2GQH-DWmPaKjuGBpsE6DXNCcZEUDH7tA5zbM1qEU,15372
-apprise/plugins/NotifyPushDeer.py,sha256=cG1UFG06PfzbmI1RxtrMqmfaHK_Ojk_W-QMEdtkEuUI,6922
-apprise/plugins/NotifyPushMe.py,sha256=ioRzeXbd2X5miTd3h3m7AwCqkIIfbXNm4PjYk0OOXZ0,7134
-apprise/plugins/NotifyPushSafer.py,sha256=hIcYHwUZapmC-VDvaO_UkDY9RSPTxHgF7m2FL-6JBZw,26756
-apprise/plugins/NotifyPushed.py,sha256=NqLMXD9gvihXLfLUtCcMfz5oUAhPM7sKXECqKgD0v-U,12270
-apprise/plugins/NotifyPushjet.py,sha256=8qWpIqM4dKWjO-BjOrRJXZYtvtJBt_mikdBWRxfibnE,8952
-apprise/plugins/NotifyPushover.py,sha256=MJDquV4zl1cNrGZOC55hLlt6lOb6625WeUcgS5ceCbk,21213
-apprise/plugins/NotifyPushy.py,sha256=mmWcnu905Fvc8ihYXvZ7lVYErGZH5Q-GbBNS20v5r48,12496
-apprise/plugins/NotifyRSyslog.py,sha256=W42LT90X65-pNoU7KdhdX1PBcmsz9RyV376CDa_H3CI,11982
-apprise/plugins/NotifyReddit.py,sha256=E78OSyDQfUalBEcg71sdMsNBOwdj7cVBnELrhrZEAXY,25785
-apprise/plugins/NotifyRevolt.py,sha256=DRA9Xylwl6leVjVFuJcP4L1cG49CIBtnQdxh4BKnAZ4,14500
-apprise/plugins/NotifyRocketChat.py,sha256=Cb_nasX0-G3FoPMYvNk55RJ-tHuXUCTLUn2wTSi4IcI,25738
-apprise/plugins/NotifyRyver.py,sha256=yhHPMLGeJtcHwBKSPPk0OBfp59DgTvXio1R59JhrJu4,11823
-apprise/plugins/NotifySES.py,sha256=wtRmpAZkS5mQma6sdiaPT6U1xcgoj77CB9mNFvSEAw8,33545
-apprise/plugins/NotifySMSEagle.py,sha256=voFNqOewD9OC1eRctD0YdUB_ZSWsb06rjUwBfCcxPYA,24161
-apprise/plugins/NotifySMSManager.py,sha256=DbVc35qLfYkNL7eq43_rPD6k-PELL9apf3S09S6qvDA,14125
-apprise/plugins/NotifySMTP2Go.py,sha256=foQ7aMMmNc5Oree8YwrxZJgMnF6yVMFAfqShm_nLbx0,19711
-apprise/plugins/NotifySNS.py,sha256=ZEBWf0ZJ9w_ftzUikKEvQWJ2fkxrUbrLhPmTRD2DvRQ,24159
-apprise/plugins/NotifySendGrid.py,sha256=IBdYmZcthkvGCz1N_Fs8vDnImtHug6LpuKv1mWT_Cdo,16213
-apprise/plugins/NotifyServerChan.py,sha256=WsrClO9f0xi-KpnLZGTUHV7PxeU3l1D875gvMaZRG_M,5779
-apprise/plugins/NotifySignalAPI.py,sha256=OwJ7qjJ-ZJyS8GS-dBWAtgizHMnGegg76GuwFobyWkw,16733
-apprise/plugins/NotifySimplePush.py,sha256=dUC6O8IGuUIAz5z6_H7A7jdv5Gj1plytNm5QyKnHAYg,10876
-apprise/plugins/NotifySinch.py,sha256=tmHLwQa9lWHEI3EcRfigl4i7JU46A6gKAi_GbY0PrX4,16813
-apprise/plugins/NotifySlack.py,sha256=3VdjruU5FPr3jT_s3axwRJKMcBYXP0lvJnyuKedIlcE,42521
-apprise/plugins/NotifySparkPost.py,sha256=6dRTwnYU50Lvmp6AlwCyePe0TMbVEXaSwNeGkg__EYo,27878
-apprise/plugins/NotifyStreamlabs.py,sha256=lx3N8T2ufUWFYIZ-kU_rOv50YyGWBqLSCKk7xim2_Io,16023
-apprise/plugins/NotifySynology.py,sha256=_jTqfgWeOuSi_I8geMOraHBVFtDkvm9mempzymrmeAo,11105
-apprise/plugins/NotifySyslog.py,sha256=J9Kain2bb-PDNiG5Ydb0q678cYjNE_NjZFqMG9oEXM0,10617
-apprise/plugins/NotifyTechulusPush.py,sha256=m43_Qj1scPcgCRX5Dr2Ul7nxMbaiVxNzm_HRuNmfgoA,7253
-apprise/plugins/NotifyTelegram.py,sha256=XE7PC9LRzcrfE2bpLKyor5lO_7B9LS4Xw1UlUmA4a2A,37187
-apprise/plugins/NotifyThreema.py,sha256=C_C3j0fJWgeF2uB7ceJFXOdC6Lt0TFBInFMs5Xlg04M,11885
-apprise/plugins/NotifyTwilio.py,sha256=WCo8eTI9OF1rtg3ueHHRDXt4Lp45eZ6h3IdTZVf5HM8,15976
-apprise/plugins/NotifyTwist.py,sha256=nZA73CYVe-p0tkVMy5q3vFRyflLM4yjUo9LECvkUwgc,28841
-apprise/plugins/NotifyTwitter.py,sha256=qML0jlBkLZMHrkKRxBpVUnBwAz8MWGYyI3cvwi-hrgM,30152
-apprise/plugins/NotifyVoipms.py,sha256=msy_D32YhP8OP4_Mj_L3OYd4iablqQETN-DvilGZeVQ,12552
-apprise/plugins/NotifyVonage.py,sha256=xmzZgobFaGA_whpQ5fDuG2poUrK9W4T77yP7dusHcSo,13431
-apprise/plugins/NotifyWeComBot.py,sha256=5lkhXDgyJ1edzknemKsO1sJVv7miR9F_7xI40Ag7ICI,8789
-apprise/plugins/NotifyWebexTeams.py,sha256=gbbRlHiPuOvUIZexE5m2QNd1dN_5_x0OdT5m6NSrcso,9164
-apprise/plugins/NotifyWhatsApp.py,sha256=PtzW0ue3d2wZ8Pva_LG29jUcpRRP03TFxO5SME_8Juo,19924
-apprise/plugins/NotifyWindows.py,sha256=QgWJfJF8AE6RWr-L81YYVZNWrnImK9Qr3B991HWanqU,8563
-apprise/plugins/NotifyXBMC.py,sha256=5hDuOTP3Kwtp4NEMaokNjWyEKEkQcN_fSx-cUPJvhaU,12096
-apprise/plugins/NotifyXML.py,sha256=WJnmdvXseuTRgioVMRqpR8a09cDfTpPTfuFlTnT_TfI,16973
-apprise/plugins/NotifyZulip.py,sha256=M8cSL7nZvtBYyTX6045g34tyn2vyybltgD1CoI4Xa7A,13968
-apprise/plugins/__init__.py,sha256=jTfLmW47kZC_Wf5eFFta2NoD2J-7_E7JaPrrVMIECkU,18725
-apprise/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
-apprise/utils.py,sha256=SjRU2tb1UsVnTCTXPUyXVz3WpRbDWwAHH-d3ll38EHY,53185
diff --git a/libs/apprise-1.7.6.dist-info/REQUESTED b/libs/apprise-1.7.6.dist-info/REQUESTED
deleted file mode 100644
index e69de29bb..000000000
--- a/libs/apprise-1.7.6.dist-info/REQUESTED
+++ /dev/null
diff --git a/libs/apprise-1.7.6.dist-info/INSTALLER b/libs/apprise-1.8.0.dist-info/INSTALLER
index a1b589e38..a1b589e38 100644
--- a/libs/apprise-1.7.6.dist-info/INSTALLER
+++ b/libs/apprise-1.8.0.dist-info/INSTALLER
diff --git a/libs/apprise-1.7.6.dist-info/LICENSE b/libs/apprise-1.8.0.dist-info/LICENSE
index f9154fefe..f9154fefe 100644
--- a/libs/apprise-1.7.6.dist-info/LICENSE
+++ b/libs/apprise-1.8.0.dist-info/LICENSE
diff --git a/libs/apprise-1.7.6.dist-info/METADATA b/libs/apprise-1.8.0.dist-info/METADATA
index ac7cb9aac..c01ef211a 100644
--- a/libs/apprise-1.7.6.dist-info/METADATA
+++ b/libs/apprise-1.8.0.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: apprise
-Version: 1.7.6
+Version: 1.8.0
Summary: Push Notifications that work with just about every platform!
Home-page: https://github.com/caronc/apprise
Author: Chris Caron
diff --git a/libs/apprise-1.8.0.dist-info/RECORD b/libs/apprise-1.8.0.dist-info/RECORD
new file mode 100644
index 000000000..bcfa733bc
--- /dev/null
+++ b/libs/apprise-1.8.0.dist-info/RECORD
@@ -0,0 +1,183 @@
+../../bin/apprise,sha256=ZJ-e4qqxNLtdW_DAvpuPPX5iROIiQd8I6nvg7vtAv-g,233
+apprise-1.8.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+apprise-1.8.0.dist-info/LICENSE,sha256=gt7qKBxRhVcdmXCYVtrWP6DtYjD0DzONet600dkU994,1343
+apprise-1.8.0.dist-info/METADATA,sha256=if2D6aZrIVQZAe9BKWyqKoKH89ZGnYOTvXGRfqcSf_g,44823
+apprise-1.8.0.dist-info/RECORD,,
+apprise-1.8.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+apprise-1.8.0.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
+apprise-1.8.0.dist-info/entry_points.txt,sha256=71YypBuNdjAKiaLsiMG40HEfLHxkU4Mi7o_S0s0d8wI,45
+apprise-1.8.0.dist-info/top_level.txt,sha256=JrCRn-_rXw5LMKXkIgMSE4E0t1Ks9TYrBH54Pflwjkk,8
+apprise/__init__.py,sha256=nBy2lkwvLxW1QTMEagOZZnM5AQWLM6CRUYt-Gr03X94,3388
+apprise/apprise.py,sha256=JWSqg5pYJOydubQyaIjR9gIPhb2okcrGe2mQ_NhPNS0,32837
+apprise/apprise.pyi,sha256=_4TBKvT-QVj3s6PuTh3YX-BbQMeJTdBGdVpubLMY4_k,2203
+apprise/apprise_attachment.py,sha256=eYVnNWTWQzlzKPDOgMCzGvVtXXDL6noMwtRKwwvyL8Q,12528
+apprise/apprise_attachment.pyi,sha256=R9-0dVqWpeaFrVpcREwPhGy3qHWztG5jEjYIOsbE5dM,1145
+apprise/apprise_config.py,sha256=qlNtd-OkldrY9rE9vT67fVPHINx9fkkbwQinhbBjQ_I,16896
+apprise/apprise_config.pyi,sha256=_mUlCnncqAq8sL01WxQTgZjnb2ic9kZXvtqZmVl-fc8,1568
+apprise/asset.py,sha256=ICXIjCi12Xq8E-WIR4mrVC7KcpPRiJDlKG8cHqoCll0,11643
+apprise/asset.pyi,sha256=NYLXXYbScgRkspP27XGpRRM_uliPu1OCdWdZBPPvLng,979
+apprise/assets/NotifyXML-1.0.xsd,sha256=292qQ_IUl5EWDhPyzm9UTT0C2rVvJkyGar8jiODkJs8,986
+apprise/assets/NotifyXML-1.1.xsd,sha256=bjR3CGG4AEXoJjYkGCbDttKHSkPP1FlIWO02E7G59g4,1758
+apprise/assets/themes/default/apprise-failure-128x128.ico,sha256=Mt0ptfHJaN3Wsv5UCNDn9_3lyEDHxVDv1JdaDEI_xCA,67646
+apprise/assets/themes/default/apprise-failure-128x128.png,sha256=66ps8TDPxVH3g9PlObJqF-0x952CjnqQyN3zvpRcOT8,16135
+apprise/assets/themes/default/apprise-failure-256x256.png,sha256=bQBsKKCsKfR9EqgYOZrcVcVa5y8qG58PN2mEqO5eNRI,41931
+apprise/assets/themes/default/apprise-failure-32x32.png,sha256=vH0pZffIDCvkejpr3fJHGXW__8Yc3R_p0bacX6t6l18,2437
+apprise/assets/themes/default/apprise-failure-72x72.png,sha256=EP5A8DHRDr9srgupFSwOoyQ308bNJ8aL192J_L4K-ec,7600
+apprise/assets/themes/default/apprise-info-128x128.ico,sha256=F5_CirmXueRCRI5Z_Crf6TS6jVIXTJlRD83zw1oJ66g,67646
+apprise/assets/themes/default/apprise-info-128x128.png,sha256=bBqRZAgQey-gkmJrnFhPbzjILSrljE59mRkgj3raMQo,16671
+apprise/assets/themes/default/apprise-info-256x256.png,sha256=B5r_O4d9MHCmSWZwfbqQgZSp-ZetTdiBSwKcMTF1aFA,43331
+apprise/assets/themes/default/apprise-info-32x32.png,sha256=lt3NZ95TzkiCNVNlurrB2fE2nriMa1wftl7nrNXmb6c,2485
+apprise/assets/themes/default/apprise-info-72x72.png,sha256=kDnsZpqNUZGqs9t1ECUup7FOfXUIL-rupnQCYJp9So4,7875
+apprise/assets/themes/default/apprise-logo.png,sha256=85ttALudKkLmiqilJT7mUQLUXRFmM1AK89rnwLm313s,160907
+apprise/assets/themes/default/apprise-success-128x128.ico,sha256=uCopPwdQjxgfohKazHaDzYs9y4oiaOpL048PYC6WRlg,67646
+apprise/assets/themes/default/apprise-success-128x128.png,sha256=nvDuU_QqhGlw6cMtdj7Mv-gPgqCEx-0DaaXn1KBLVYg,17446
+apprise/assets/themes/default/apprise-success-256x256.png,sha256=vXfKuxY3n0eeXHKdb9hTxICxOEn7HjAQ4IZpX0HSLzc,48729
+apprise/assets/themes/default/apprise-success-32x32.png,sha256=Jg9pFJh3YPI-LiPBebyJ7Z4Vt7BRecaE8AsRjQVIkME,2471
+apprise/assets/themes/default/apprise-success-72x72.png,sha256=FQbgvIhqKOhEK0yvrhaSpai0R7hrkTt_-GaC2KUgCCk,7858
+apprise/assets/themes/default/apprise-warning-128x128.ico,sha256=6XaQPOx0oWK_xbhr4Yhb7qNazCWwSs9lk2SYR2MHTrQ,67646
+apprise/assets/themes/default/apprise-warning-128x128.png,sha256=pf5c4Ph7jWH7gf39dJoieSj8TzAsY3TXI-sGISGVIW4,16784
+apprise/assets/themes/default/apprise-warning-256x256.png,sha256=SY-xlaiXaj420iEYKC2_fJxU-yj2SuaQg6xfPNi83bw,43708
+apprise/assets/themes/default/apprise-warning-32x32.png,sha256=97R2ywNvcwczhBoWEIgajVtWjgT8fLs4FCCz4wu0dwc,2472
+apprise/assets/themes/default/apprise-warning-72x72.png,sha256=L8moEInkO_OLxoOcuvN7rmrGZo64iJeH20o-24MQghE,7913
+apprise/attachment/__init__.py,sha256=9jSiGEbLllS-0Vbpgxo4MCpZfIJ-saezWWgQ1PofZ9I,1678
+apprise/attachment/base.py,sha256=phcM6C281j2eoEhtoH5FY0m5s_JvWiEm1AK9z9gyi0w,13692
+apprise/attachment/base.pyi,sha256=w0XG_QKauiMLJ7eQ4S57IiLIURZHm_Snw7l6-ih9GP8,961
+apprise/attachment/file.py,sha256=d9gpsunNIot-6h6w-WQmwWgFiCv7YLqk42zJr4LLqE4,4752
+apprise/attachment/http.py,sha256=C0L9zKmHi60wyzEZN-OJCF7LVoY-MMHYMqhXspFlLdU,13748
+apprise/cli.py,sha256=h-pWSQPqQficH6J-OEp3MTGydWyt6vMYnDZvHCeAt4Y,20697
+apprise/common.py,sha256=I6wfrndggCL7l7KAl7Cm4uwAX9n0l3SN4-BVvTE0L0M,5593
+apprise/common.pyi,sha256=luF3QRiClDCk8Z23rI6FCGYsVmodOt_JYfYyzGogdNM,447
+apprise/config/__init__.py,sha256=oDxdoqG2NEYu_bbpLsLaM3L9WKY3gNn5gjIwb2h3LU4,1679
+apprise/config/base.py,sha256=iWgrBk4-wm_SHtNbe7dCQOYnbkI3oKWP_b60qwjGSoU,53173
+apprise/config/base.pyi,sha256=cngfobwH6v2vxYbQrObDi5Z-t5wcquWF-wR0kBCr3Eg,54
+apprise/config/file.py,sha256=MB_H2X5lJZS-XAOahkMb3IsD2rgVebFjiEF76goITEg,6125
+apprise/config/http.py,sha256=CjQtv_OQJykMxD4ssiwbFI3P8CeQiPdYV_ZIiL_XqMw,9440
+apprise/config/memory.py,sha256=8VICU-WLux8KnW6i9sf9fgmns90J-MfVYI3pvTiyTno,2816
+apprise/conversion.py,sha256=fSn-pTE6-vNt9qVQCKib_NTMhZnCH88FoMt14x6co1M,6273
+apprise/decorators/__init__.py,sha256=e_PDAm0kQNzwDPx-NJZLPfLMd2VAABvNZtxx_iDviRM,1487
+apprise/decorators/base.py,sha256=KnRzhrTOxQxwm4KuJxfCfaYfX0MrFbqWTvXY1XuiNck,8019
+apprise/decorators/notify.py,sha256=FzIa7m-G5KnVVa__rjyn990zt2lqE8sdHW-XY79lbAU,5097
+apprise/emojis.py,sha256=ONF0t8dY9f2XlEkLUG79-ybKVAj2GqbPj2-Be97vAoI,87738
+apprise/i18n/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+apprise/i18n/en/LC_MESSAGES/apprise.mo,sha256=w-KW6RXYYMr14raaIvJzbop8tXU4qrsz50zm8rcCo3U,3959
+apprise/locale.py,sha256=4uSr4Nj_rz6ISMMAfRVRk58wZVLKOofJgk2x0_E8NkQ,8994
+apprise/logger.py,sha256=131hqhed8cUj9x_mfXDEvwA2YbcYDFAYiWVK1HgxRVY,6921
+apprise/manager.py,sha256=_LiMG1Upk6h6GcxOw3GjsPtVT8ZJLhLlQkC_xL_dm6A,27218
+apprise/manager_attachment.py,sha256=EkrcKtKjbxTXXyDaKyiu4XSfDu9wKFSdJD7TOTpyOUc,2200
+apprise/manager_config.py,sha256=sCIOlBTH13bQ1cuhQVpUq2vyKWBArA8YRyPnXIB1iWQ,2205
+apprise/manager_plugins.py,sha256=Xbg5-xr-06zMIDoWviz-zKcbzusHj0iBBMchKPpUOkg,2211
+apprise/plugins/__init__.py,sha256=Hm-vt-Xtxir5mgOdehqlGLhIlc45LA31zjqV42uRnB8,18701
+apprise/plugins/apprise_api.py,sha256=D93eUOlEQ1xPZYdagnEtIxkSuzZ4b9XreuhntQW97F8,16638
+apprise/plugins/aprs.py,sha256=fyzhdsESVwsqHMbfjnlRuGuAqAz2Pk_-MrmiMihs8qY,25506
+apprise/plugins/bark.py,sha256=oSz7Nr7vxnXxqA5dRaO6ze2IljkgEQavUPs-MUUDSX4,15681
+apprise/plugins/base.py,sha256=720L5OyMMLqlM3UdYSNMpA3m0rCudzGP3HwKgu73Ons,30350
+apprise/plugins/base.pyi,sha256=aKlZXRYUgG8lz_ZgGkYYJ_GKhuf18youTmMU-FlG7z8,21
+apprise/plugins/boxcar.py,sha256=8ImhsSsOK9o3eiYp4dZ6fO6p6AeI-jOPWoFJ8qvRAxY,12850
+apprise/plugins/bulksms.py,sha256=XuP8X4dL1wWQU7TkLYWPWRAro7TymnF7PlF2ESe7o0o,15988
+apprise/plugins/bulkvs.py,sha256=sLpiKbHs63Yu0UjMc9erW1VSgLceuu5wvPie5iyl03k,13273
+apprise/plugins/burstsms.py,sha256=7YmuhElVvT-0FIxMFBILHjo6Fir0J4qHTuqj8KfWBaI,15533
+apprise/plugins/chantify.py,sha256=hOvrmhH051Us28_kv0mKkuaJ2BN_8pSsslF8eMCgp-Q,6660
+apprise/plugins/clicksend.py,sha256=kKUJgk9FcTcfXqcIV57uMz0VxBtSQqkpxocRkgn0-3Q,11408
+apprise/plugins/custom_form.py,sha256=fMYwSQyEa_u8IEw5QSylDn-y32FnmymkL5ng-tGxDoc,17888
+apprise/plugins/custom_json.py,sha256=UCXaegE1nD8UrKlFrSKQbxfbcrX1BHUvZwBZY6a_aJc,13834
+apprise/plugins/custom_xml.py,sha256=lrPCRngPz8_oV2A8ZfiIY56BRQc1iv0PN0--2LOlxpA,16956
+apprise/plugins/d7networks.py,sha256=2o_wDgoak_S0sUJJa7HPtu0PPKLVmIOrq1rV9llOnHY,15030
+apprise/plugins/dapnet.py,sha256=fclGE69ggMejgpyvBpJqTwFNF3g2w7qpFySOMcc9vi0,13607
+apprise/plugins/dbus.py,sha256=lvHLmOkJYJAr4TjrigdIgP5bBlQXHrNCDR0k80LNsks,14366
+apprise/plugins/dingtalk.py,sha256=1twAGYUZzjhQepg2zhaR7u8QJuWvM5WymkbPQSUKBck,11992
+apprise/plugins/discord.py,sha256=kdR09bKU80-AosBIrTkMSxoOkAUHMXKwSr1P3H-M_f4,26053
+apprise/plugins/email.py,sha256=pVVWhEpT9Zi7qyUvpI2UxbjxkXYe6FoJj8E0NTw4P98,39912
+apprise/plugins/emby.py,sha256=HWYxlgHE99yAPKii4IE1XQQ-B1HViklWOkefjmq6SW4,24022
+apprise/plugins/enigma2.py,sha256=40Uo0m1JtLUcwRnfqKqdX_8ZR1-SvPfJ5470uijgdfw,11481
+apprise/plugins/fcm/__init__.py,sha256=eTjX-ahPHrPddX0v_Ix77qEr2G4NQ7reClCMzX3Nxwk,21657
+apprise/plugins/fcm/color.py,sha256=rQxVRL_CcRlgnNTQXkjB1Bfs0Xc933zOB1tURSdhi7Y,4585
+apprise/plugins/fcm/common.py,sha256=978uBUoNdtopCtylipGiKQdsQ8FTONxkFBp7uJMZHc8,1718
+apprise/plugins/fcm/oauth.py,sha256=Vvbd0-rd5BPIjAneG3rILU153JIzfSZ0kaDov6hm96M,11197
+apprise/plugins/fcm/priority.py,sha256=0WuRW1y1HVnybgjlTeCZPHzt7j8SwWnC7faNcjioAOc,8163
+apprise/plugins/feishu.py,sha256=buGBg1YlcwHjwUGzUfju4cdYbmEOFl3EHU_NzEBqtlM,7253
+apprise/plugins/flock.py,sha256=_bhH-ub0LbuU7k2p1ZwUPZ-TbC3kpD48GKNtLebUpoM,12735
+apprise/plugins/freemobile.py,sha256=NZf553UWkl1FVEVyWQKJN3ZD6opYSv3I-L6DRaKbiCw,6679
+apprise/plugins/gnome.py,sha256=UYtaiMKxILhTdsxe4aeLaJwjV6Af-8VhjVR3W3CyPPk,9046
+apprise/plugins/google_chat.py,sha256=f7F4gPxwwkmhDBlXMHzYoHRhPX3w8tyD7OimGBjmNxg,12609
+apprise/plugins/gotify.py,sha256=ISzmuQ4-Wd46OlaxGSAZBbWDTq9mHBUYO0R-7tAX_zc,10538
+apprise/plugins/growl.py,sha256=mlpN1QXGlEf2BA3BORnvkyT0oiTsWBev2y5gzpOm9r0,14006
+apprise/plugins/guilded.py,sha256=lhE6gK7laQNYEubD9lBGRemFK-IHis_u2tNekbUoGgM,3707
+apprise/plugins/home_assistant.py,sha256=Wstut0QaQL2dE66kH8MOqMANayhvGOq7CuxVz9O-T60,10722
+apprise/plugins/httpsms.py,sha256=2TtIlAFa4cjXwpMyrjfieCFHgaZl4H_YT6IoPIMDOcg,11123
+apprise/plugins/ifttt.py,sha256=ZHtu7pW9I0aHVEC4DshKi6XZCwqQ0A_XGLyFJujwdKY,13412
+apprise/plugins/join.py,sha256=mRop7thH24kQmvIEvtnh0HT0VyBrUXm2sS-P69c0iFE,13568
+apprise/plugins/kavenegar.py,sha256=1vdms7QBaLcTiLXeQGfprMU5rw9wgImRLtALIb78-ro,12607
+apprise/plugins/kumulos.py,sha256=6M_way1Qi5bELm8Csay86AVtVhzmRyv5hfxGrFvyzN4,8201
+apprise/plugins/lametric.py,sha256=JR0XjdxkEphT4VKvKfElNxpAoOpXZCb-40b2SJQP9XA,37521
+apprise/plugins/line.py,sha256=-xONdu4LFkS3sGgZeEGiPGbBIvBEd20lCbyxKLhQwAg,10659
+apprise/plugins/lunasea.py,sha256=WxJ-RIbFDiS1-5HjCs8XVdNv7nt2EHimsXGCDaK0sC0,14442
+apprise/plugins/macosx.py,sha256=4vIXz1xlsq_xlEyeu_rEvzJQZYcWq7pVmSn5VjF_dCY,8258
+apprise/plugins/mailgun.py,sha256=ad3jzdrbdgwWmOAAu4e_inLEAo-cii4z0OnIJQXoSIA,25396
+apprise/plugins/mastodon.py,sha256=X8CBxnuWORLo9JEOLCJcSafFNVrcEd778R38doyNWUo,35254
+apprise/plugins/matrix.py,sha256=zJPTLFqRT6mofXFVi421_poF0Qm7KaWSgNXTBKq3YoI,50032
+apprise/plugins/mattermost.py,sha256=KfHfqt3LO4XuMsY-qNV-i_OAAamF-35RgjHzxuq2deM,12709
+apprise/plugins/messagebird.py,sha256=3TJ_31Vc1liwQKKKwEiO_rP5e4jP4QkcU_wHyRGtf5Q,12235
+apprise/plugins/misskey.py,sha256=E5UrDrVryb7zV2D_qJCPsCyvpynF4-22JqRVco6PcgM,9587
+apprise/plugins/mqtt.py,sha256=3LcRhT44o2QoSH5rJs23xRbi2vob-po5FAPnnEU_cgs,19528
+apprise/plugins/msg91.py,sha256=V3PwdCS5r-LbVHNNTFZGUHt7GPwQOHnQC0mx8G90wGQ,12664
+apprise/plugins/msteams.py,sha256=4maXBIQFEVfH-IVzZW6t4jirsozmKwF4ySPP5h20cTQ,22964
+apprise/plugins/nextcloud.py,sha256=iYmKGH-xZ4Kj3HvXA_krQody7LRqJKzMRu39Ivk1ve4,12742
+apprise/plugins/nextcloudtalk.py,sha256=TTK8qhy0VPjG0N1yFUBJWTieV-1DqT9Jux9D5PRiYAE,10994
+apprise/plugins/notica.py,sha256=MzryA8x-dSt-oRk9g3dlTTrb1ul7mnbRNajbiwTx1Mc,12973
+apprise/plugins/notifiarr.py,sha256=ZI2mjXwKLWx7SXb6d3S-sk2JmCswJ23UTPj9jVNSN0U,15844
+apprise/plugins/notifico.py,sha256=IKkiXU8HdbRnEWzkQKPFo1g-ZnT8AIwFYer7jF2Yjac,12022
+apprise/plugins/ntfy.py,sha256=jOmPZETJByyNmYSzr-2F3k5jAXFVNldcd3wK-tQRpyE,27956
+apprise/plugins/office365.py,sha256=bCg53GDruS7A3_PQNCjiSERhfub_FHTOVCsRwjgbjXU,25173
+apprise/plugins/one_signal.py,sha256=0ljKuz6Wyn5K8Rxp3BT8aARzHWYff0q2TWA5f-ZLJSA,18140
+apprise/plugins/opsgenie.py,sha256=wWUREzEn8FDQmmVGhmTlN7kxsYlzNj1tK3wA5t8UbCA,20502
+apprise/plugins/pagerduty.py,sha256=1vQ2rfbDUKnM0XdkVMrvTnWIPK7lTxrm-Nslt3LW5Ng,17857
+apprise/plugins/pagertree.py,sha256=uhZL2SxIJr0cguMGhJP_RIJxJZLd86uoAcMhHsBOKm8,13836
+apprise/plugins/parseplatform.py,sha256=G99l6AnHZtaw11y7oBBVVvgdg7lSM8gWFm4tAWhJ8d4,10278
+apprise/plugins/popcorn_notify.py,sha256=ppOqxPrZrOPa-TFicO3Lo_jgwOOPCNEXMgmEo10DAZA,10574
+apprise/plugins/prowl.py,sha256=fYsv6s8xA6OC0yFajgLf3jgL6IwiaOTZaJKisW4eNyw,9769
+apprise/plugins/pushbullet.py,sha256=g-7_Y0N4x-a8YE2gqDqW5OIi74YY7rja_jQ8WVKc4FI,15353
+apprise/plugins/pushdeer.py,sha256=8StOcyK1jlx3pc_CnmFUSqdjfvuv0qa6bf--FHP2_KE,6909
+apprise/plugins/pushed.py,sha256=pm3T7JGExjYeqVWQVN8J8JHkn1XBMfix_sdmr1ItXY8,12253
+apprise/plugins/pushjet.py,sha256=Xk0hzx6l5bNHtGgL0M_znRY5JRPUJf4_PhleCyFbe0I,8935
+apprise/plugins/pushme.py,sha256=EswSmup0uL3QmANeJPDhDYyyeBwSrTnqdjMlfvWFnFA,7121
+apprise/plugins/pushover.py,sha256=I6u9C1SVAEVnsLUySFq5UyHi4cQQtew5za4r86aTK10,21194
+apprise/plugins/pushsafer.py,sha256=aGQ1ibggAWGpcBwpD4oQQYMUcKVcV_xsTlc5_wdjssY,26743
+apprise/plugins/pushy.py,sha256=Ai1tKhcus5IuwvhQgtaj--RMPahgtpleWrBbr_ZQJfM,12483
+apprise/plugins/reddit.py,sha256=z54HpGeJxkyS_LH38nqPa6rqW8mrJqSEGTNOh4Cf-78,25768
+apprise/plugins/revolt.py,sha256=kVrJvTb7mBFXFZd9GIVrX2jVIvaUc5D5via48nOXNSA,14487
+apprise/plugins/rocketchat.py,sha256=oSaFzQ7XjOzjhPIPhdS7r_LGa1IJXV6VK_3xNH9Gq9M,25721
+apprise/plugins/rsyslog.py,sha256=9NTg4sYNbbAzw_MnN51YKxVQpb2o6WZUMyKpRtgoupM,11969
+apprise/plugins/ryver.py,sha256=OM_AG-oiRnNYIua-70Wp8lUpZzIkZ7erIiDE6Fd4Q6s,11810
+apprise/plugins/sendgrid.py,sha256=PGSdbkhERhFSZZN2j7km6mdojdlo7sFxs28lmOeDpgQ,16200
+apprise/plugins/serverchan.py,sha256=fcnuindQTPaKZ5gbS-nAxvL31YqkEF-vi4w8g_h7dKc,5766
+apprise/plugins/ses.py,sha256=CF17VZOEZybwdgqqu00qSoombTP5z0M8P_XxPmyc2f4,33528
+apprise/plugins/signal_api.py,sha256=PeCB_1YJc4lZwDdArTgzHP-Vhe9iwCNIYe4WVW_HgUo,16716
+apprise/plugins/simplepush.py,sha256=bL0WiRUCp39ST9X_0FNAFJJ1BFtd1t5OD_JTRneUGFY,10859
+apprise/plugins/sinch.py,sha256=0-z_cNIWMJu4kdTca-6B3raAIRV-PG1E7fUtbxUDECo,16796
+apprise/plugins/slack.py,sha256=tLbJsr97Ddp8bq1ozSEp1ssLsh913uC0Y24Xm3TN4Bo,42508
+apprise/plugins/smseagle.py,sha256=WbULwfwnUEkPw_z-2cVp2TzrupS7fkPfcQgq779nG8k,24144
+apprise/plugins/smsmanager.py,sha256=aSSZcvpWjKEdDg-XPyD-9fTkaQ0FodvuuO7Hqg7N6Tk,14112
+apprise/plugins/smtp2go.py,sha256=D3C4rWGCJ-oqaZH8JgoMEV_3BYHCCHMd6M7cG0piIvA,19698
+apprise/plugins/sns.py,sha256=dA58nElGwKKnVAr--rh1deIa9BNPbZElK6cb5G1o3g8,24142
+apprise/plugins/sparkpost.py,sha256=ZR4866e1DefqOuuu3z_vBhS8C5YX0sj1G9WEhdWFMEk,27865
+apprise/plugins/streamlabs.py,sha256=Pyrz2xY2rDo8rnTgu4L5t2u1EPrZWVcIP37k8pE2SaE,16010
+apprise/plugins/synology.py,sha256=-g-Cesx8g-nG10shjUAnYtyLpMoGfUNDcTIGfi2UXDE,11088
+apprise/plugins/syslog.py,sha256=sNKh0iSNc3ARuMIO13uwRirMHzW2VxxTRwyZ-0UYL60,10604
+apprise/plugins/techuluspush.py,sha256=HV1m72pRsC3IfVN66zWK9joslDJsKRKYD6_uRfqjnHk,7240
+apprise/plugins/telegram.py,sha256=zsmCUJU-5INyJ-RDUYIHUEXpwnwShOISWc4Xf7Epanw,37168
+apprise/plugins/threema.py,sha256=aWvFfN5Ve0DZCDX7qJVlY8INT_C-AWh-jnYnPTd7Ufs,11868
+apprise/plugins/twilio.py,sha256=0iYa2ug_2_Rbz4N_lGVihtSSxxFaK2f7Sdr9oK_Wg18,15959
+apprise/plugins/twist.py,sha256=hLqabH_STcZiAwRCgFHO7n5qYx7eZgoDw4xT5Zl_y6Q,28824
+apprise/plugins/twitter.py,sha256=ZTHLuZYowQ6qSw9ujsRB5oNp9F9PyutU-iAKAUOkmT8,30129
+apprise/plugins/voipms.py,sha256=NVbrsY7fJG0MbF6eId--0wo9cRC2kehhg8L0sASQs2w,12539
+apprise/plugins/vonage.py,sha256=PRFMdjn0ARqOEhL8kXySz8pi9vsApl2fh9mZyLVySgo,13414
+apprise/plugins/webexteams.py,sha256=DErDmHhvnHfsAyp4L3mF6vSfq0WabL1lbbl-jDUKYTw,9151
+apprise/plugins/wecombot.py,sha256=o5CO0IyHN7wAXhf7es08QiPCmUl8shZCgN_nyJxycVA,8776
+apprise/plugins/whatsapp.py,sha256=9KObQEvUOtOclnudKhNj7qRrJ0uii7dhfxgwzuMHKxY,19911
+apprise/plugins/windows.py,sha256=88bDJQBnuuA0u7_xoTC-1Ppxt4tz39UMZseRY3EX_FE,8550
+apprise/plugins/xbmc.py,sha256=2ssX2AItDUy5FJFDY9r_JI4u7qc0CLGvG-hW0KtgWag,12079
+apprise/plugins/zulip.py,sha256=PJMB8RmV_ddP5waNAQ0Z29cpIut1WFY31DLFeg8-Nao,13955
+apprise/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+apprise/url.py,sha256=QEoqmWzapzXPwBXe85SdJaPWq7B4gcv4QCeJtndN4_E,29455
+apprise/url.pyi,sha256=WLaRREH7FzZ5x3-qkDkupojWGFC4uFwJ1EDt02lVs8c,520
+apprise/utils.py,sha256=Sy0pVslC8FDKh5RY8o6eVB-sPHFxBXFTdbhKSVf4UDM,53461
diff --git a/libs/apprise-1.7.4.dist-info/REQUESTED b/libs/apprise-1.8.0.dist-info/REQUESTED
index e69de29bb..e69de29bb 100644
--- a/libs/apprise-1.7.4.dist-info/REQUESTED
+++ b/libs/apprise-1.8.0.dist-info/REQUESTED
diff --git a/libs/apprise-1.7.6.dist-info/WHEEL b/libs/apprise-1.8.0.dist-info/WHEEL
index ba48cbcf9..ba48cbcf9 100644
--- a/libs/apprise-1.7.6.dist-info/WHEEL
+++ b/libs/apprise-1.8.0.dist-info/WHEEL
diff --git a/libs/apprise-1.7.6.dist-info/entry_points.txt b/libs/apprise-1.8.0.dist-info/entry_points.txt
index 7f20ac9a3..7f20ac9a3 100644
--- a/libs/apprise-1.7.6.dist-info/entry_points.txt
+++ b/libs/apprise-1.8.0.dist-info/entry_points.txt
diff --git a/libs/apprise-1.7.6.dist-info/top_level.txt b/libs/apprise-1.8.0.dist-info/top_level.txt
index 9f8c12a76..9f8c12a76 100644
--- a/libs/apprise-1.7.6.dist-info/top_level.txt
+++ b/libs/apprise-1.8.0.dist-info/top_level.txt
diff --git a/libs/apprise/Apprise.py b/libs/apprise/Apprise.py
index 9a3e8dfc7..05a2ee3cc 100644
--- a/libs/apprise/Apprise.py
+++ b/libs/apprise/Apprise.py
@@ -33,18 +33,18 @@ from itertools import chain
from . import common
from .conversion import convert_between
from .utils import is_exclusive_match
-from .NotificationManager import NotificationManager
+from .manager_plugins import NotificationManager
from .utils import parse_list
from .utils import parse_urls
from .utils import cwe312_url
from .emojis import apply_emojis
from .logger import logger
-from .AppriseAsset import AppriseAsset
-from .AppriseConfig import AppriseConfig
-from .AppriseAttachment import AppriseAttachment
-from .AppriseLocale import AppriseLocale
-from .config.ConfigBase import ConfigBase
-from .plugins.NotifyBase import NotifyBase
+from .asset import AppriseAsset
+from .apprise_config import AppriseConfig
+from .apprise_attachment import AppriseAttachment
+from .locale import AppriseLocale
+from .config.base import ConfigBase
+from .plugins.base import NotifyBase
from . import plugins
from . import __version__
diff --git a/libs/apprise/__init__.py b/libs/apprise/__init__.py
index 81373c75b..457528594 100644
--- a/libs/apprise/__init__.py
+++ b/libs/apprise/__init__.py
@@ -27,7 +27,7 @@
# POSSIBILITY OF SUCH DAMAGE.
__title__ = 'Apprise'
-__version__ = '1.7.6'
+__version__ = '1.8.0'
__author__ = 'Chris Caron'
__license__ = 'BSD'
__copywrite__ = 'Copyright (C) 2024 Chris Caron <[email protected]>'
@@ -49,16 +49,17 @@ from .common import CONTENT_INCLUDE_MODES
from .common import ContentLocation
from .common import CONTENT_LOCATIONS
-from .URLBase import URLBase
-from .URLBase import PrivacyMode
-from .plugins.NotifyBase import NotifyBase
-from .config.ConfigBase import ConfigBase
-from .attachment.AttachBase import AttachBase
+from .url import URLBase
+from .url import PrivacyMode
+from .plugins.base import NotifyBase
+from .config.base import ConfigBase
+from .attachment.base import AttachBase
-from .Apprise import Apprise
-from .AppriseAsset import AppriseAsset
-from .AppriseConfig import AppriseConfig
-from .AppriseAttachment import AppriseAttachment
+from .apprise import Apprise
+from .locale import AppriseLocale
+from .asset import AppriseAsset
+from .apprise_config import AppriseConfig
+from .apprise_attachment import AppriseAttachment
from . import decorators
@@ -73,7 +74,7 @@ logging.getLogger(__name__).addHandler(logging.NullHandler())
__all__ = [
# Core
'Apprise', 'AppriseAsset', 'AppriseConfig', 'AppriseAttachment', 'URLBase',
- 'NotifyBase', 'ConfigBase', 'AttachBase',
+ 'NotifyBase', 'ConfigBase', 'AttachBase', 'AppriseLocale',
# Reference
'NotifyType', 'NotifyImageSize', 'NotifyFormat', 'OverflowMode',
diff --git a/libs/apprise/AppriseAttachment.py b/libs/apprise/apprise_attachment.py
index fcfed3af6..3c33f9e73 100644
--- a/libs/apprise/AppriseAttachment.py
+++ b/libs/apprise/apprise_attachment.py
@@ -27,9 +27,9 @@
# POSSIBILITY OF SUCH DAMAGE.
from . import URLBase
-from .attachment.AttachBase import AttachBase
-from .AppriseAsset import AppriseAsset
-from .AttachmentManager import AttachmentManager
+from .attachment.base import AttachBase
+from .asset import AppriseAsset
+from .manager_attachment import AttachmentManager
from .logger import logger
from .common import ContentLocation
from .common import CONTENT_LOCATIONS
diff --git a/libs/apprise/AppriseAttachment.pyi b/libs/apprise/apprise_attachment.pyi
index a28acb144..a28acb144 100644
--- a/libs/apprise/AppriseAttachment.pyi
+++ b/libs/apprise/apprise_attachment.pyi
diff --git a/libs/apprise/AppriseConfig.py b/libs/apprise/apprise_config.py
index 7e5a9126f..080f70d30 100644
--- a/libs/apprise/AppriseConfig.py
+++ b/libs/apprise/apprise_config.py
@@ -28,9 +28,9 @@
from . import ConfigBase
from . import CONFIG_FORMATS
-from .ConfigurationManager import ConfigurationManager
+from .manager_config import ConfigurationManager
from . import URLBase
-from .AppriseAsset import AppriseAsset
+from .asset import AppriseAsset
from . import common
from .utils import GET_SCHEMA_RE
from .utils import parse_list
diff --git a/libs/apprise/AppriseConfig.pyi b/libs/apprise/apprise_config.pyi
index 9ea819ac3..9ea819ac3 100644
--- a/libs/apprise/AppriseConfig.pyi
+++ b/libs/apprise/apprise_config.pyi
diff --git a/libs/apprise/AppriseAsset.py b/libs/apprise/asset.py
index 97a7bccfb..450303d0e 100644
--- a/libs/apprise/AppriseAsset.py
+++ b/libs/apprise/asset.py
@@ -33,7 +33,7 @@ from os.path import dirname
from os.path import isfile
from os.path import abspath
from .common import NotifyType
-from .NotificationManager import NotificationManager
+from .manager_plugins import NotificationManager
# Grant access to our Notification Manager Singleton
diff --git a/libs/apprise/AppriseAsset.pyi b/libs/apprise/asset.pyi
index 08303341b..08303341b 100644
--- a/libs/apprise/AppriseAsset.pyi
+++ b/libs/apprise/asset.pyi
diff --git a/libs/apprise/attachment/__init__.py b/libs/apprise/attachment/__init__.py
index 0a88313d6..c2aef1eec 100644
--- a/libs/apprise/attachment/__init__.py
+++ b/libs/apprise/attachment/__init__.py
@@ -27,8 +27,8 @@
# POSSIBILITY OF SUCH DAMAGE.
# Used for testing
-from .AttachBase import AttachBase
-from ..AttachmentManager import AttachmentManager
+from .base import AttachBase
+from ..manager_attachment import AttachmentManager
# Initalize our Attachment Manager Singleton
A_MGR = AttachmentManager()
@@ -36,4 +36,5 @@ A_MGR = AttachmentManager()
__all__ = [
# Reference
'AttachBase',
+ 'AttachmentManager',
]
diff --git a/libs/apprise/attachment/AttachBase.py b/libs/apprise/attachment/base.py
index 8cb6bd5cb..71e3a4d0d 100644
--- a/libs/apprise/attachment/AttachBase.py
+++ b/libs/apprise/attachment/base.py
@@ -29,10 +29,10 @@
import os
import time
import mimetypes
-from ..URLBase import URLBase
+from ..url import URLBase
from ..utils import parse_bool
from ..common import ContentLocation
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class AttachBase(URLBase):
@@ -315,7 +315,7 @@ class AttachBase(URLBase):
"download() is implimented by the child class.")
@staticmethod
- def parse_url(url, verify_host=True, mimetype_db=None):
+ def parse_url(url, verify_host=True, mimetype_db=None, sanitize=True):
"""Parses the URL and returns it broken apart into a dictionary.
This is very specific and customized for Apprise.
@@ -333,7 +333,8 @@ class AttachBase(URLBase):
successful, otherwise None is returned.
"""
- results = URLBase.parse_url(url, verify_host=verify_host)
+ results = URLBase.parse_url(
+ url, verify_host=verify_host, sanitize=sanitize)
if not results:
# We're done; we failed to parse our url
diff --git a/libs/apprise/attachment/AttachBase.pyi b/libs/apprise/attachment/base.pyi
index 66b7179d3..66b7179d3 100644
--- a/libs/apprise/attachment/AttachBase.pyi
+++ b/libs/apprise/attachment/base.pyi
diff --git a/libs/apprise/attachment/AttachFile.py b/libs/apprise/attachment/file.py
index 4c9c8f136..c48a707ae 100644
--- a/libs/apprise/attachment/AttachFile.py
+++ b/libs/apprise/attachment/file.py
@@ -28,9 +28,9 @@
import re
import os
-from .AttachBase import AttachBase
+from .base import AttachBase
from ..common import ContentLocation
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class AttachFile(AttachBase):
diff --git a/libs/apprise/attachment/AttachHTTP.py b/libs/apprise/attachment/http.py
index 5a3af9467..aa075d671 100644
--- a/libs/apprise/attachment/AttachHTTP.py
+++ b/libs/apprise/attachment/http.py
@@ -31,10 +31,10 @@ import os
import requests
import threading
from tempfile import NamedTemporaryFile
-from .AttachBase import AttachBase
+from .base import AttachBase
from ..common import ContentLocation
-from ..URLBase import PrivacyMode
-from ..AppriseLocale import gettext_lazy as _
+from ..url import PrivacyMode
+from ..locale import gettext_lazy as _
class AttachHTTP(AttachBase):
@@ -296,8 +296,7 @@ class AttachHTTP(AttachBase):
"""
Tidy memory if open
"""
- with self._lock:
- self.invalidate()
+ self.invalidate()
def url(self, privacy=False, *args, **kwargs):
"""
@@ -363,8 +362,7 @@ class AttachHTTP(AttachBase):
us to re-instantiate this object.
"""
- results = AttachBase.parse_url(url)
-
+ results = AttachBase.parse_url(url, sanitize=False)
if not results:
# We're done early as we couldn't load the results
return results
diff --git a/libs/apprise/config/__init__.py b/libs/apprise/config/__init__.py
index efbace687..24957e88e 100644
--- a/libs/apprise/config/__init__.py
+++ b/libs/apprise/config/__init__.py
@@ -27,8 +27,8 @@
# POSSIBILITY OF SUCH DAMAGE.
# Used for testing
-from .ConfigBase import ConfigBase
-from ..ConfigurationManager import ConfigurationManager
+from .base import ConfigBase
+from ..manager_config import ConfigurationManager
# Initalize our Config Manager Singleton
C_MGR = ConfigurationManager()
@@ -36,4 +36,5 @@ C_MGR = ConfigurationManager()
__all__ = [
# Reference
'ConfigBase',
+ 'ConfigurationManager',
]
diff --git a/libs/apprise/config/ConfigBase.py b/libs/apprise/config/base.py
index 32e1bde34..953cee394 100644
--- a/libs/apprise/config/ConfigBase.py
+++ b/libs/apprise/config/base.py
@@ -33,15 +33,15 @@ import time
from .. import plugins
from .. import common
-from ..AppriseAsset import AppriseAsset
-from ..URLBase import URLBase
-from ..ConfigurationManager import ConfigurationManager
+from ..asset import AppriseAsset
+from ..url import URLBase
from ..utils import GET_SCHEMA_RE
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import parse_urls
from ..utils import cwe312_url
-from ..NotificationManager import NotificationManager
+from ..manager_config import ConfigurationManager
+from ..manager_plugins import NotificationManager
# Test whether token is valid or not
VALID_TOKEN = re.compile(
diff --git a/libs/apprise/config/ConfigBase.pyi b/libs/apprise/config/base.pyi
index abff1204d..abff1204d 100644
--- a/libs/apprise/config/ConfigBase.pyi
+++ b/libs/apprise/config/base.pyi
diff --git a/libs/apprise/config/ConfigFile.py b/libs/apprise/config/file.py
index 172d699f8..9f29ca20b 100644
--- a/libs/apprise/config/ConfigFile.py
+++ b/libs/apprise/config/file.py
@@ -28,10 +28,10 @@
import re
import os
-from .ConfigBase import ConfigBase
+from .base import ConfigBase
from ..common import ConfigFormat
from ..common import ContentIncludeMode
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class ConfigFile(ConfigBase):
diff --git a/libs/apprise/config/ConfigHTTP.py b/libs/apprise/config/http.py
index f6faba8d4..2e2ba299b 100644
--- a/libs/apprise/config/ConfigHTTP.py
+++ b/libs/apprise/config/http.py
@@ -28,11 +28,11 @@
import re
import requests
-from .ConfigBase import ConfigBase
+from .base import ConfigBase
from ..common import ConfigFormat
from ..common import ContentIncludeMode
-from ..URLBase import PrivacyMode
-from ..AppriseLocale import gettext_lazy as _
+from ..url import PrivacyMode
+from ..locale import gettext_lazy as _
# Support YAML formats
# text/yaml
diff --git a/libs/apprise/config/ConfigMemory.py b/libs/apprise/config/memory.py
index 413956dfc..181d76236 100644
--- a/libs/apprise/config/ConfigMemory.py
+++ b/libs/apprise/config/memory.py
@@ -26,8 +26,8 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from .ConfigBase import ConfigBase
-from ..AppriseLocale import gettext_lazy as _
+from .base import ConfigBase
+from ..locale import gettext_lazy as _
class ConfigMemory(ConfigBase):
diff --git a/libs/apprise/conversion.py b/libs/apprise/conversion.py
index 4d5632f59..5b6d1a941 100644
--- a/libs/apprise/conversion.py
+++ b/libs/apprise/conversion.py
@@ -29,7 +29,7 @@
import re
from markdown import markdown
from .common import NotifyFormat
-from .URLBase import URLBase
+from .url import URLBase
from html.parser import HTMLParser
diff --git a/libs/apprise/decorators/CustomNotifyPlugin.py b/libs/apprise/decorators/base.py
index eb5f17b78..2661db0aa 100644
--- a/libs/apprise/decorators/CustomNotifyPlugin.py
+++ b/libs/apprise/decorators/base.py
@@ -27,8 +27,8 @@
# POSSIBILITY OF SUCH DAMAGE.USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from ..plugins.NotifyBase import NotifyBase
-from ..NotificationManager import NotificationManager
+from ..plugins.base import NotifyBase
+from ..manager_plugins import NotificationManager
from ..utils import URL_DETAILS_RE
from ..utils import parse_url
from ..utils import url_assembly
@@ -55,6 +55,9 @@ class CustomNotifyPlugin(NotifyBase):
# should be treated differently.
category = 'custom'
+ # Support Attachments
+ attachment_support = True
+
# Define object templates
templates = (
'{schema}://',
diff --git a/libs/apprise/decorators/notify.py b/libs/apprise/decorators/notify.py
index 2dd5f5099..892c3adfe 100644
--- a/libs/apprise/decorators/notify.py
+++ b/libs/apprise/decorators/notify.py
@@ -26,7 +26,7 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from .CustomNotifyPlugin import CustomNotifyPlugin
+from .base import CustomNotifyPlugin
def notify(on, name=None):
diff --git a/libs/apprise/i18n/en/LC_MESSAGES/apprise.mo b/libs/apprise/i18n/en/LC_MESSAGES/apprise.mo
index 1d22b89a6..f108b538d 100644
--- a/libs/apprise/i18n/en/LC_MESSAGES/apprise.mo
+++ b/libs/apprise/i18n/en/LC_MESSAGES/apprise.mo
Binary files differ
diff --git a/libs/apprise/AppriseLocale.py b/libs/apprise/locale.py
index e900ce5bc..e900ce5bc 100644
--- a/libs/apprise/AppriseLocale.py
+++ b/libs/apprise/locale.py
diff --git a/libs/apprise/manager.py b/libs/apprise/manager.py
index c2b715d4f..70dc10700 100644
--- a/libs/apprise/manager.py
+++ b/libs/apprise/manager.py
@@ -61,6 +61,9 @@ class PluginManager(metaclass=Singleton):
# The module path to scan
module_path = join(abspath(dirname(__file__)), _id)
+ # For filtering our result when scanning a module
+ module_filter_re = re.compile(r'^(?P<name>((?!_)[A-Za-z0-9]+))$')
+
# thread safe loading
_lock = threading.Lock()
@@ -177,7 +180,7 @@ class PluginManager(metaclass=Singleton):
# The .py extension is optional as we support loading directories
# too
module_re = re.compile(
- r'^(?P<name>' + self.fname_prefix + r'[a-z0-9]+)(\.py)?$',
+ r'^(?P<name>(?!base|_)[a-z0-9_]+)(\.py)?$',
re.I)
t_start = time.time()
@@ -188,10 +191,6 @@ class PluginManager(metaclass=Singleton):
# keep going
continue
- elif match.group('name') == f'{self.fname_prefix}Base':
- # keep going
- continue
-
# Store our notification/plugin name:
module_name = match.group('name')
module_pyname = '{}.{}'.format(module_name_prefix, module_name)
@@ -216,7 +215,47 @@ class PluginManager(metaclass=Singleton):
# logging found in import_module and not needed here
continue
- if not hasattr(module, module_name):
+ module_class = None
+ for m_class in [obj for obj in dir(module)
+ if self.module_filter_re.match(obj)]:
+ # Get our plugin
+ plugin = getattr(module, m_class)
+ if not hasattr(plugin, 'app_id'):
+ # Filter out non-notification modules
+ logger.trace(
+ "(%s) import failed; no app_id defined in %s",
+ self.name, m_class, os.path.join(module_path, f))
+ continue
+
+ # Add our plugin name to our module map
+ self._module_map[module_name] = {
+ 'plugin': set([plugin]),
+ 'module': module,
+ 'path': '{}.{}'.format(
+ module_name_prefix, module_name),
+ 'native': True,
+ }
+
+ fn = getattr(plugin, 'schemas', None)
+ schemas = set([]) if not callable(fn) else fn(plugin)
+
+ # map our schema to our plugin
+ for schema in schemas:
+ if schema in self._schema_map:
+ logger.error(
+ "{} schema ({}) mismatch detected - {} to {}"
+ .format(self.name, schema, self._schema_map,
+ plugin))
+ continue
+
+ # Assign plugin
+ self._schema_map[schema] = plugin
+
+ # Store our class
+ module_class = m_class
+ break
+
+ if not module_class:
# Not a library we can load as it doesn't follow the simple
# rule that the class must bear the same name as the
# notification file itself.
@@ -226,38 +265,6 @@ class PluginManager(metaclass=Singleton):
self.name, module_name, os.path.join(module_path, f))
continue
- # Get our plugin
- plugin = getattr(module, module_name)
- if not hasattr(plugin, 'app_id'):
- # Filter out non-notification modules
- logger.trace(
- "(%s) import failed; no app_id defined in %s",
- self.name, module_name, os.path.join(module_path, f))
- continue
-
- # Add our plugin name to our module map
- self._module_map[module_name] = {
- 'plugin': set([plugin]),
- 'module': module,
- 'path': '{}.{}'.format(module_name_prefix, module_name),
- 'native': True,
- }
-
- fn = getattr(plugin, 'schemas', None)
- schemas = set([]) if not callable(fn) else fn(plugin)
-
- # map our schema to our plugin
- for schema in schemas:
- if schema in self._schema_map:
- logger.error(
- "{} schema ({}) mismatch detected - {} to {}"
- .format(self.name, schema, self._schema_map,
- plugin))
- continue
-
- # Assign plugin
- self._schema_map[schema] = plugin
-
logger.trace(
'{} {} loaded in {:.6f}s'.format(
self.name, module_name, (time.time() - tl_start)))
diff --git a/libs/apprise/AttachmentManager.py b/libs/apprise/manager_attachment.py
index d296a4996..d1288a943 100644
--- a/libs/apprise/AttachmentManager.py
+++ b/libs/apprise/manager_attachment.py
@@ -26,6 +26,7 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
+import re
from os.path import dirname
from os.path import abspath
from os.path import join
@@ -52,3 +53,7 @@ class AttachmentManager(PluginManager):
# The module path to scan
module_path = join(abspath(dirname(__file__)), _id)
+
+ # For filtering our result set
+ module_filter_re = re.compile(
+ r'^(?P<name>' + fname_prefix + r'(?!Base)[A-Za-z0-9]+)$')
diff --git a/libs/apprise/ConfigurationManager.py b/libs/apprise/manager_config.py
index 6696895b9..69a6bedb9 100644
--- a/libs/apprise/ConfigurationManager.py
+++ b/libs/apprise/manager_config.py
@@ -26,6 +26,7 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
+import re
from os.path import dirname
from os.path import abspath
from os.path import join
@@ -52,3 +53,7 @@ class ConfigurationManager(PluginManager):
# The module path to scan
module_path = join(abspath(dirname(__file__)), _id)
+
+ # For filtering our result set
+ module_filter_re = re.compile(
+ r'^(?P<name>' + fname_prefix + r'(?!Base)[A-Za-z0-9]+)$')
diff --git a/libs/apprise/NotificationManager.py b/libs/apprise/manager_plugins.py
index abbbdd203..74ed370ea 100644
--- a/libs/apprise/NotificationManager.py
+++ b/libs/apprise/manager_plugins.py
@@ -26,6 +26,7 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
+import re
from os.path import dirname
from os.path import abspath
from os.path import join
@@ -52,3 +53,8 @@ class NotificationManager(PluginManager):
# The module path to scan
module_path = join(abspath(dirname(__file__)), _id)
+
+ # For filtering our result set
+ module_filter_re = re.compile(
+ r'^(?P<name>' + fname_prefix +
+ r'(?!Base|ImageSize|Type)[A-Za-z0-9]+)$')
diff --git a/libs/apprise/plugins/__init__.py b/libs/apprise/plugins/__init__.py
index 72cb08fbf..bfce14371 100644
--- a/libs/apprise/plugins/__init__.py
+++ b/libs/apprise/plugins/__init__.py
@@ -30,7 +30,7 @@ import os
import copy
# Used for testing
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NOTIFY_IMAGE_SIZES
@@ -40,9 +40,9 @@ from ..utils import parse_list
from ..utils import cwe312_url
from ..utils import GET_SCHEMA_RE
from ..logger import logger
-from ..AppriseLocale import gettext_lazy as _
-from ..AppriseLocale import LazyTranslation
-from ..NotificationManager import NotificationManager
+from ..locale import gettext_lazy as _
+from ..locale import LazyTranslation
+from ..manager_plugins import NotificationManager
# Grant access to our Notification Manager Singleton
diff --git a/libs/apprise/plugins/NotifyAppriseAPI.py b/libs/apprise/plugins/apprise_api.py
index 34c34a6d4..fd71236b5 100644
--- a/libs/apprise/plugins/NotifyAppriseAPI.py
+++ b/libs/apprise/plugins/apprise_api.py
@@ -31,12 +31,12 @@ import requests
from json import dumps
import base64
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class AppriseAPIMethod:
@@ -123,7 +123,7 @@ class NotifyAppriseAPI(NotifyBase):
'type': 'string',
'required': True,
'private': True,
- 'regex': (r'^[A-Z0-9_-]{1,32}$', 'i'),
+ 'regex': (r'^[A-Z0-9_-]{1,128}$', 'i'),
},
})
diff --git a/libs/apprise/plugins/NotifyAprs.py b/libs/apprise/plugins/aprs.py
index 5d8c3c100..b8adef5aa 100644
--- a/libs/apprise/plugins/NotifyAprs.py
+++ b/libs/apprise/plugins/aprs.py
@@ -70,9 +70,9 @@
import socket
import sys
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..AppriseLocale import gettext_lazy as _
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..locale import gettext_lazy as _
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_call_sign
from ..utils import parse_call_sign
diff --git a/libs/apprise/plugins/NotifyBark.py b/libs/apprise/plugins/bark.py
index 781a1515e..e2f5bbfb4 100644
--- a/libs/apprise/plugins/NotifyBark.py
+++ b/libs/apprise/plugins/bark.py
@@ -32,13 +32,13 @@
import requests
import json
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Sounds generated off of: https://github.com/Finb/Bark/tree/master/Sounds
diff --git a/libs/apprise/plugins/NotifyBase.py b/libs/apprise/plugins/base.py
index c29417c60..1abc3410e 100644
--- a/libs/apprise/plugins/NotifyBase.py
+++ b/libs/apprise/plugins/base.py
@@ -30,7 +30,7 @@ import asyncio
import re
from functools import partial
-from ..URLBase import URLBase
+from ..url import URLBase
from ..common import NotifyType
from ..utils import parse_bool
from ..common import NOTIFY_TYPES
@@ -38,8 +38,8 @@ from ..common import NotifyFormat
from ..common import NOTIFY_FORMATS
from ..common import OverflowMode
from ..common import OVERFLOW_MODES
-from ..AppriseLocale import gettext_lazy as _
-from ..AppriseAttachment import AppriseAttachment
+from ..locale import gettext_lazy as _
+from ..apprise_attachment import AppriseAttachment
class NotifyBase(URLBase):
diff --git a/libs/apprise/plugins/NotifyBase.pyi b/libs/apprise/plugins/base.pyi
index 9cf3e404c..9cf3e404c 100644
--- a/libs/apprise/plugins/NotifyBase.pyi
+++ b/libs/apprise/plugins/base.pyi
diff --git a/libs/apprise/plugins/NotifyBoxcar.py b/libs/apprise/plugins/boxcar.py
index 808920ed5..851cdd3d8 100644
--- a/libs/apprise/plugins/NotifyBoxcar.py
+++ b/libs/apprise/plugins/boxcar.py
@@ -35,14 +35,14 @@ from hashlib import sha1
from itertools import chain
from urllib.parse import urlparse
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..utils import parse_bool
from ..utils import parse_list
from ..utils import validate_regex
from ..common import NotifyType
from ..common import NotifyImageSize
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default to sending to all devices if nothing is specified
DEFAULT_TAG = '@all'
diff --git a/libs/apprise/plugins/NotifyBulkSMS.py b/libs/apprise/plugins/bulksms.py
index 33664fb00..29c4d7fac 100644
--- a/libs/apprise/plugins/NotifyBulkSMS.py
+++ b/libs/apprise/plugins/bulksms.py
@@ -36,13 +36,13 @@ import re
import requests
import json
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
IS_GROUP_RE = re.compile(
diff --git a/libs/apprise/plugins/NotifyBulkVS.py b/libs/apprise/plugins/bulkvs.py
index e912dff25..53a363008 100644
--- a/libs/apprise/plugins/NotifyBulkVS.py
+++ b/libs/apprise/plugins/bulkvs.py
@@ -35,13 +35,13 @@
# Messaging/post_messageSend
import requests
import json
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyBulkVS(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyBurstSMS.py b/libs/apprise/plugins/burstsms.py
index 39606abba..eb19df8e4 100644
--- a/libs/apprise/plugins/NotifyBurstSMS.py
+++ b/libs/apprise/plugins/burstsms.py
@@ -33,14 +33,14 @@
#
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class BurstSMSCountryCode:
diff --git a/libs/apprise/plugins/NotifyChantify.py b/libs/apprise/plugins/chantify.py
index d912bd257..d549a59fa 100644
--- a/libs/apprise/plugins/NotifyChantify.py
+++ b/libs/apprise/plugins/chantify.py
@@ -35,10 +35,10 @@
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyChantify(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyClickSend.py b/libs/apprise/plugins/clicksend.py
index 5e345fe10..9ade1055e 100644
--- a/libs/apprise/plugins/NotifyClickSend.py
+++ b/libs/apprise/plugins/clicksend.py
@@ -41,15 +41,14 @@
#
import requests
from json import dumps
-from base64 import b64encode
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
CLICKSEND_HTTP_ERROR_MAP = {
@@ -89,7 +88,7 @@ class NotifyClickSend(NotifyBase):
# Define object templates
templates = (
- '{schema}://{user}:{password}@{targets}',
+ '{schema}://{user}:{apikey}@{targets}',
)
# Define our template tokens
@@ -99,11 +98,12 @@ class NotifyClickSend(NotifyBase):
'type': 'string',
'required': True,
},
- 'password': {
- 'name': _('Password'),
+ 'apikey': {
+ 'name': _('API Key'),
'type': 'string',
'private': True,
'required': True,
+ 'map_to': 'password',
},
'target_phone': {
'name': _('Target Phone No'),
@@ -124,6 +124,9 @@ class NotifyClickSend(NotifyBase):
'to': {
'alias_of': 'targets',
},
+ 'key': {
+ 'alias_of': 'apikey',
+ },
'batch': {
'name': _('Batch Mode'),
'type': 'bool',
@@ -174,9 +177,6 @@ class NotifyClickSend(NotifyBase):
headers = {
'User-Agent': self.app_id,
'Content-Type': 'application/json; charset=utf-8',
- 'Authorization': 'Basic {}'.format(
- b64encode('{}:{}'.format(
- self.user, self.password).encode('utf-8'))),
}
# error tracking (used for function return)
@@ -208,6 +208,7 @@ class NotifyClickSend(NotifyBase):
r = requests.post(
self.notify_url,
data=dumps(payload),
+ auth=(self.user, self.password),
headers=headers,
verify=self.verify_certificate,
timeout=self.request_timeout,
@@ -322,6 +323,12 @@ class NotifyClickSend(NotifyBase):
results['batch'] = \
parse_bool(results['qsd'].get('batch', False))
+ # API Key
+ if 'key' in results['qsd'] and len(results['qsd']['key']):
+ # Extract the API Key from an argument
+ results['password'] = \
+ NotifyClickSend.unquote(results['qsd']['key'])
+
# Support the 'to' variable so that we can support rooms this way too
# The 'to' makes it easier to use yaml configuration
if 'to' in results['qsd'] and len(results['qsd']['to']):
diff --git a/libs/apprise/plugins/NotifyForm.py b/libs/apprise/plugins/custom_form.py
index 9690cd4f5..0f36643f7 100644
--- a/libs/apprise/plugins/NotifyForm.py
+++ b/libs/apprise/plugins/custom_form.py
@@ -29,11 +29,11 @@
import re
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class FORMPayloadField:
diff --git a/libs/apprise/plugins/NotifyJSON.py b/libs/apprise/plugins/custom_json.py
index 182ff77cf..e0d7a6753 100644
--- a/libs/apprise/plugins/NotifyJSON.py
+++ b/libs/apprise/plugins/custom_json.py
@@ -30,11 +30,11 @@ import requests
import base64
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class JSONPayloadField:
diff --git a/libs/apprise/plugins/NotifyXML.py b/libs/apprise/plugins/custom_xml.py
index 21ccb79d3..b7928fceb 100644
--- a/libs/apprise/plugins/NotifyXML.py
+++ b/libs/apprise/plugins/custom_xml.py
@@ -30,11 +30,11 @@ import re
import requests
import base64
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class XMLPayloadField:
diff --git a/libs/apprise/plugins/NotifyD7Networks.py b/libs/apprise/plugins/d7networks.py
index 906ec2fb9..ad55e2197 100644
--- a/libs/apprise/plugins/NotifyD7Networks.py
+++ b/libs/apprise/plugins/d7networks.py
@@ -39,13 +39,13 @@ import requests
from json import dumps
from json import loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
D7NETWORKS_HTTP_ERROR_MAP = {
diff --git a/libs/apprise/plugins/NotifyDapnet.py b/libs/apprise/plugins/dapnet.py
index ae7199c94..60a18acd4 100644
--- a/libs/apprise/plugins/NotifyDapnet.py
+++ b/libs/apprise/plugins/dapnet.py
@@ -51,9 +51,9 @@ from json import dumps
import requests
from requests.auth import HTTPBasicAuth
-from .NotifyBase import NotifyBase
-from ..AppriseLocale import gettext_lazy as _
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..locale import gettext_lazy as _
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_call_sign
from ..utils import parse_call_sign
diff --git a/libs/apprise/plugins/NotifyDBus.py b/libs/apprise/plugins/dbus.py
index 52e119813..f2361fd62 100644
--- a/libs/apprise/plugins/NotifyDBus.py
+++ b/libs/apprise/plugins/dbus.py
@@ -27,11 +27,11 @@
# POSSIBILITY OF SUCH DAMAGE.
import sys
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_DBUS_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyDingTalk.py b/libs/apprise/plugins/dingtalk.py
index d4a492fc7..2ca1bc55b 100644
--- a/libs/apprise/plugins/NotifyDingTalk.py
+++ b/libs/apprise/plugins/dingtalk.py
@@ -34,13 +34,13 @@ import base64
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Register at https://dingtalk.com
# - Download their PC based software as it is the only way you can create
diff --git a/libs/apprise/plugins/NotifyDiscord.py b/libs/apprise/plugins/discord.py
index 82d764f50..14c6152ba 100644
--- a/libs/apprise/plugins/NotifyDiscord.py
+++ b/libs/apprise/plugins/discord.py
@@ -50,14 +50,14 @@ from datetime import timedelta
from datetime import datetime
from datetime import timezone
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
# Used to detect user/role IDs
diff --git a/libs/apprise/plugins/NotifyEmail.py b/libs/apprise/plugins/email.py
index 80f88bf61..142c93cfb 100644
--- a/libs/apprise/plugins/NotifyEmail.py
+++ b/libs/apprise/plugins/email.py
@@ -41,12 +41,12 @@ from socket import error as SocketError
from datetime import datetime
from datetime import timezone
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat, NotifyType
from ..conversion import convert_between
-from ..utils import is_email, parse_emails, is_hostname
-from ..AppriseLocale import gettext_lazy as _
+from ..utils import is_ipaddr, is_email, parse_emails, is_hostname
+from ..locale import gettext_lazy as _
from ..logger import logger
# Globally Default encoding mode set to Quoted Printable.
@@ -1053,8 +1053,12 @@ class NotifyEmail(NotifyBase):
# Prepare our target lists
results['targets'] = []
- if not is_hostname(results['host'], ipv4=False, ipv6=False,
- underscore=False):
+ if is_ipaddr(results['host']):
+ # Silently move on and do not disrupt any configuration
+ pass
+
+ elif not is_hostname(results['host'], ipv4=False, ipv6=False,
+ underscore=False):
if is_email(NotifyEmail.unquote(results['host'])):
# Don't lose defined email addresses
diff --git a/libs/apprise/plugins/NotifyEmby.py b/libs/apprise/plugins/emby.py
index ce96553a2..5e4e0b89f 100644
--- a/libs/apprise/plugins/NotifyEmby.py
+++ b/libs/apprise/plugins/emby.py
@@ -34,12 +34,12 @@ import hashlib
from json import dumps
from json import loads
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..utils import parse_bool
from ..common import NotifyType
from .. import __version__ as VERSION
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyEmby(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyEnigma2.py b/libs/apprise/plugins/enigma2.py
index 313149993..8b1fff687 100644
--- a/libs/apprise/plugins/NotifyEnigma2.py
+++ b/libs/apprise/plugins/enigma2.py
@@ -37,10 +37,10 @@
import requests
from json import loads
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class Enigma2MessageType:
diff --git a/libs/apprise/plugins/NotifyFCM/__init__.py b/libs/apprise/plugins/fcm/__init__.py
index 54b6c9cc7..9dc0679f1 100644
--- a/libs/apprise/plugins/NotifyFCM/__init__.py
+++ b/libs/apprise/plugins/fcm/__init__.py
@@ -50,15 +50,15 @@
# You will need this in order to send an apprise messag
import requests
from json import dumps
-from ..NotifyBase import NotifyBase
+from ..base import NotifyBase
from ...common import NotifyType
from ...utils import validate_regex
from ...utils import parse_list
from ...utils import parse_bool
from ...utils import dict_full_update
from ...common import NotifyImageSize
-from ...AppriseAttachment import AppriseAttachment
-from ...AppriseLocale import gettext_lazy as _
+from ...apprise_attachment import AppriseAttachment
+from ...locale import gettext_lazy as _
from .common import (FCMMode, FCM_MODES)
from .priority import (FCM_PRIORITIES, FCMPriorityManager)
from .color import FCMColorManager
diff --git a/libs/apprise/plugins/NotifyFCM/color.py b/libs/apprise/plugins/fcm/color.py
index c7da209a7..20149eedd 100644
--- a/libs/apprise/plugins/NotifyFCM/color.py
+++ b/libs/apprise/plugins/fcm/color.py
@@ -36,7 +36,7 @@
import re
from ...utils import parse_bool
from ...common import NotifyType
-from ...AppriseAsset import AppriseAsset
+from ...asset import AppriseAsset
class FCMColorManager:
diff --git a/libs/apprise/plugins/NotifyFCM/common.py b/libs/apprise/plugins/fcm/common.py
index 9f139226a..9f139226a 100644
--- a/libs/apprise/plugins/NotifyFCM/common.py
+++ b/libs/apprise/plugins/fcm/common.py
diff --git a/libs/apprise/plugins/NotifyFCM/oauth.py b/libs/apprise/plugins/fcm/oauth.py
index fbde3ccf7..fbde3ccf7 100644
--- a/libs/apprise/plugins/NotifyFCM/oauth.py
+++ b/libs/apprise/plugins/fcm/oauth.py
diff --git a/libs/apprise/plugins/NotifyFCM/priority.py b/libs/apprise/plugins/fcm/priority.py
index 8564d3460..8564d3460 100644
--- a/libs/apprise/plugins/NotifyFCM/priority.py
+++ b/libs/apprise/plugins/fcm/priority.py
diff --git a/libs/apprise/plugins/NotifyFeishu.py b/libs/apprise/plugins/feishu.py
index e6988333c..961523bab 100644
--- a/libs/apprise/plugins/NotifyFeishu.py
+++ b/libs/apprise/plugins/feishu.py
@@ -36,10 +36,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyFeishu(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyFlock.py b/libs/apprise/plugins/flock.py
index f1d12067e..bf2cd131d 100644
--- a/libs/apprise/plugins/NotifyFlock.py
+++ b/libs/apprise/plugins/flock.py
@@ -44,14 +44,14 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..common import NotifyImageSize
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
diff --git a/libs/apprise/plugins/NotifyFreeMobile.py b/libs/apprise/plugins/freemobile.py
index 4aad8db3d..4ff3d4822 100644
--- a/libs/apprise/plugins/NotifyFreeMobile.py
+++ b/libs/apprise/plugins/freemobile.py
@@ -36,9 +36,9 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyFreeMobile(NotifyBase):
@@ -126,6 +126,7 @@ class NotifyFreeMobile(NotifyBase):
# prepare our headers
headers = {
'User-Agent': self.app_id,
+ 'Content-Type': 'application/json',
}
# Prepare our payload
diff --git a/libs/apprise/plugins/NotifyGnome.py b/libs/apprise/plugins/gnome.py
index 67129216d..b64b51304 100644
--- a/libs/apprise/plugins/NotifyGnome.py
+++ b/libs/apprise/plugins/gnome.py
@@ -26,11 +26,11 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_GNOME_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyGoogleChat.py b/libs/apprise/plugins/google_chat.py
index d2a6cc8a8..f30cdae49 100644
--- a/libs/apprise/plugins/NotifyGoogleChat.py
+++ b/libs/apprise/plugins/google_chat.py
@@ -58,11 +58,11 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyGoogleChat(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyGotify.py b/libs/apprise/plugins/gotify.py
index 3f4ce132d..bf6c1b281 100644
--- a/libs/apprise/plugins/NotifyGotify.py
+++ b/libs/apprise/plugins/gotify.py
@@ -34,10 +34,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType, NotifyFormat
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Priorities
diff --git a/libs/apprise/plugins/NotifyGrowl.py b/libs/apprise/plugins/growl.py
index 0b42e3bec..0b3672188 100644
--- a/libs/apprise/plugins/NotifyGrowl.py
+++ b/libs/apprise/plugins/growl.py
@@ -26,12 +26,12 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_GROWL_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyGuilded.py b/libs/apprise/plugins/guilded.py
index 0ea36d9f8..0ee07018e 100644
--- a/libs/apprise/plugins/NotifyGuilded.py
+++ b/libs/apprise/plugins/guilded.py
@@ -45,10 +45,11 @@
#
import re
-from .NotifyDiscord import NotifyDiscord
+# Import namespace so the class won't conflict with the actual Notify object
+from . import discord
-class NotifyGuilded(NotifyDiscord):
+class NotifyGuilded(discord.NotifyDiscord):
"""
A wrapper to Guilded Notifications
diff --git a/libs/apprise/plugins/NotifyHomeAssistant.py b/libs/apprise/plugins/home_assistant.py
index 0829381b9..b0ffcaa64 100644
--- a/libs/apprise/plugins/NotifyHomeAssistant.py
+++ b/libs/apprise/plugins/home_assistant.py
@@ -34,11 +34,11 @@ from json import dumps
from uuid import uuid4
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyHomeAssistant(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyHttpSMS.py b/libs/apprise/plugins/httpsms.py
index 647100949..b36e286d7 100644
--- a/libs/apprise/plugins/NotifyHttpSMS.py
+++ b/libs/apprise/plugins/httpsms.py
@@ -31,12 +31,12 @@
# https://httpsms.com
import requests
import json
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyHttpSMS(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyIFTTT.py b/libs/apprise/plugins/ifttt.py
index 9174640d0..9d89b1464 100644
--- a/libs/apprise/plugins/NotifyIFTTT.py
+++ b/libs/apprise/plugins/ifttt.py
@@ -44,11 +44,11 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyIFTTT(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyJoin.py b/libs/apprise/plugins/join.py
index c6b0d91e9..b92bb37a3 100644
--- a/libs/apprise/plugins/NotifyJoin.py
+++ b/libs/apprise/plugins/join.py
@@ -39,13 +39,13 @@
import re
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
JOIN_HTTP_ERROR_MAP = {
diff --git a/libs/apprise/plugins/NotifyKavenegar.py b/libs/apprise/plugins/kavenegar.py
index 2a9c169d7..e4963f409 100644
--- a/libs/apprise/plugins/NotifyKavenegar.py
+++ b/libs/apprise/plugins/kavenegar.py
@@ -38,12 +38,12 @@
import requests
from json import loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
# Based on https://kavenegar.com/rest.html
diff --git a/libs/apprise/plugins/NotifyKumulos.py b/libs/apprise/plugins/kumulos.py
index da372e773..504dcc379 100644
--- a/libs/apprise/plugins/NotifyKumulos.py
+++ b/libs/apprise/plugins/kumulos.py
@@ -39,10 +39,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
KUMULOS_HTTP_ERROR_MAP = {
diff --git a/libs/apprise/plugins/NotifyLametric.py b/libs/apprise/plugins/lametric.py
index 5825d9176..411b9ea21 100644
--- a/libs/apprise/plugins/NotifyLametric.py
+++ b/libs/apprise/plugins/lametric.py
@@ -90,10 +90,10 @@
import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from ..utils import is_hostname
from ..utils import is_ipaddr
diff --git a/libs/apprise/plugins/NotifyLine.py b/libs/apprise/plugins/line.py
index 61e4f3703..07a01e769 100644
--- a/libs/apprise/plugins/NotifyLine.py
+++ b/libs/apprise/plugins/line.py
@@ -33,14 +33,14 @@ import requests
import re
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..common import NotifyImageSize
from ..utils import validate_regex
from ..utils import parse_list
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Used to break path apart into list of streams
diff --git a/libs/apprise/plugins/NotifyLunaSea.py b/libs/apprise/plugins/lunasea.py
index 51d820915..2af519179 100644
--- a/libs/apprise/plugins/NotifyLunaSea.py
+++ b/libs/apprise/plugins/lunasea.py
@@ -33,15 +33,15 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyImageSize
from ..utils import parse_list
from ..utils import is_hostname
from ..utils import is_ipaddr
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
-from ..URLBase import PrivacyMode
+from ..locale import gettext_lazy as _
+from ..url import PrivacyMode
class LunaSeaMode:
diff --git a/libs/apprise/plugins/NotifyMacOSX.py b/libs/apprise/plugins/macosx.py
index dd53369fe..31b7101bd 100644
--- a/libs/apprise/plugins/NotifyMacOSX.py
+++ b/libs/apprise/plugins/macosx.py
@@ -30,11 +30,11 @@ import platform
import subprocess
import os
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_MACOSX_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyMailgun.py b/libs/apprise/plugins/mailgun.py
index 82cf970bf..69ab72dda 100644
--- a/libs/apprise/plugins/NotifyMailgun.py
+++ b/libs/apprise/plugins/mailgun.py
@@ -56,7 +56,7 @@
#
import requests
from email.utils import formataddr
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..utils import parse_emails
@@ -64,7 +64,7 @@ from ..utils import parse_bool
from ..utils import is_email
from ..utils import validate_regex
from ..logger import logger
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Provide some known codes Mailgun uses and what they translate to:
# Based on https://documentation.mailgun.com/en/latest/api-intro.html#errors
diff --git a/libs/apprise/plugins/NotifyMastodon.py b/libs/apprise/plugins/mastodon.py
index 0d2f27df3..b6e451ad1 100644
--- a/libs/apprise/plugins/NotifyMastodon.py
+++ b/libs/apprise/plugins/mastodon.py
@@ -33,16 +33,16 @@ from json import dumps, loads
from datetime import datetime
from datetime import timezone
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
# Accept:
# - @username
diff --git a/libs/apprise/plugins/NotifyMatrix.py b/libs/apprise/plugins/matrix.py
index 594274761..c1401f238 100644
--- a/libs/apprise/plugins/NotifyMatrix.py
+++ b/libs/apprise/plugins/matrix.py
@@ -37,8 +37,8 @@ from json import dumps
from json import loads
from time import time
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..common import NotifyImageSize
from ..common import NotifyFormat
@@ -46,7 +46,7 @@ from ..utils import parse_bool
from ..utils import parse_list
from ..utils import is_hostname
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Define default path
MATRIX_V1_WEBHOOK_PATH = '/api/v1/matrix/hook'
diff --git a/libs/apprise/plugins/NotifyMattermost.py b/libs/apprise/plugins/mattermost.py
index dbb5f0dd3..481a9b852 100644
--- a/libs/apprise/plugins/NotifyMattermost.py
+++ b/libs/apprise/plugins/mattermost.py
@@ -39,13 +39,13 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Some Reference Locations:
# - https://docs.mattermost.com/developer/webhooks-incoming.html
diff --git a/libs/apprise/plugins/NotifyMessageBird.py b/libs/apprise/plugins/messagebird.py
index 42d880acd..c496d347e 100644
--- a/libs/apprise/plugins/NotifyMessageBird.py
+++ b/libs/apprise/plugins/messagebird.py
@@ -34,12 +34,12 @@
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyMessageBird(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyMisskey.py b/libs/apprise/plugins/misskey.py
index 8965a0f7b..73b8f7c6e 100644
--- a/libs/apprise/plugins/NotifyMisskey.py
+++ b/libs/apprise/plugins/misskey.py
@@ -47,10 +47,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class MisskeyVisibility:
diff --git a/libs/apprise/plugins/NotifyMQTT.py b/libs/apprise/plugins/mqtt.py
index 49380d330..1e09cd147 100644
--- a/libs/apprise/plugins/NotifyMQTT.py
+++ b/libs/apprise/plugins/mqtt.py
@@ -38,12 +38,12 @@ import re
from time import sleep
from datetime import datetime
from os.path import isfile
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_MQTT_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyMSG91.py b/libs/apprise/plugins/msg91.py
index a7bd9c473..28a5bf183 100644
--- a/libs/apprise/plugins/NotifyMSG91.py
+++ b/libs/apprise/plugins/msg91.py
@@ -38,12 +38,12 @@
import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no, parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class MSG91PayloadField:
diff --git a/libs/apprise/plugins/NotifyMSTeams.py b/libs/apprise/plugins/msteams.py
index 06572c3e6..2e0957f32 100644
--- a/libs/apprise/plugins/NotifyMSTeams.py
+++ b/libs/apprise/plugins/msteams.py
@@ -81,7 +81,7 @@ import requests
import json
from json.decoder import JSONDecodeError
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..common import NotifyFormat
@@ -89,8 +89,8 @@ from ..utils import parse_bool
from ..utils import validate_regex
from ..utils import apply_template
from ..utils import TemplateType
-from ..AppriseAttachment import AppriseAttachment
-from ..AppriseLocale import gettext_lazy as _
+from ..apprise_attachment import AppriseAttachment
+from ..locale import gettext_lazy as _
class NotifyMSTeams(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyNextcloud.py b/libs/apprise/plugins/nextcloud.py
index fd471d9eb..9acfc43d5 100644
--- a/libs/apprise/plugins/NotifyNextcloud.py
+++ b/libs/apprise/plugins/nextcloud.py
@@ -28,11 +28,11 @@
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyNextcloud(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyNextcloudTalk.py b/libs/apprise/plugins/nextcloudtalk.py
index 4bfced282..b1b014770 100644
--- a/libs/apprise/plugins/NotifyNextcloudTalk.py
+++ b/libs/apprise/plugins/nextcloudtalk.py
@@ -29,11 +29,11 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyNextcloudTalk(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyNotica.py b/libs/apprise/plugins/notica.py
index 33a94fc96..661fde1d1 100644
--- a/libs/apprise/plugins/NotifyNotica.py
+++ b/libs/apprise/plugins/notica.py
@@ -43,11 +43,11 @@
import re
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NoticaMode:
diff --git a/libs/apprise/plugins/NotifyNotifiarr.py b/libs/apprise/plugins/notifiarr.py
index e195cbd32..cc13e1a56 100644
--- a/libs/apprise/plugins/NotifyNotifiarr.py
+++ b/libs/apprise/plugins/notifiarr.py
@@ -31,9 +31,9 @@ import requests
from json import dumps
from itertools import chain
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from ..common import NotifyImageSize
from ..utils import parse_list, parse_bool
from ..utils import validate_regex
diff --git a/libs/apprise/plugins/NotifyNotifico.py b/libs/apprise/plugins/notifico.py
index 27ce29a6e..5cb0d666e 100644
--- a/libs/apprise/plugins/NotifyNotifico.py
+++ b/libs/apprise/plugins/notifico.py
@@ -44,11 +44,11 @@
import re
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotificoFormat:
diff --git a/libs/apprise/plugins/NotifyNtfy.py b/libs/apprise/plugins/ntfy.py
index 40834eece..805b87260 100644
--- a/libs/apprise/plugins/NotifyNtfy.py
+++ b/libs/apprise/plugins/ntfy.py
@@ -41,18 +41,18 @@ from json import loads
from json import dumps
from os.path import basename
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyFormat
from ..common import NotifyType
from ..common import NotifyImageSize
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import is_hostname
from ..utils import is_ipaddr
from ..utils import validate_regex
-from ..URLBase import PrivacyMode
-from ..attachment.AttachBase import AttachBase
+from ..url import PrivacyMode
+from ..attachment.base import AttachBase
class NtfyMode:
diff --git a/libs/apprise/plugins/NotifyOffice365.py b/libs/apprise/plugins/office365.py
index 0c62279f9..b04f7a037 100644
--- a/libs/apprise/plugins/NotifyOffice365.py
+++ b/libs/apprise/plugins/office365.py
@@ -64,14 +64,14 @@ from datetime import datetime
from datetime import timedelta
from json import loads
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import is_email
from ..utils import parse_emails
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyOffice365(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyOneSignal.py b/libs/apprise/plugins/one_signal.py
index eb1e10f7a..76ec212f4 100644
--- a/libs/apprise/plugins/NotifyOneSignal.py
+++ b/libs/apprise/plugins/one_signal.py
@@ -37,14 +37,14 @@ import requests
from json import dumps
from itertools import chain
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyImageSize
from ..utils import validate_regex
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import is_email
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class OneSignalCategory:
diff --git a/libs/apprise/plugins/NotifyOpsgenie.py b/libs/apprise/plugins/opsgenie.py
index c2dfed232..5327ec803 100644
--- a/libs/apprise/plugins/NotifyOpsgenie.py
+++ b/libs/apprise/plugins/opsgenie.py
@@ -49,13 +49,13 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
from ..utils import is_uuid
from ..utils import parse_list
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class OpsgenieCategory(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyPagerDuty.py b/libs/apprise/plugins/pagerduty.py
index 0896b41b1..c9d555527 100644
--- a/libs/apprise/plugins/NotifyPagerDuty.py
+++ b/libs/apprise/plugins/pagerduty.py
@@ -34,13 +34,13 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..common import NotifyImageSize
from ..utils import validate_regex
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class PagerDutySeverity:
diff --git a/libs/apprise/plugins/NotifyPagerTree.py b/libs/apprise/plugins/pagertree.py
index c9290f2f7..8a041a358 100644
--- a/libs/apprise/plugins/NotifyPagerTree.py
+++ b/libs/apprise/plugins/pagertree.py
@@ -31,11 +31,11 @@ from json import dumps
from uuid import uuid4
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Actions
diff --git a/libs/apprise/plugins/NotifyParsePlatform.py b/libs/apprise/plugins/parseplatform.py
index 2a182ed31..cd59d0575 100644
--- a/libs/apprise/plugins/NotifyParsePlatform.py
+++ b/libs/apprise/plugins/parseplatform.py
@@ -30,10 +30,10 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Used to break path apart into list of targets
TARGET_LIST_DELIM = re.compile(r'[ \t\r\n,\\/]+')
diff --git a/libs/apprise/plugins/NotifyPopcornNotify.py b/libs/apprise/plugins/popcorn_notify.py
index 0ecd8af68..388aa2199 100644
--- a/libs/apprise/plugins/NotifyPopcornNotify.py
+++ b/libs/apprise/plugins/popcorn_notify.py
@@ -28,14 +28,14 @@
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_email
from ..utils import is_phone_no
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyPopcornNotify(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyProwl.py b/libs/apprise/plugins/prowl.py
index e5c07bf4e..c174615c0 100644
--- a/libs/apprise/plugins/NotifyProwl.py
+++ b/libs/apprise/plugins/prowl.py
@@ -28,10 +28,10 @@
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Priorities
diff --git a/libs/apprise/plugins/NotifyPushBullet.py b/libs/apprise/plugins/pushbullet.py
index 5e9c43fbf..8e006db1d 100644
--- a/libs/apprise/plugins/NotifyPushBullet.py
+++ b/libs/apprise/plugins/pushbullet.py
@@ -30,13 +30,13 @@ import requests
from json import dumps
from json import loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..utils import is_email
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
# Flag used as a placeholder to sending to all devices
PUSHBULLET_SEND_TO_ALL = 'ALL_DEVICES'
diff --git a/libs/apprise/plugins/NotifyPushDeer.py b/libs/apprise/plugins/pushdeer.py
index 6766dc7ff..fa888b159 100644
--- a/libs/apprise/plugins/NotifyPushDeer.py
+++ b/libs/apprise/plugins/pushdeer.py
@@ -29,9 +29,9 @@
import requests
from ..common import NotifyType
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Syntax:
# schan://{key}/
diff --git a/libs/apprise/plugins/NotifyPushed.py b/libs/apprise/plugins/pushed.py
index a50970f99..1ed83b9e4 100644
--- a/libs/apprise/plugins/NotifyPushed.py
+++ b/libs/apprise/plugins/pushed.py
@@ -31,12 +31,12 @@ import requests
from json import dumps
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Used to detect and parse channels
IS_CHANNEL = re.compile(r'^#?(?P<name>[A-Za-z0-9]+)$')
diff --git a/libs/apprise/plugins/NotifyPushjet.py b/libs/apprise/plugins/pushjet.py
index 253ac6818..f8dcfdf31 100644
--- a/libs/apprise/plugins/NotifyPushjet.py
+++ b/libs/apprise/plugins/pushjet.py
@@ -29,11 +29,11 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyPushjet(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyPushMe.py b/libs/apprise/plugins/pushme.py
index 30889f868..abbed7944 100644
--- a/libs/apprise/plugins/NotifyPushMe.py
+++ b/libs/apprise/plugins/pushme.py
@@ -28,12 +28,12 @@
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..utils import validate_regex
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyPushMe(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyPushover.py b/libs/apprise/plugins/pushover.py
index be6ada289..954e7dd0f 100644
--- a/libs/apprise/plugins/NotifyPushover.py
+++ b/libs/apprise/plugins/pushover.py
@@ -30,14 +30,14 @@ import re
import requests
from itertools import chain
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..conversion import convert_between
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
# Flag used as a placeholder to sending to all devices
PUSHOVER_SEND_TO_ALL = 'ALL_DEVICES'
diff --git a/libs/apprise/plugins/NotifyPushSafer.py b/libs/apprise/plugins/pushsafer.py
index 32cfa82fe..7bdca7a69 100644
--- a/libs/apprise/plugins/NotifyPushSafer.py
+++ b/libs/apprise/plugins/pushsafer.py
@@ -30,11 +30,11 @@ import base64
import requests
from json import loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class PushSaferSound:
diff --git a/libs/apprise/plugins/NotifyPushy.py b/libs/apprise/plugins/pushy.py
index 097017dac..bb2a24ecd 100644
--- a/libs/apprise/plugins/NotifyPushy.py
+++ b/libs/apprise/plugins/pushy.py
@@ -32,11 +32,11 @@ import requests
from itertools import chain
from json import dumps, loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Used to detect a Device and Topic
VALIDATE_DEVICE = re.compile(r'^@(?P<device>[a-z0-9]+)$', re.I)
diff --git a/libs/apprise/plugins/NotifyReddit.py b/libs/apprise/plugins/reddit.py
index 022a0a50d..3a60b5e03 100644
--- a/libs/apprise/plugins/NotifyReddit.py
+++ b/libs/apprise/plugins/reddit.py
@@ -53,14 +53,14 @@ from datetime import timedelta
from datetime import datetime
from datetime import timezone
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from .. import __title__, __version__
# Extend HTTP Error Messages
diff --git a/libs/apprise/plugins/NotifyRevolt.py b/libs/apprise/plugins/revolt.py
index ae0a43b10..1f518540b 100644
--- a/libs/apprise/plugins/NotifyRevolt.py
+++ b/libs/apprise/plugins/revolt.py
@@ -42,13 +42,13 @@ from datetime import timedelta
from datetime import datetime
from datetime import timezone
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import validate_regex
from ..utils import parse_list
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyRevolt(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyRocketChat.py b/libs/apprise/plugins/rocketchat.py
index 9011a5e71..973651e30 100644
--- a/libs/apprise/plugins/NotifyRocketChat.py
+++ b/libs/apprise/plugins/rocketchat.py
@@ -32,14 +32,14 @@ from json import loads
from json import dumps
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyImageSize
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
IS_CHANNEL = re.compile(r'^#(?P<name>[A-Za-z0-9_-]+)$')
IS_USER = re.compile(r'^@(?P<name>[A-Za-z0-9._-]+)$')
diff --git a/libs/apprise/plugins/NotifyRSyslog.py b/libs/apprise/plugins/rsyslog.py
index e39744627..9631c72fd 100644
--- a/libs/apprise/plugins/NotifyRSyslog.py
+++ b/libs/apprise/plugins/rsyslog.py
@@ -29,10 +29,10 @@
import os
import socket
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class syslog:
diff --git a/libs/apprise/plugins/NotifyRyver.py b/libs/apprise/plugins/ryver.py
index 0872f3e52..114dc6a0c 100644
--- a/libs/apprise/plugins/NotifyRyver.py
+++ b/libs/apprise/plugins/ryver.py
@@ -38,12 +38,12 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class RyverWebhookMode:
diff --git a/libs/apprise/plugins/NotifySendGrid.py b/libs/apprise/plugins/sendgrid.py
index b82e3e60d..d50839f17 100644
--- a/libs/apprise/plugins/NotifySendGrid.py
+++ b/libs/apprise/plugins/sendgrid.py
@@ -49,13 +49,13 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import is_email
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
SENDGRID_HTTP_ERROR_MAP = {
diff --git a/libs/apprise/plugins/NotifyServerChan.py b/libs/apprise/plugins/serverchan.py
index cf250cf5b..e3abaa354 100644
--- a/libs/apprise/plugins/NotifyServerChan.py
+++ b/libs/apprise/plugins/serverchan.py
@@ -30,9 +30,9 @@ import re
import requests
from ..common import NotifyType
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Register at https://sct.ftqq.com/
diff --git a/libs/apprise/plugins/NotifySES.py b/libs/apprise/plugins/ses.py
index b580b14d6..5a2c047a7 100644
--- a/libs/apprise/plugins/NotifySES.py
+++ b/libs/apprise/plugins/ses.py
@@ -95,13 +95,13 @@ from email.utils import formataddr
from email.header import Header
from urllib.parse import quote
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_emails
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from ..utils import is_email
# Our Regin Identifier
diff --git a/libs/apprise/plugins/NotifySignalAPI.py b/libs/apprise/plugins/signal_api.py
index b35b4989e..7e557133c 100644
--- a/libs/apprise/plugins/NotifySignalAPI.py
+++ b/libs/apprise/plugins/signal_api.py
@@ -31,13 +31,13 @@ import requests
from json import dumps
import base64
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
-from ..URLBase import PrivacyMode
-from ..AppriseLocale import gettext_lazy as _
+from ..url import PrivacyMode
+from ..locale import gettext_lazy as _
GROUP_REGEX = re.compile(
diff --git a/libs/apprise/plugins/NotifySimplePush.py b/libs/apprise/plugins/simplepush.py
index 3851e1e3c..10b01b0f8 100644
--- a/libs/apprise/plugins/NotifySimplePush.py
+++ b/libs/apprise/plugins/simplepush.py
@@ -30,11 +30,11 @@ from os import urandom
from json import loads
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
from base64 import urlsafe_b64encode
import hashlib
diff --git a/libs/apprise/plugins/NotifySinch.py b/libs/apprise/plugins/sinch.py
index 74b3c452a..06bd5b1e7 100644
--- a/libs/apprise/plugins/NotifySinch.py
+++ b/libs/apprise/plugins/sinch.py
@@ -39,13 +39,13 @@
import requests
import json
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class SinchRegion:
diff --git a/libs/apprise/plugins/NotifySlack.py b/libs/apprise/plugins/slack.py
index b66fe99f4..b929dfb46 100644
--- a/libs/apprise/plugins/NotifySlack.py
+++ b/libs/apprise/plugins/slack.py
@@ -78,7 +78,7 @@ from json import dumps
from json import loads
from time import time
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..common import NotifyFormat
@@ -86,7 +86,7 @@ from ..utils import is_email
from ..utils import parse_bool
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
SLACK_HTTP_ERROR_MAP = {
diff --git a/libs/apprise/plugins/NotifySMSEagle.py b/libs/apprise/plugins/smseagle.py
index 33b4af752..8eddca588 100644
--- a/libs/apprise/plugins/NotifySMSEagle.py
+++ b/libs/apprise/plugins/smseagle.py
@@ -32,14 +32,14 @@ from json import dumps, loads
import base64
from itertools import chain
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
-from ..URLBase import PrivacyMode
-from ..AppriseLocale import gettext_lazy as _
+from ..url import PrivacyMode
+from ..locale import gettext_lazy as _
GROUP_REGEX = re.compile(
diff --git a/libs/apprise/plugins/NotifySMSManager.py b/libs/apprise/plugins/smsmanager.py
index efc158b62..1d352daf2 100644
--- a/libs/apprise/plugins/NotifySMSManager.py
+++ b/libs/apprise/plugins/smsmanager.py
@@ -35,13 +35,13 @@
# 2. Generate an API key in web administration.
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class SMSManagerGateway(object):
diff --git a/libs/apprise/plugins/NotifySMTP2Go.py b/libs/apprise/plugins/smtp2go.py
index a34492d05..017da8111 100644
--- a/libs/apprise/plugins/NotifySMTP2Go.py
+++ b/libs/apprise/plugins/smtp2go.py
@@ -49,14 +49,14 @@ import base64
import requests
from json import dumps
from email.utils import formataddr
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..utils import parse_emails
from ..utils import parse_bool
from ..utils import is_email
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
SMTP2GO_HTTP_ERROR_MAP = {
429: 'To many requests.',
diff --git a/libs/apprise/plugins/NotifySNS.py b/libs/apprise/plugins/sns.py
index 5a287e37e..cc6e83076 100644
--- a/libs/apprise/plugins/NotifySNS.py
+++ b/libs/apprise/plugins/sns.py
@@ -36,13 +36,13 @@ from collections import OrderedDict
from xml.etree import ElementTree
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Topic Detection
# Summary: 256 Characters max, only alpha/numeric plus underscore (_) and
diff --git a/libs/apprise/plugins/NotifySparkPost.py b/libs/apprise/plugins/sparkpost.py
index 255db0709..b873d6b0e 100644
--- a/libs/apprise/plugins/NotifySparkPost.py
+++ b/libs/apprise/plugins/sparkpost.py
@@ -58,7 +58,7 @@ import requests
import base64
from json import loads
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..utils import is_email
@@ -66,7 +66,7 @@ from email.utils import formataddr
from ..utils import validate_regex
from ..utils import parse_emails
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Provide some known codes SparkPost uses and what they translate to:
# Based on https://www.sparkpost.com/docs/tech-resources/extended-error-codes/
diff --git a/libs/apprise/plugins/NotifyStreamlabs.py b/libs/apprise/plugins/streamlabs.py
index d1e4186a6..c534f1ba6 100644
--- a/libs/apprise/plugins/NotifyStreamlabs.py
+++ b/libs/apprise/plugins/streamlabs.py
@@ -38,10 +38,10 @@
#
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# calls
diff --git a/libs/apprise/plugins/NotifySynology.py b/libs/apprise/plugins/synology.py
index be58c0643..ed85f80c0 100644
--- a/libs/apprise/plugins/NotifySynology.py
+++ b/libs/apprise/plugins/synology.py
@@ -29,10 +29,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# For API Details see:
# https://kb.synology.com/en-au/DSM/help/Chat/chat_integration
diff --git a/libs/apprise/plugins/NotifySyslog.py b/libs/apprise/plugins/syslog.py
index 5540fc758..935111eea 100644
--- a/libs/apprise/plugins/NotifySyslog.py
+++ b/libs/apprise/plugins/syslog.py
@@ -28,10 +28,10 @@
import syslog
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class SyslogFacility:
diff --git a/libs/apprise/plugins/NotifyTechulusPush.py b/libs/apprise/plugins/techuluspush.py
index 4d0b99348..682bf088e 100644
--- a/libs/apprise/plugins/NotifyTechulusPush.py
+++ b/libs/apprise/plugins/techuluspush.py
@@ -53,10 +53,10 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Token required as part of the API request
# Used to prepare our UUID regex matching
diff --git a/libs/apprise/plugins/NotifyTelegram.py b/libs/apprise/plugins/telegram.py
index cce8af625..6b997f574 100644
--- a/libs/apprise/plugins/NotifyTelegram.py
+++ b/libs/apprise/plugins/telegram.py
@@ -59,15 +59,15 @@ import os
from json import loads
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyImageSize
from ..common import NotifyFormat
from ..utils import parse_bool
from ..utils import parse_list
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
TELEGRAM_IMAGE_XY = NotifyImageSize.XY_256
diff --git a/libs/apprise/plugins/NotifyThreema.py b/libs/apprise/plugins/threema.py
index c2ad82e2e..423c23124 100644
--- a/libs/apprise/plugins/NotifyThreema.py
+++ b/libs/apprise/plugins/threema.py
@@ -35,14 +35,14 @@
import requests
from itertools import chain
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import validate_regex
from ..utils import is_email
-from ..URLBase import PrivacyMode
+from ..url import PrivacyMode
from ..utils import parse_list
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class ThreemaRecipientTypes:
diff --git a/libs/apprise/plugins/NotifyTwilio.py b/libs/apprise/plugins/twilio.py
index 863b09a94..4205e37f0 100644
--- a/libs/apprise/plugins/NotifyTwilio.py
+++ b/libs/apprise/plugins/twilio.py
@@ -46,13 +46,13 @@
import requests
from json import loads
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyTwilio(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyTwist.py b/libs/apprise/plugins/twist.py
index fa26feb84..62d729f4f 100644
--- a/libs/apprise/plugins/NotifyTwist.py
+++ b/libs/apprise/plugins/twist.py
@@ -35,13 +35,13 @@ import requests
from json import loads
from itertools import chain
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyFormat
from ..common import NotifyType
from ..utils import parse_list
from ..utils import is_email
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# A workspace can also be interpreted as a team name too!
diff --git a/libs/apprise/plugins/NotifyTwitter.py b/libs/apprise/plugins/twitter.py
index 7a0813c1f..8000a8151 100644
--- a/libs/apprise/plugins/NotifyTwitter.py
+++ b/libs/apprise/plugins/twitter.py
@@ -36,14 +36,14 @@ from datetime import timezone
from requests_oauthlib import OAuth1
from json import dumps
from json import loads
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import parse_list
from ..utils import parse_bool
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
-from ..attachment.AttachBase import AttachBase
+from ..locale import gettext_lazy as _
+from ..attachment.base import AttachBase
IS_USER = re.compile(r'^\s*@?(?P<user>[A-Z0-9_]+)$', re.I)
diff --git a/libs/apprise/plugins/NotifyVoipms.py b/libs/apprise/plugins/voipms.py
index a023589a7..3a4e6d25f 100644
--- a/libs/apprise/plugins/NotifyVoipms.py
+++ b/libs/apprise/plugins/voipms.py
@@ -37,12 +37,12 @@
import requests
from json import loads
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import is_email
from ..utils import parse_phone_no
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyVoipms(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyVonage.py b/libs/apprise/plugins/vonage.py
index e9b1422ad..441a6ba6b 100644
--- a/libs/apprise/plugins/NotifyVonage.py
+++ b/libs/apprise/plugins/vonage.py
@@ -33,13 +33,13 @@
#
import requests
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyVonage(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyWebexTeams.py b/libs/apprise/plugins/webexteams.py
index c91864bad..bd0bdb577 100644
--- a/libs/apprise/plugins/NotifyWebexTeams.py
+++ b/libs/apprise/plugins/webexteams.py
@@ -63,11 +63,11 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..common import NotifyFormat
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Extend HTTP Error Messages
# Based on: https://developer.webex.com/docs/api/basics/rate-limiting
diff --git a/libs/apprise/plugins/NotifyWeComBot.py b/libs/apprise/plugins/wecombot.py
index 4289b39e9..ab6341718 100644
--- a/libs/apprise/plugins/NotifyWeComBot.py
+++ b/libs/apprise/plugins/wecombot.py
@@ -59,10 +59,10 @@ import re
import requests
from json import dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyWeComBot(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyWhatsApp.py b/libs/apprise/plugins/whatsapp.py
index 4ccbcbdaf..7120d736c 100644
--- a/libs/apprise/plugins/NotifyWhatsApp.py
+++ b/libs/apprise/plugins/whatsapp.py
@@ -44,12 +44,12 @@
import re
import requests
from json import loads, dumps
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import is_phone_no
from ..utils import parse_phone_no
from ..utils import validate_regex
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyWhatsApp(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyWindows.py b/libs/apprise/plugins/windows.py
index 207e0f221..746fcd1dd 100644
--- a/libs/apprise/plugins/NotifyWindows.py
+++ b/libs/apprise/plugins/windows.py
@@ -28,11 +28,11 @@
from time import sleep
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyImageSize
from ..common import NotifyType
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# Default our global support flag
NOTIFY_WINDOWS_SUPPORT_ENABLED = False
diff --git a/libs/apprise/plugins/NotifyXBMC.py b/libs/apprise/plugins/xbmc.py
index 7d4462e41..8006e1005 100644
--- a/libs/apprise/plugins/NotifyXBMC.py
+++ b/libs/apprise/plugins/xbmc.py
@@ -29,12 +29,12 @@
import requests
from json import dumps
-from .NotifyBase import NotifyBase
-from ..URLBase import PrivacyMode
+from .base import NotifyBase
+from ..url import PrivacyMode
from ..common import NotifyType
from ..common import NotifyImageSize
from ..utils import parse_bool
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
class NotifyXBMC(NotifyBase):
diff --git a/libs/apprise/plugins/NotifyZulip.py b/libs/apprise/plugins/zulip.py
index 54fe2d062..e829e6f6d 100644
--- a/libs/apprise/plugins/NotifyZulip.py
+++ b/libs/apprise/plugins/zulip.py
@@ -61,13 +61,13 @@
import re
import requests
-from .NotifyBase import NotifyBase
+from .base import NotifyBase
from ..common import NotifyType
from ..utils import parse_list
from ..utils import validate_regex
from ..utils import is_email
from ..utils import remove_suffix
-from ..AppriseLocale import gettext_lazy as _
+from ..locale import gettext_lazy as _
# A Valid Bot Name
VALIDATE_BOTNAME = re.compile(r'(?P<name>[A-Z0-9_-]{1,32})', re.I)
diff --git a/libs/apprise/URLBase.py b/libs/apprise/url.py
index 90ea85c66..39daec867 100644
--- a/libs/apprise/URLBase.py
+++ b/libs/apprise/url.py
@@ -35,8 +35,8 @@ from xml.sax.saxutils import escape as sax_escape
from urllib.parse import unquote as _unquote
from urllib.parse import quote as _quote
-from .AppriseLocale import gettext_lazy as _
-from .AppriseAsset import AppriseAsset
+from .locale import gettext_lazy as _
+from .asset import AppriseAsset
from .utils import urlencode
from .utils import parse_url
from .utils import parse_bool
@@ -744,7 +744,7 @@ class URLBase:
@staticmethod
def parse_url(url, verify_host=True, plus_to_space=False,
- strict_port=False):
+ strict_port=False, sanitize=True):
"""Parses the URL and returns it broken apart into a dictionary.
This is very specific and customized for Apprise.
@@ -765,7 +765,8 @@ class URLBase:
results = parse_url(
url, default_schema='unknown', verify_host=verify_host,
- plus_to_space=plus_to_space, strict_port=strict_port)
+ plus_to_space=plus_to_space, strict_port=strict_port,
+ sanitize=sanitize)
if not results:
# We're done; we failed to parse our url
diff --git a/libs/apprise/URLBase.pyi b/libs/apprise/url.pyi
index 915885745..915885745 100644
--- a/libs/apprise/URLBase.pyi
+++ b/libs/apprise/url.pyi
diff --git a/libs/apprise/utils.py b/libs/apprise/utils.py
index e1881f314..b33ec0749 100644
--- a/libs/apprise/utils.py
+++ b/libs/apprise/utils.py
@@ -541,7 +541,7 @@ def tidy_path(path):
return path
-def parse_qsd(qs, simple=False, plus_to_space=False):
+def parse_qsd(qs, simple=False, plus_to_space=False, sanitize=True):
"""
Query String Dictionary Builder
@@ -568,6 +568,8 @@ def parse_qsd(qs, simple=False, plus_to_space=False):
per normal URL Encoded defininition. Normal URL parsing applies
this, but `+` is very actively used character with passwords,
api keys, tokens, etc. So Apprise does not do this by default.
+
+ if sanitize is set to False, then kwargs are not placed into lowercase
"""
# Our return result set:
@@ -608,7 +610,7 @@ def parse_qsd(qs, simple=False, plus_to_space=False):
# Always Query String Dictionary (qsd) for every entry we have
# content is always made lowercase for easy indexing
- result['qsd'][key.lower().strip()] = val
+ result['qsd'][key.lower().strip() if sanitize else key] = val
if simple:
# move along
@@ -636,7 +638,7 @@ def parse_qsd(qs, simple=False, plus_to_space=False):
def parse_url(url, default_schema='http', verify_host=True, strict_port=False,
- simple=False, plus_to_space=False):
+ simple=False, plus_to_space=False, sanitize=True):
"""A function that greatly simplifies the parsing of a url
specified by the end user.
@@ -691,6 +693,8 @@ def parse_url(url, default_schema='http', verify_host=True, strict_port=False,
If the URL can't be parsed then None is returned
+ If sanitize is set to False, then kwargs are not placed in lowercase
+ and wrapping whitespace is not removed
"""
if not isinstance(url, str):
@@ -750,7 +754,8 @@ def parse_url(url, default_schema='http', verify_host=True, strict_port=False,
# while ensuring that all keys are lowercase
if qsdata:
result.update(parse_qsd(
- qsdata, simple=simple, plus_to_space=plus_to_space))
+ qsdata, simple=simple, plus_to_space=plus_to_space,
+ sanitize=sanitize))
# Now do a proper extraction of data; http:// is just substitued in place
# to allow urlparse() to function as expected, we'll swap this back to the
diff --git a/libs/version.txt b/libs/version.txt
index ccabf65cc..8ac12d74d 100644
--- a/libs/version.txt
+++ b/libs/version.txt
@@ -2,7 +2,7 @@
alembic==1.13.1
aniso8601==9.0.1
argparse==1.4.0
-apprise==1.7.6
+apprise==1.8.0
apscheduler<=3.10.4
attrs==23.2.0
blinker==1.7.0