Skip to main content

Event dispatching for the people :)

Project description

What is it ?

Pyjon.Events is an easy-to-use event dispatcher metaclass for your objects : Just add it to any of your class, and you can add event listeners and dispatch events.

You can define arguments passed to your listener when you add it. You can also define argument passed to the listener when emiting an event.

Example

For our example, we will define a person class. Just import the module, and add it to your class:

from pyjon.events import EventDispatcher

class Person(object):
    __metaclass__ = EventDispatcher

    def __init__(self, name):
        # just a sample initialization, you can do whatever you want, of course.
        self.name = name

    def run(self, meters=1):
        print "I'm running for %d meters !" % meters
        self.emit_event('ran', meters)
        self.emit_event('moved', meters=meters)

    def walk(self, meters=1):
        print "I'm walking for %d meters !" % meters
        self.emit_event('walked', meters)
        self.emit_event('moved', meters=meters)

    def sleep(self):
        print "sleeping..."
        self.emit_event('sleeping')
        time.sleep(5)
        self.emit_event('sleeped')
        print "Wow... had a good night !"

Now, let’s instanciate our class and subscribe to events:

>>> henry = Person('henry')

>>> def handle_movement(meters=None):
...     print "he moved for %d meters" % meters

>>> def handle_person_movement(who, meters=None):
...     print "%s moved for %d meters" % (who, meters)

>>> henry.add_listener('moved', handle_movement)

>>> henry.add_listener('moved', handle_person_movement, "henry")

>>> henry.walk(5)
I'm walking for 5 meters !
he moved for 5 meters
henry moved for 5 meters

>>> def handle_advanced_movement(meters, who, movement_type):
...     print "%s %s for %d meters" % (who, movement_type, meters)

>>> henry.add_listener('walked', handle_advanced_movement, "henry", "walked")

>>> henry.add_listener('ran', handle_advanced_movement, "henry", "ran")

>>> henry.walk(5)
I'm walking for 5 meters !
henry walked for 5 meters
he moved for 5 meters
henry moved for 5 meters

>>> henry.run(5)
I'm running for 5 meters !
henry ran for 5 meters
he moved for 5 meters
henry moved for 5 meters

That’s simple isn’t it ?

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

pyjon.events-1.0.zip (5.2 kB view details)

Uploaded Source

Built Distribution

pyjon.events-1.0-py2.5.egg (5.5 kB view details)

Uploaded Egg

File details

Details for the file pyjon.events-1.0.zip.

File metadata

  • Download URL: pyjon.events-1.0.zip
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyjon.events-1.0.zip
Algorithm Hash digest
SHA256 df8548f41acc397749e5292b039734d1f9a788c9d04a1df64236fdc619e483e8
MD5 6e9847a1fede49c8750ea7f9aa900da6
BLAKE2b-256 aa67dbaf94eeba5b426bbc673c3074bf5c1ec003a3b3a2b1c359e5f7e2deaff1

See more details on using hashes here.

File details

Details for the file pyjon.events-1.0-py2.5.egg.

File metadata

File hashes

Hashes for pyjon.events-1.0-py2.5.egg
Algorithm Hash digest
SHA256 8b82dab903b15093ab6dddde8992394714c7fcbfc8474ac1c80f5d1ef9a6af68
MD5 4e0fc7b91e7a77422983acab51dfb5bb
BLAKE2b-256 17b2c331ca3e3b20ea5106a7a696c485a267da823de0296a8382887be62beefd

See more details on using hashes here.

Supported by

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