Skip to main content

Pythonic event-driven programming.

Project description

Classy Events

Pythonic event-driven programming.

Dependencies

Python 3.8, 3.9

Install

pip install classy-events

Usage

The main ingredient is an event handler instance:

from classy_events import EventHandler
event_handler = EventHandler()

You can register event listeners for events of any type. In this example we use string events. An event listener is a callable, like a function or a method. The registered event handlers for a specific event are called if that event is dispatched by the event handler. Any keyword arguments that accompany the event are passed to the event listeners.

Function listeners

The listener for the event "spam", no callbacks needed!

@event_handler.on("spam")
def spam(value):
    print(f"on 'spam': '{value}'")

When the "spam" event is dispatched from anywhere in the code, def spam will be called:

event_handler.dispatch("spam", value="ham and eggs")

Now on 'spam': 'ham and eggs' is printed.

Classy listeners

To use instance methods as listeners, only one extra step is needed:

class Spam:
    def __init__(self):
        event_handler.bind(self)

    @event_handler.on("classy_spam")
    def spam(self, value):
        print(f"on '{type(self).__name__}.spam': '{value}'")

spam_instance = Spam()

In __init__, the instance is bound to the handler. Note that this event_handler.bind call is not required to be within the __init__.

To see this in action, we dispatch the "classy_spam" event:

event_handler.dispatch("classy_spam", value="the classiest")

And we see the output on 'Spam.spam': 'the classiest'.

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

classy-events-0.3.2.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

classy_events-0.3.2-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file classy-events-0.3.2.tar.gz.

File metadata

  • Download URL: classy-events-0.3.2.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.8.6

File hashes

Hashes for classy-events-0.3.2.tar.gz
Algorithm Hash digest
SHA256 e375eadc8e40af0c3c7eaf069f236212bfb839abc9453d529dd170b4a7c55a1e
MD5 599cbe2d6901232c38fba99897c65ab3
BLAKE2b-256 ce6186bfee10a2fcd1eea21713fa412029e69e2639ceae324f58ec21c64ade56

See more details on using hashes here.

File details

Details for the file classy_events-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: classy_events-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.8.6

File hashes

Hashes for classy_events-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4f9deb9e089e282db1079a69d58d7461e0818d87675210d709b008f65d673c71
MD5 56f15d566f60e5ea471d8d807f01d239
BLAKE2b-256 c031702d02a5e5b28eac21d6bed39f89aaa42216416d81395e93efee93e9e9a1

See more details on using hashes here.

Supported by

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