Skip to main content

Implements EventEmitter using gevent

Project description

Latest version released on PyPi Test coverage Build status of master branch

This module implements EventEmitter with gevent.

Installation

To install the latest release from pypi:

pip install gevent-eventemitter

Usage

EventEmitter can be used as mixin, or on it’s own. Here is an example as mixin:

from eventemitter import EventEmitter

class MyClass(EventEmitter):
    pass

instance = MyClass()

Registering a callback

def do_stuff():
    print "Hello world!"

instance.on('my event', do_stuff)

instance.emit('my event')

Or as decorator

@instance.on('my event')
def do_stuff():
    print "Hello world!"

With once the callback will be called, you guessed it, only once.

@instance.once('my event')
def do_stuff(var):
    print "Hello %s!" % var

instance.emit('my event', 'Earth')  # arguments can be passed along events
instance.emit('my event')  # do_stuff won't be called
It’s possible to block wait for an event.

If there are event arguments they will be returned as a tuple

my_args = instance.wait_event('my event')
my_args = instance.wait_event('my event', timeout=5)  # wait at most 5seconds

On timeout wait_event will return None, or raise gevent.Timeout if raises=True

my_args = instance.wait_event('my event', timeout=5)
if my_args is None:
    print "Timeout!"

try:
    my_args = instance.wait_event('my event', timeout=5, raises=True)
except gevent.Timeout:
    print "Timeout!"

To remove a callback, or all callbacks.

instance.remove_listener('my event', do_stuff)
instance.remove_all_listeners()                 # absolutely all listeners
instance.remove_all_listeners('my event')       # all listners for the event

Listening for None event will result in catching all events.

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

gevent-eventemitter-2.1.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gevent_eventemitter-2.1-py2.py3-none-any.whl (5.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file gevent-eventemitter-2.1.tar.gz.

File metadata

  • Download URL: gevent-eventemitter-2.1.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/34.3.2 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.1

File hashes

Hashes for gevent-eventemitter-2.1.tar.gz
Algorithm Hash digest
SHA256 00e6e688c6a255f7bdcef1d8c999e0d02d9ab87d3c6ff626e6dc1a09762107f4
MD5 45b50814265d14369635a1cb6a8ee628
BLAKE2b-256 1f569e449b380f1e8cf19bedb4564e61a79dcf3971e6204ef08885d5816a9fe9

See more details on using hashes here.

File details

Details for the file gevent_eventemitter-2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: gevent_eventemitter-2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/34.3.2 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.1

File hashes

Hashes for gevent_eventemitter-2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 30605a9fbb1f38b2511f188a2e7a1b4e9262f3c13bf810ac5b79cc0ba2900ff7
MD5 996ed5368dd734dc2a55beef9c071a5f
BLAKE2b-256 c7f547f896511ca1fb5dd6e9fa1ba152f9ccc3f892f4d31c8757cfe36c248c8e

See more details on using hashes here.

Supported by

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