##// END OF EJS Templates
Attempt to remove backcall. (#14216)...
Matthias Bussonnier -
r28471:d55e23e1 merge
parent child Browse files
Show More
@@ -13,8 +13,6 b' events and the arguments which will be passed to them.'
13 13 This API is experimental in IPython 2.0, and may be revised in future versions.
14 14 """
15 15
16 from backcall import callback_prototype
17
18 16
19 17 class EventManager(object):
20 18 """Manage a collection of events and a sequence of callbacks for each.
@@ -63,23 +61,14 b' class EventManager(object):'
63 61 """
64 62 if not callable(function):
65 63 raise TypeError('Need a callable, got %r' % function)
66 callback_proto = available_events.get(event)
67 64 if function not in self.callbacks[event]:
68 self.callbacks[event].append(callback_proto.adapt(function))
65 self.callbacks[event].append(function)
69 66
70 67 def unregister(self, event, function):
71 68 """Remove a callback from the given event."""
72 69 if function in self.callbacks[event]:
73 70 return self.callbacks[event].remove(function)
74 71
75 # Remove callback in case ``function`` was adapted by `backcall`.
76 for callback in self.callbacks[event]:
77 try:
78 if callback.__wrapped__ is function:
79 return self.callbacks[event].remove(callback)
80 except AttributeError:
81 pass
82
83 72 raise ValueError('Function {!r} is not registered as a {} callback'.format(function, event))
84 73
85 74 def trigger(self, event, *args, **kwargs):
@@ -100,9 +89,8 b' class EventManager(object):'
100 89 available_events = {}
101 90
102 91 def _define_event(callback_function):
103 callback_proto = callback_prototype(callback_function)
104 available_events[callback_function.__name__] = callback_proto
105 return callback_proto
92 available_events[callback_function.__name__] = callback_function
93 return callback_function
106 94
107 95 # ------------------------------------------------------------------------------
108 96 # Callback prototypes
@@ -76,16 +76,3 b' class CallbackTests(unittest.TestCase):'
76 76 self.em.trigger('ping_received')
77 77 self.assertEqual([True, True, False], invoked)
78 78 self.assertEqual([func3], self.em.callbacks['ping_received'])
79
80 def test_ignore_event_arguments_if_no_argument_required(self):
81 call_count = [0]
82 def event_with_no_argument():
83 call_count[0] += 1
84
85 self.em.register('event_with_argument', event_with_no_argument)
86 self.em.trigger('event_with_argument', 'the argument')
87 self.assertEqual(call_count[0], 1)
88
89 self.em.unregister('event_with_argument', event_with_no_argument)
90 self.em.trigger('ping_received')
91 self.assertEqual(call_count[0], 1)
@@ -30,7 +30,6 b' python_requires = >=3.9'
30 30 zip_safe = False
31 31 install_requires =
32 32 appnope; sys_platform == "darwin"
33 backcall
34 33 colorama; sys_platform == "win32"
35 34 decorator
36 35 exceptiongroup; python_version<'3.11'
General Comments 0
You need to be logged in to leave comments. Login now