Skip to main content

A port of node.js's EventEmitter to python with mqtt topics support.

Project description

pyee
======

.. image:: https://travis-ci.org/eagleamon/pyee-topics.png
:target: https://travis-ci.org/eagleamon/pyee-topics

pyee supplies an ``EventEmitter`` object similar to the ``EventEmitter``
from Node.js.

There is also the possibility to use mqtt topic patterns to match events

Example:
--------

::

In [1]: from pyee import EventEmitter

In [2]: ee = EventEmitter()

In [3]: @ee.on('event')
...: def event_handler():
...: print 'BANG BANG'
...:

In [4]: ee.emit('event')
BANG BANG

In [5]:

In [6]: ee.on('a/+/c', lambda ...)

Easy-peasy.


Installation:
-------------

::

sudo pip install pyee

Methods:
--------

**ee.on(event, f=None)**: Registers the function ``f`` to the event name
``event``. Example::

ee.on('data', some_fxn)

If ``f`` is not specified, ``ee.on`` returns a function that takes ``f`` as a
callback, which allows for decorator styles::

@ee.on('data')
def data_handler(data):
print data

**ee.emit(event, *args, **kwargs)**: Emits the event, calling the attached functions
with ``*args``. For example::

ee.emit('data', '00101001')

This will call ``data('00101001')'`` (assuming ``data`` is an attached function).
Returns ``False`` if no functions are attached to handle the emission (otherwise ``True``).

**ee.once(event, f=None)**: The same as ``ee.on``, except that the listener
is automatically removed after it's called.

**ee.remove_listener(event, fxn)**: Removes the function ``fxn`` from ``event``.
Requires that the function is not closed over by ``ee.on`` (using this with the
decorator style is unfortunately not possible).

**ee.remove_all_listeners(event)**: Removes all listeners from ``event``.

**ee.listeners(event)**: Returns the array of all listeners registered to
the given ``event``.


(Special) Events:
-------

**"new_listener"**: Fires whenever a new listener is created. Listeners for this
event do not fire upon their own creation.

**"error"**: When emitted raises an Exception by default, behavior can be overriden by
attaching callback to the event. For example::

@ee.on('error')
def onError(message):
logging.err(message)

ee.emit('error', Exception('something blew up'))

Tests:
------

::

nosetests

License:
--------

MIT.

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

pyee-topics-0.0.13.tar.gz (4.8 kB view details)

Uploaded Source

File details

Details for the file pyee-topics-0.0.13.tar.gz.

File metadata

  • Download URL: pyee-topics-0.0.13.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyee-topics-0.0.13.tar.gz
Algorithm Hash digest
SHA256 680a651a40e4c0547b7cd252c6f37f6eb53a6fe95cd769c53c66adc3ffff4539
MD5 031b5b3a98692bcdf645288245a4b982
BLAKE2b-256 5efa109f0d5a0116bac4bc3999e5dda56e7c1b34bea5800c410a63445b2ae346

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