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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: classy-events-0.3.3.tar.gz
  • Upload date:
  • Size: 9.8 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.3.tar.gz
Algorithm Hash digest
SHA256 25c044aad0a178adf4debdccee34b519359763d096d3ab1f38c71d737942ed04
MD5 56f3a2af00822258deff2905d2db579b
BLAKE2b-256 3aa395da85920c8cf1273d950cb0401ef0c6a7a1cdc31858be417c0d44fd3694

See more details on using hashes here.

File details

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

File metadata

  • Download URL: classy_events-0.3.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 18d4478d87af804ba96f82db7f2b54a0ed9d2448e1803ffced504165e48f40a3
MD5 990e1d0fd28065956ea705025400626b
BLAKE2b-256 64c1e0f583495eb37e6353b39b44f99bdcf4d392142ea7bd11743222e1b545d0

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