Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
liiight/notifiers: The easy way to send notifications

liiight/notifiers: The easy way to send notifications

20 hours ago

!Full logo

Tests</a> PyPi version</a> Supported Python versions</a> License</a> Status</a> Docker image</a> RTD</a> Paypal</a> PyPI Downloads</a> pre-commit</a> X (formerly Twitter) Follow</a>

See changelog for recent changes

Got an app or service, and you want to enable your users to use notifications with their provider of choice? Working on a script and you want to receive notification based on its output? You don't need to implement a solution yourself, or use individual provider libs. A one stop shop for all notification providers with a unified and simple interface.

Supported providers

Pushover, SimplePush, Slack, Gmail, Email (SMTP), Telegram, Pushbullet, Join, Zulip, Twilio, Pagerduty, Mailgun, StatusPage.io, iCloud, VictorOps (Splunk), Notify

Advantages

  • Spend your precious time on your own code base, instead of chasing down 3rd party provider APIs. That's what we're here for!
  • With a minimal set of well known and stable dependencies (requests, pydantic and click) you're better off than installing 3rd party SDKs.
  • A unified interface means that you already support any new providers that will be added, no more work needed!
  • Thorough testing means protection against any breaking API changes. We make sure your code your notifications will always get delivered!

Installation

Requires Python 3.10 or newer.

As a library, add it to your project with uv:

$ uv add notifiers

To use the CLI, run it with uvx without installing anything:

$ uvx notifiers --help
Or install the notifiers command once:
$ uv tool install notifiers

Via pip:

$ pip install notifiers
Via homebrew:
$ brew install notifiers
Or run the CLI with Docker:
$ docker run --rm ghcr.io/liiight/notifiers pushover notify --user foo --token baz "This is so easy!"

Basic Usage

>>> from notifiers import get_notifier
>>> p = get_notifier('pushover')
>>> p.required
{'required': ['user', 'message', 'token']}
>>> p.notify(user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

Or:

>>> from notifiers import notify
>>> notify('pushover', user='foo', token='bar', message='test')
<Response,provider=Pushover,status=Success, errors=None>

From CLI

$ uvx notifiers pushover notify --user foo --token baz "This is so easy!"

Or, after uv tool install notifiers:

$ notifiers pushover notify --user foo --token baz "This is so easy!"

As a logger

Directly add to your existing stdlib logging:

>>> import logging
>>> from notifiers.logging import NotificationHandler

>>> log = logging.getLogger(__name__)

>>> defaults = { 'token': 'foo', 'user': 'bar' } >>> hdlr = NotificationHandler('pushover', defaults=defaults) >>> hdlr.setLevel(logging.ERROR)

>>> log.addHandler(hdlr) >>> log.error('And just like that, you get notified about all your errors!')

Mentions

Road map

  • Many more providers!
  • Low level providers (Amazon SNS, Google FCM, OS Toast messages) via extra dependencies
See Docs for more information

Donations

If you like this and want to buy me a cup of coffee, please click the donation button above or click this link ☕

Code of Conduct

Everyone interacting in the Notifiers project's codebases, issue trackers and chat rooms is expected to follow the PyPA Code of Conduct.

Chat with me