Skip to main content

Simple event library built on top of Blinker

Project description

Event Handling with Blink

Event handling library built on top of Blinker.

Why use it instead of blink

Pi-Blink is a different pardigm and a different way of handling events. So if Blink makes more sense then you should certainly use it. In the Pi-Blink paradigm events are created which can be listened, and modified, across your application.

Some other benefits are Priority-Based Event Handling: This script introduces the concept of event priorities, allowing you to specify the order in which event listeners should be executed. This can be useful when you have multiple listeners for the same event and need to control their execution sequence.

Installation

You can install pi-blink via pip:

pip install pi-blink

Basic Usage

Import

from pi_blink import blink

Create an event to listen to. This can be a class or primitive though classes are encouraged.

class MathEvent:
    def __init__(self, value: int):
        self.value = value

Set up listeners for the event.

@blink.listener(MathEvent)
def add3(event: MathEvent):
    event.value += 3


@blink.listener(MathEvent)
def multiply2(event: MathEvent):
    event.value *= 2

Create and send an event

e = MathEvent(1)
blink.send(e)
assert e.value == 8

Examples

Basic Example

from pi_blink import blink

class EventA:
    def __init__(self):
        self.order = []


@blink.listener(EventA)
def handle_event_a1(event : EventA):
    event.order.append("a1")


@blink.listener(EventA)
def handle_event_a2(event : EventA):
    event.order.append("a2")


if __name__ == "__main__":
    event_a = EventA()
    blink.send(event_a)
    assert event_a.order == ["a1", "a2"]

Basic Example with Priority

from pi_blink import blink

class EventA:
    def __init__(self):
        self.order = []


@blink.listener(EventA)
def handle_event_a1(event : EventA):
    event.order.append("a1")


@blink.listener(EventA, EventPriority.EARLY)
def handle_event_a2(event : EventA):
    event.order.append("a2")


if __name__ == "__main__":
    event_a = EventA()
    blink.send(event_a)
    assert event_a.order == ["a2", "a1"]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pi_blink-1.0.3.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

pi_blink-1.0.3-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page