A minimalist event emitter for Python 3.


Keywords
emitter, py, event, python, 3, python3
License
Other
Install
pip install emitter.py==7.0.2

Documentation

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/*