emitter.py
A neat event emitter for Python 3.
$ pip install emitter.py
Quick Use
from emitter import Emitter
emitter = Emitter()
emitter.on("event", print)
emitter.emit("event", "data1", "data2")
API Overview
emitter.on(event, listener[, once]): bool
-
emitter.once(event, listener): bool
emitter.emit(event[, *args][, **kwargs]): bool
emitter.off([event][, listener]): bool
emitter.events(): set
emitter.listeners(event): list
emitter.on(event, listener[, once])
emitter.on("click", listener1)
emitter.on("click", listener2, True) # triggered only once
emitter.once(event, listener)
emitter.once("click", listener)
# equivalent
emitter.on("click", listener, True)
emitter.emit(event[, *args][, **kwargs])
# emit event with no data
emitter.emit("click")
# emit event with data
emitter.emit("click", 28, y=72)
emitter.off([event][, listener])
# remove all the events
emitter.off()
# remove all "click" listeners
emitter.off("click")
# remove a specific listener
emitter.off("click", listener1)
emitter.events()
emitter.events()
# => {event1, event2}
emitter.listeners(event)
emitter.listeners(event1)
# => [listener1, listener2]
Special Events
Emitter.ERROR
If a listener throws an error, the Emitter.ERROR
event is emitted.
You can register error handlers for this event to be notified.
The first argument passed to the handler is the sys.exc_info()
error.
def error_handler(error, *args, **kwargs):
...
emitter.on(Emitter.ERROR, error_handler)
Tests
PyTest is used for tests. Python 2 is not supported.
Install PyTest
$ pip install pytest
Test
$ py.test test/*
# or to be sure to use python3
$ py.test-3 test/*