1"""
2Top-level functionality related to message listeners.
3"""
4
5"""
6:copyright: Copyright since 2006 by Oliver Schoenborn, all rights reserved.
7:license: BSD, see LICENSE_BSD_Simple.txt for details.
8"""
9
10from .callables import (
11    getID,
12    getArgs,
13    getRawFunction,
14    ListenerMismatchError,
15    CallArgsInfo
16)
17
18from .listenerimpl import (
19    Listener,
20    ListenerValidator
21)
22
23class IListenerExcHandler:
24    """
25    Interface class base class for any handler given to pub.setListenerExcHandler()
26    Such handler is called whenever a listener raises an exception during a
27    pub.sendMessage(). Example::
28
29        from pubsub import pub
30
31        class MyHandler(pub.IListenerExcHandler):
32            def __call__(self, listenerID, topicObj):
33                ... do something with listenerID ...
34
35        pub.setListenerExcHandler(MyHandler())
36    """
37    def __call__(self, listenerID, topicObj):
38        raise NotImplementedError('%s must override __call__()' % self.__class__)
39
40
41