Metadata-Version: 2.1
Name: visitoolkit-eventsystem
Version: 0.1.5
Summary:  minimalistic event system (a bag of handlers) 
Home-page: https://github.com/stefanbraun-private/visitoolkit_eventsystem
Author: Stefan Braun
Author-email: sbraun@datacomm.ch
License: GPL-3.0
Description: # visitoolkit_eventsystem
        minimalistic event system  
        
        **Installation via pip**   
        https://pypi.org/project/visitoolkit-eventsystem   
        *(runs on Python 3)*  
        
        
        ## description
        Registered handlers (a bag of handlers) getting called when event gets fired  
        using ideas from "axel events" https://github.com/axel-events/axel  
        and "event system" from http://www.valuedlessons.com/2008/04/events-in-python.html
        
        ## usage
        ```python
        from visitoolkit_eventsystem import eventsystem
        
        # handlers are callback functions in your code,
        # when firing an event visitoolkit_eventsystem will call them with the given argument(s)
        def cb1(event_id, *arg, **args):
            if event_id > 0:
                # handle event...
                return True
            else:
                return False
        
        # Default is synchronous execution of handlers (blocking main thread, collecting all results)
        # sync_mode=False means asynchronous execution of handlers (one background thread calls all handlers) 
        # =>Details about flag "exc_info"(default is True): https://docs.python.org/3/library/sys.html#sys.exc_info
        # =>Flag "traceback" (default is False) controls verbosity of error_info when an exception occurred
        es = eventsystem.EventSystem(sync_mode=True)
        
        # adding or removing handlers in list-like syntax
        es += cb1
        
        #The execution result is returned as a list containing all results per handler having this structure:
        #  exec_result = [
        #      (True, result, handler),        # on success
        #      (False, error_info, handler),   # on error
        #      (None, None, handler), ...      # asynchronous execution
        #  ]
        
        # firing event
        result = es(42)
        ```
        
        Increasing logging level for bughunting:
        ```python
        import logging
        logging.getLogger('visitoolkit_eventsystem').setLevel(logging.DEBUG)
        ```
        
        ## background information
        **visitoolkit_eventsystem** is used in **visitoolkit_connector** as core part of **visitoolkit**. 
        
        **visitoolkit** is written for the proprietary Building and Process Management System
        'ProMoS NT' (c) MST Systemtechnik AG'  
        (also known as 'Saia Visi.Plus' (c) Saia-Burgess Controls AG) 
        
        Intention:  
        Support creator of visualisation projects...  
        Add efficiency...  
        Reduce manual error-prone processes...  
        Add missing features...
        
        Disclaimer: Use 'visitoolkit' at your own risk!
        
Platform: UNKNOWN
Description-Content-Type: text/markdown
