def __call__(self, call):
class ConcreteHook(Hook):
- def __call__(self, dispatcher, instance):
- return call(self=dispatcher, instance=instance)
+ def __call__(self, dispatcher, instance, *args, **kwargs):
+ return call(self=dispatcher, instance=instance,
+ *args, **kwargs)
return ConcreteHook(*tuple(self))
class Dispatcher(metaclass=DispatcherMeta):
- def __call__(self, instance):
+ def __call__(self, instance, *args, **kwargs):
for typeid in instance.__class__.__mro__:
hook = self.__class__.dispatch(typeid=typeid)
if hook is not None:
break
if hook is None:
hook = self.__class__.dispatch()
- return hook(dispatcher=self, instance=instance)
+ return hook(dispatcher=self, instance=instance, *args, **kwargs)
@Hook(object)
- def dispatch_object(self, instance):
+ def dispatch_object(self, instance, *args, **kwargs):
raise NotImplementedError()