Skip to main content

ix-notifiers

A python library for sending one notification to several services at once.

Install

pip install ix-notifiers

Usage

Build a core, register the notifiers you want, then send. notify() returns True when at least one channel accepted the notification.

from ix_notifiers import IxNotifiers

notifiers = IxNotifiers()

# Each keyword is prefixed with the name of the notifier it belongs to. The prefix is
# stripped before the notifier sees it, so `gotify_token` arrives as `token`.
notifiers.register(
    "gotify",
    gotify_url="https://gotify.example.com",
    gotify_token="your-application-token",
    gotify_default_priority=5,
)
notifiers.register("null")

notifiers.notify(title="Deploy", message="finished")

Every core holds its own registry, so two cores in one process do not see each other's notifiers. Registering a name no notifier answers to logs a warning and registers nothing.

Notifiers

Discovery is by filename: every *_notifier.py in the package is available under the name in front of _notifier.

gotify

Posts to a Gotify server's /message endpoint.

Parameter Mandatory Default Description
gotify_url yes - base URL of the Gotify server
gotify_token yes - application token, kept out of the logs
gotify_content_type no text/markdown content type of the message body
gotify_default_priority no 0 priority for messages that carry none

send() accepts title, message, priority and content_type. A field that is not given is left out of the request, and content_type overrides the default for that one message. A priority that will not convert to an integer is logged and the message is sent without one.

null

Logs the notification at info level and reports success. Useful for a dry run.

Writing a notifier

Add a <name>_notifier.py to the package with a Notifier subclass, a params declaration and a module-level start:

from typing import Any, ClassVar

from .notifier import Notifier


class WebhookNotifier(Notifier):
    """Posts a notification to a webhook."""

    params: ClassVar[dict[str, dict[str, Any]]] = {
        "url": {"mandatory": True, "type": "string"},
        "secret": {"mandatory": True, "redact": True, "type": "string"},
        "timeout": {"default": 10, "type": "integer"},
    }

    def send(self, **kwargs: Any) -> bool:
        """Sends the notification and reports whether it was accepted."""
        ...


start = WebhookNotifier.start

Each parameter declares a type of boolean, integer or string, and optionally mandatory, default and redact. The base class resolves them into self.settings:

  • a mandatory parameter has to be present, and a supplied 0, False or "" counts as present
  • an optional parameter falls back to its default, or to None where it declares none
  • a value of the wrong declared type is rejected, and an integer parameter rejects a boolean
  • a parameter marked redact has its value masked out of anything the notifier logs through self.redact()

Logging

Every module logs to the ix-notifiers logger and attaches no handler of its own, so the application decides where the records go.

Contributing

See CONTRIBUTING.md. Every change has to pass ruff check, ruff format --check, pylint and the test suite at 100% statement and branch coverage.

Metadata

Release files for ix-notifiers 2.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ix-notifiers 2.0.16
File Size Uploaded
ix_notifiers-2.0.16.tar.gz 11.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ix-notifiers 2.0.16
File Interpreter ABI Platform
ix_notifiers-2.0.16-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / ix_notifiers-2.0.16.tar.gz

Download URL ix_notifiers-2.0.16.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3bfb9a60ce669ad896545587b4f8476dd2b968c69ab47e74a14263824e20c069
BLAKE2b-256 checksum
How to use checksums
13222811c022620748638da0d0428ab9c183a8fc9ac7a44a7a73306a05b589f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.14.7 Linux/7.0.0-31-generic

Release files / ix_notifiers-2.0.16-py3-none-any.whl

Download URL ix_notifiers-2.0.16-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a08e7c0b0e57a4e049a8529495c1b93d637566a86117798a1617a0ef23685fef
BLAKE2b-256 checksum
How to use checksums
8bee9ca771876b290674770e37d9c99a64a4f3f2d5772a64881f8fc285c0fca8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.14.7 Linux/7.0.0-31-generic

Release history Release notifications | RSS feed

2.0.23

2 release files

2.0.22

2 release files

2.0.19

2 release files

2.0.18

2 release files

2.0.17

2 release files

This release

2.0.16 This release

2 release files

2.0.15

2 release files

2.0.14

2 release files

2.0.13

2 release files

2.0.10

2 release files

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.41

2 release files

1.0.40

2 release files

1.0.39

2 release files

1.0.37

2 release files

1.0.36

2 release files

1.0.35

2 release files

1.0.32

2 release files

1.0.31

2 release files

1.0.30

2 release files

1.0.29

2 release files

1.0.28

2 release files

1.0.27

2 release files

1.0.26

2 release files

1.0.25

2 release files

1.0.24

2 release files

1.0.21

2 release files

1.0.20

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.5.24

1 release file

0.5.23

1 release file

0.5.22

1 release file

0.5.21

1 release file

0.5.20

1 release file

0.5.19

1 release file

0.5.18

1 release file

0.5.17

1 release file

0.5.16

1 release file

0.5.15

1 release file

0.5.14

1 release file

0.5.13

1 release file

0.5.12

1 release file

0.5.11

1 release file

0.5.10

1 release file

0.5.9

1 release file

0.5.8

1 release file

0.5.7

1 release file

0.5.6

1 release file

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page