keis / smoke

concise publish/subscribe utility
MIT License
0 stars 0 forks source link

smoke

.. image:: https://img.shields.io/pypi/v/smoke.svg?style=flat :target: https://pypi.python.org/pypi?name=smoke&:action=display

.. image:: https://img.shields.io/travis/keis/smoke.svg?style=flat :target: http://travis-ci.org/keis/smoke

.. image:: https://img.shields.io/coveralls/keis/smoke.svg?style=flat :target: https://coveralls.io/r/keis/smoke?branch=master

A concise Publish/Subscribe utility module. It supports both free-form signal names and a stricter style where signals are declared first. You can also mix them.

Usage

.. code:: python

import smoke

class MyCls(smoke.Broker):
    appears = smoke.signal('appears')
    leaves = smoke.signal('leaves')

def say_hello(what):
    print("hello %s" % (what,))

def say_goodbye(what):
    print("good bye %s" % (what,))

# Using broker
o = MyCls()
o.subscribe("appears", say_hello)
o.publish("appears", what='world')

# Using declared signals
o = MyCls()
o.leaves.subscribe(say_goodbye)
o.leaves.publish(what='world')

# Mixing
o = MyCls()
o.subscribe("appears", say_hello)
o.appears.publish()