From fc9092cfa232367da58cadfea347dd8d1a20e30b Mon Sep 17 00:00:00 2001 From: Marvin Schenkel Date: Sat, 31 Jan 2026 09:14:06 +0100 Subject: [PATCH] Fix deprecation warnings for asyncio.iscoroutinefunction (#3054) Fix deprecation warnings for asyncio.iscoroutinefunciton. --- music_assistant/controllers/webserver/controller.py | 3 ++- .../controllers/webserver/websocket_client.py | 3 ++- music_assistant/helpers/logging.py | 3 +-- music_assistant/mass.py | 9 +++++---- music_assistant/providers/snapcast/socket_server.py | 3 ++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/music_assistant/controllers/webserver/controller.py b/music_assistant/controllers/webserver/controller.py index 7bb9a805..27603e04 100644 --- a/music_assistant/controllers/webserver/controller.py +++ b/music_assistant/controllers/webserver/controller.py @@ -10,6 +10,7 @@ from __future__ import annotations import asyncio import hashlib import html +import inspect import os import urllib.parse from collections.abc import Awaitable, Callable @@ -575,7 +576,7 @@ class WebserverController(CoreController): if hasattr(result, "__anext__"): # handle async generator (for really large listings) result = [item async for item in result] - elif asyncio.iscoroutine(result): + elif inspect.iscoroutine(result): result = await result return web.json_response(result, dumps=json_dumps) except Exception as e: diff --git a/music_assistant/controllers/webserver/websocket_client.py b/music_assistant/controllers/webserver/websocket_client.py index 610d9e08..12700149 100644 --- a/music_assistant/controllers/webserver/websocket_client.py +++ b/music_assistant/controllers/webserver/websocket_client.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio +import inspect import logging from concurrent import futures from contextlib import suppress @@ -238,7 +239,7 @@ class WebsocketClientHandler: ) items = [] result = items - elif asyncio.iscoroutine(result): + elif inspect.iscoroutine(result): result = await result await self._send_message(SuccessResultMessage(msg.message_id, result)) except Exception as err: diff --git a/music_assistant/helpers/logging.py b/music_assistant/helpers/logging.py index 21362471..97116c3d 100644 --- a/music_assistant/helpers/logging.py +++ b/music_assistant/helpers/logging.py @@ -9,7 +9,6 @@ All rights reserved. from __future__ import annotations -import asyncio import inspect import logging import logging.handlers @@ -130,7 +129,7 @@ def catch_log_exception( check_func = check_func.func wrapper_func: Callable[..., None] | Callable[..., Coroutine[Any, Any, None]] - if asyncio.iscoroutinefunction(check_func): + if inspect.iscoroutinefunction(check_func): async_func = cast("Callable[..., Coroutine[Any, Any, None]]", func) @wraps(async_func) diff --git a/music_assistant/mass.py b/music_assistant/mass.py index 4c7ebe7c..00d90486 100644 --- a/music_assistant/mass.py +++ b/music_assistant/mass.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio +import inspect import logging import os import pathlib @@ -412,7 +413,7 @@ class MusicAssistant: continue if not (id_filter is None or object_id in id_filter): continue - if asyncio.iscoroutinefunction(cb_func): + if inspect.iscoroutinefunction(cb_func): if TYPE_CHECKING: cb_func = cast("Callable[[MassEvent], Coroutine[Any, Any, None]]", cb_func) self.create_task(cb_func, event_obj) @@ -466,10 +467,10 @@ class MusicAssistant: return existing self.verify_event_loop_thread("create_task") - if asyncio.iscoroutinefunction(target): + if inspect.iscoroutinefunction(target): # coroutine function task = self.loop.create_task(target(*args, **kwargs)) - elif asyncio.iscoroutine(target): + elif inspect.iscoroutine(target): # coroutine task = self.loop.create_task(target) elif callable(target): @@ -526,7 +527,7 @@ class MusicAssistant: self._tracked_timers.pop(task_id) self.create_task(_target, *args, task_id=task_id, abort_existing=True, **kwargs) - if asyncio.iscoroutinefunction(target) or asyncio.iscoroutine(target): + if inspect.iscoroutinefunction(target) or inspect.iscoroutine(target): # coroutine function if TYPE_CHECKING: target = cast("Coroutine[Any, Any, _R]", target) diff --git a/music_assistant/providers/snapcast/socket_server.py b/music_assistant/providers/snapcast/socket_server.py index 04c5a2cf..3f744a52 100644 --- a/music_assistant/providers/snapcast/socket_server.py +++ b/music_assistant/providers/snapcast/socket_server.py @@ -7,6 +7,7 @@ and Music Assistant, avoiding the need to expose the WebSocket API to the contro from __future__ import annotations import asyncio +import inspect import json import logging from contextlib import suppress @@ -169,7 +170,7 @@ class SnapcastSocketServer: # Execute the handler result = handler.target(**args) - if asyncio.iscoroutine(result): + if inspect.iscoroutine(result): result = await result return result -- 2.34.1