%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3/dist-packages/zope/event/ |
Upload File : |
"""Class-based event handlers A light-weight event-handler framework based on event classes. Handlers are registered for event classes: >>> import zope.event.classhandler >>> class MyEvent(object): ... def __repr__(self): ... return self.__class__.__name__ >>> def handler1(event): ... print("handler1 %r" % event) >>> zope.event.classhandler.handler(MyEvent, handler1) Descriptor syntax: >>> @zope.event.classhandler.handler(MyEvent) ... def handler2(event): ... print("handler2 %r" % event) >>> class MySubEvent(MyEvent): ... pass >>> @zope.event.classhandler.handler(MySubEvent) ... def handler3(event): ... print("handler3 %r" % event) Subscribers are called in class method-resolution order, so only new-style event classes are supported, and then by order of registry. >>> import zope.event >>> zope.event.notify(MySubEvent()) handler3 MySubEvent handler1 MySubEvent handler2 MySubEvent """ import zope.event registry = {} def handler(event_class, handler_=None, decorator=False): """Define an event handler for a (new-style) class. This can be called with a class and a handler, or with just a class and the result used as a handler decorator. """ if handler_ is None: return lambda func: handler(event_class, func, True) if not registry: zope.event.subscribers.append(dispatch) if event_class not in registry: registry[event_class] = [handler_] else: registry[event_class].append(handler_) if decorator: return handler def dispatch(event): for event_class in event.__class__.__mro__: for handler in registry.get(event_class, ()): handler(event)