From: Dmitry Selyutin Date: Tue, 20 Jun 2023 18:16:50 +0000 (+0300) Subject: dispatcher: support args and kwargs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=262a6b5f1363358be5ed1ff051625429dae9cfbe;p=mdis.git dispatcher: support args and kwargs --- diff --git a/src/mdis/dispatcher.py b/src/mdis/dispatcher.py index a23cd02..7add027 100644 --- a/src/mdis/dispatcher.py +++ b/src/mdis/dispatcher.py @@ -33,8 +33,9 @@ class Hook(object): 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)) @@ -81,15 +82,15 @@ class DispatcherMeta(type): 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()