mit neuen venv und exe-Files
This commit is contained in:
33
venv3_12/Lib/site-packages/zope/event/__init__.py
Normal file
33
venv3_12/Lib/site-packages/zope/event/__init__.py
Normal file
@@ -0,0 +1,33 @@
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2004 Zope Foundation and Contributors.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# This software is subject to the provisions of the Zope Public License,
|
||||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
|
||||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
|
||||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
##############################################################################
|
||||
""" Base event system implementation
|
||||
|
||||
"""
|
||||
|
||||
#: Applications may register for notification of events by appending a
|
||||
#: callable to the ``subscribers`` list.
|
||||
#:
|
||||
#: Each subscriber takes a single argument, which is the event object
|
||||
#: being published.
|
||||
#:
|
||||
#: Exceptions raised by subscribers will be propagated *without* running
|
||||
#: any remaining subscribers.
|
||||
subscribers = []
|
||||
|
||||
|
||||
def notify(event):
|
||||
""" Notify all subscribers of ``event``.
|
||||
"""
|
||||
for subscriber in subscribers:
|
||||
subscriber(event)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
76
venv3_12/Lib/site-packages/zope/event/classhandler.py
Normal file
76
venv3_12/Lib/site-packages/zope/event/classhandler.py
Normal file
@@ -0,0 +1,76 @@
|
||||
"""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):
|
||||
... pass
|
||||
|
||||
>>> def handler1(event):
|
||||
... print("handler1 %r" % event.__class__.__name__)
|
||||
|
||||
>>> zope.event.classhandler.handler(MyEvent, handler1)
|
||||
|
||||
Descriptor syntax:
|
||||
|
||||
>>> @zope.event.classhandler.handler(MyEvent)
|
||||
... def handler2(event):
|
||||
... print("handler2 %r" % event.__class__.__name__)
|
||||
|
||||
>>> class MySubEvent(MyEvent):
|
||||
... pass
|
||||
|
||||
>>> @zope.event.classhandler.handler(MySubEvent)
|
||||
... def handler3(event):
|
||||
... print("handler3 %r" % event.__class__.__name__)
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
__all__ = [
|
||||
'handler',
|
||||
]
|
||||
|
||||
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)
|
||||
64
venv3_12/Lib/site-packages/zope/event/tests.py
Normal file
64
venv3_12/Lib/site-packages/zope/event/tests.py
Normal file
@@ -0,0 +1,64 @@
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2004 Zope Foundation and Contributors.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# This software is subject to the provisions of the Zope Public License,
|
||||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
|
||||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
|
||||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
##############################################################################
|
||||
""" Test the event system
|
||||
"""
|
||||
import doctest
|
||||
import unittest
|
||||
|
||||
|
||||
class Test_notify(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
from zope.event import subscribers
|
||||
self._old_subscribers = subscribers[:]
|
||||
subscribers[:] = []
|
||||
|
||||
def tearDown(self):
|
||||
from zope.event import subscribers
|
||||
subscribers[:] = self._old_subscribers
|
||||
|
||||
def _callFUT(self, event):
|
||||
from zope.event import notify
|
||||
notify(event)
|
||||
|
||||
def test_empty(self):
|
||||
event = object()
|
||||
self._callFUT(event)
|
||||
|
||||
def test_not_empty(self):
|
||||
from zope.event import subscribers
|
||||
dummy = []
|
||||
subscribers.append(dummy.append)
|
||||
event = object()
|
||||
self._callFUT(event)
|
||||
self.assertEqual(dummy, [event])
|
||||
|
||||
|
||||
def setUpClassHandlers(test):
|
||||
import zope.event
|
||||
test.globs['old_subs'] = zope.event.subscribers
|
||||
|
||||
|
||||
def tearDownClassHandlers(test):
|
||||
import zope.event
|
||||
zope.event.subscribers = test.globs['old_subs']
|
||||
|
||||
|
||||
def test_suite():
|
||||
return unittest.TestSuite((
|
||||
unittest.defaultTestLoader.loadTestsFromName(__name__),
|
||||
doctest.DocTestSuite(
|
||||
'zope.event.classhandler',
|
||||
setUp=setUpClassHandlers, tearDown=tearDownClassHandlers)
|
||||
))
|
||||
Reference in New Issue
Block a user