Skip to main content

Pyjon.Events is an easy-to-use event dispatcher

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 ?

Changelog

1.0 - Unreleased

  • Initial release

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.1.1.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

pyjon.events-1.1.1-py2.6.egg (6.2 kB view details)

Uploaded Egg

File details

Details for the file pyjon.events-1.1.1.tar.gz.

File metadata

  • Download URL: pyjon.events-1.1.1.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyjon.events-1.1.1.tar.gz
Algorithm Hash digest
SHA256 e2330af0921cd5b75a6874f169616eddcbfc6f70e5aa9ee9d218b681bb2269c2
MD5 ed8a630dd6e3e80d56e737a4922d0db8
BLAKE2b-256 1a5f10c609fac41bd6c0c27ceec8abb43dc990add5d0fd526be251bcb5b6026b

See more details on using hashes here.

File details

Details for the file pyjon.events-1.1.1-py2.6.egg.

File metadata

File hashes

Hashes for pyjon.events-1.1.1-py2.6.egg
Algorithm Hash digest
SHA256 7b7384928a14bd9e79a1ae45db9b00f0455557b4d32bcda831a830669920f7d8
MD5 e1544b27df8c08bcc405acc507167636
BLAKE2b-256 b80413551c5dbb9029663d68f57e25d5521ae8406df1a6649007f56b986c44b4

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