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

Uploaded Source

Built Distribution

pyjon.events-1.1-py2.6.egg (6.1 kB view details)

Uploaded Egg

File details

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

File metadata

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

File hashes

Hashes for pyjon.events-1.1.tar.gz
Algorithm Hash digest
SHA256 71bfb4a3aaaef389fed20d335c554b46fdf451ebf6bacd45cef0a9fd5888029f
MD5 faa3d85f8ff4cb0da0a8567af70afda1
BLAKE2b-256 6a77a3414d93f69957f6063c8fbe910915b64b1729450b304a56ddea06bcbb66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyjon.events-1.1-py2.6.egg
Algorithm Hash digest
SHA256 97bbde4bba93b6ec971bf527dfae842fa9369f50024b62c5ae2b16e6200c09cc
MD5 f13642df893a73680f52b53e475fcad3
BLAKE2b-256 2a14ed3c8bbfbd4d86673781b8f65649630be568cc2ad50fcd019f29c41002c8

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