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

Uploaded Source

Built Distribution

classy_events-0.3.4-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: classy-events-0.3.4.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for classy-events-0.3.4.tar.gz
Algorithm Hash digest
SHA256 3160f5b4e8acaee3b1d1c86843096fbba83b1401e5be5bf4a8e13cdb1530abd4
MD5 8f03745165ce13c089dd635ef8bca47f
BLAKE2b-256 4fec6195500a1b470ef2bfa0ae0899b19afaac9fe429d1142ea56cd13cca4ba2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: classy_events-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5

File hashes

Hashes for classy_events-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f87aa6bbe553530bc97aa300d3f8456cfe5cac10bf889cfbfdf47f6bd7357a60
MD5 530357e5b5595b7221f098c55a2f33fd
BLAKE2b-256 a0dfc9ed838fe45ff3485ff9a993b0d043eca7e83ba73ef1f7f021a562d50810

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