Skip to main content

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 (Python2 example):

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 !"

For Python3, just replace this:

class Person(object):
    __metaclass__ = EventDispatcher

with this:

class Person(metaclass = EventDispatcher):

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

1.1 - First public release

  • Support of events with keyword arguments

  • Added documentation

1.1.1 - Bugfix release

  • MANIFEST.in fix

  • Docs fixes

1.2 - Python 3 compatible !

  • Now works with Python 3 !

Metadata

Release files for pyjon.events 1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyjon.events 1.2
File Size Uploaded
pyjon.events-1.2.tar.gz 3.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyjon.events 1.2
File Interpreter ABI Platform
pyjon.events-1.2-py3.4.egg Legacy Egg format - - Details
pyjon.events-1.2-py2.7.egg Legacy Egg format - - Details

Total release size: 16.8 kB

Release files / pyjon.events-1.2.tar.gz

Download URL pyjon.events-1.2.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
190f6085bdc4f1b9ea78282a5b93a5afae6bc81cc87b8885c27c27712a361d31
BLAKE2b-256 checksum
How to use checksums
3b5c9119de43a3bd65cd52970994eb74e2d7cb4df1c72836930e75c0cfed0b18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / pyjon.events-1.2-py3.4.egg

Download URL pyjon.events-1.2-py3.4.egg
Size 6.6 kB
Tags Egg
SHA-256 checksum
How to use checksums
c82a5c52cd2bfeb2b79aaee1f417efd670087f3a0aaf53de970cb8b95bc8dc47
BLAKE2b-256 checksum
How to use checksums
264caee0a035747a53addd3331efcac8d9bc5525c9cd019cf51283ceee37c5ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / pyjon.events-1.2-py2.7.egg

Download URL pyjon.events-1.2-py2.7.egg
Size 6.3 kB
Tags Egg
SHA-256 checksum
How to use checksums
f8c20b3ca0b17c3448aaf29dcf3fb9e2baf6bf1d4d9c001e84549adc70cd1498
BLAKE2b-256 checksum
How to use checksums
4122570cc7003da280cdf324ae5d7bf2bcb55d59467fe35b29a2d3a829832b39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.2 This release

3 release files

1.2dev

1.1.1

2 release files

1.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page