Skip to content

etissieres/PyEventEmitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyEventEmitter

Python events library, heavily inspired by Node.js' EventEmitter.

Installation

$ pip install PyEventEmitter

How to use

The library provides an EventEmitter class. This class let you bind listeners to events and trigger events.

import event_emitter as events

em = events.EventEmitter()

def hello(who):
    print('Hello {}'.format(who))

em.on('hello', hello)
em.emit('hello', who='World')  # prints Hello World

You can also use on decorator :

import event_emitter as events

em = events.EventEmitter()

@events.on(emitter=em, event='hello')
def hello(who):
    print('Hello {}'.format(who))

em.emit('hello', who='World')  # prints Hello World

Using once instead of on may be usefull if you want your listener to be called once :

import event_emitter as events

em = events.EventEmitter()

def hello(who):
    print('Hello {}'.format(who))

em.once('hello', hello)
em.emit('hello', who='World')  # prints Hello World
em.emit('hello', who='World')  # nothing happens

Of course, there is also a decorator for this :

import event_emitter as events

em = events.EventEmitter()

@events.once(emitter=em, event='hello')
def hello(who):
    print('Hello {}'.format(who))

em.emit('hello', who='World')  # prints Hello World

You can remove a listener bound to an event :

import event_emitter as events

em = events.EventEmitter()

def hello(who):
    print('Hello {}'.format(who))

em.on('hello', hello)
em.remove('hello', hello)
em.emit('hello', who='World')  # nothing happens

Please note that this method will remove at moste one listener from the list. If the same listener was bound multiple times to the event, this method has to be invoked multiple times to remove all the occurences.

You can also remove all listeners bound to an event thanks to remove_all.

The count method returns the number of listeners bound to an event :

import event_emitter as events

em = events.EventEmitter()

def hello(who):
    print('Hello {}'.format(who))

em.on('hello', hello)
print(em.count('hello'))  # prints 1

About

Simple python events library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages