From 61f493ed316392888cd81df9d9a243995b4c4eee Mon Sep 17 00:00:00 2001 From: Tim-Oliver Husser Date: Mon, 15 Aug 2022 13:21:18 +0200 Subject: [PATCH] added possibility to decorate async methods with @method --- dbus_next/service.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dbus_next/service.py b/dbus_next/service.py index b2a96cf..ceec6a9 100644 --- a/dbus_next/service.py +++ b/dbus_next/service.py @@ -90,10 +90,17 @@ def decorator(fn): def wrapped(*args, **kwargs): fn(*args, **kwargs) - fn_name = name if name else fn.__name__ - wrapped.__dict__['__DBUS_METHOD'] = _Method(fn, fn_name, disabled=disabled) + @wraps(fn) + async def async_wrapped(*args, **kwargs): + await fn(*args, **kwargs) - return wrapped + fn_name = name if name else fn.__name__ + if asyncio.iscoroutinefunction(fn): + async_wrapped.__dict__["__DBUS_METHOD"] = _Method(fn, fn_name, disabled=disabled) + return async_wrapped + else: + wrapped.__dict__["__DBUS_METHOD"] = _Method(fn, fn_name, disabled=disabled) + return wrapped return decorator