Metadata-Version: 2.1
Name: classy-events
Version: 0.3.1
Summary: Pythonic event-driven programming.
Home-page: https://github.com/jorenham/classy-events/
Author: Joren Hammudoglu
License: UNKNOWN
Description: # Classy Events
        
        Pythonic event-driven programming.
        
        ## Dependencies
        
        Python 3.8, 3.9
        
        ## Install
        
        ```bash
        pip install classy-events
        ```
        
        ## Usage
        
        The main ingredient is an *event handler* instance:
        
        ```python
        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!
        
        ```python
        @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:
        
        ```jupyterpython
        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:
        
        ```python
        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:
        
        ```python
        event_handler.dispatch("classy_spam", value="the classiest")
        ```
        
        And we see the output `on 'Spam.spam': 'the classiest'`.
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: POSIX
Requires-Python: >=3.8.0
Description-Content-Type: text/markdown
