Fix cyclic import in Chromecast Provider (#2296)
authorMaxim Raznatovski <nda.mr43@gmail.com>
Mon, 4 Aug 2025 14:45:30 +0000 (16:45 +0200)
committerGitHub <noreply@github.com>
Mon, 4 Aug 2025 14:45:30 +0000 (16:45 +0200)
#2249 introduced a cyclic import resulting in an `ImportError: cannot import name 'ChromecastProvider' from partially initialized module` on launch.

There are still many `Cyclic detected in import chain` errors reported by pyright, but at least they are not causing runtime issues due to being in `TYPE_CHECKING` blocks.

music_assistant/providers/chromecast/player.py

index e0e5570410e8c2f25aba7add96d9dbac644cec14..980fd3fad6d442086e48f3a71f7a029439efe3da 100644 (file)
@@ -4,7 +4,7 @@ from __future__ import annotations
 
 import asyncio
 import time
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING, Any, cast
 from uuid import UUID
 
 from music_assistant_models.enums import MediaType, PlaybackState, PlayerFeature, PlayerType
@@ -38,7 +38,7 @@ if TYPE_CHECKING:
     from pychromecast.controllers.receiver import CastStatus
     from pychromecast.socket_client import ConnectionStatus
 
-from .provider import ChromecastProvider
+    from .provider import ChromecastProvider
 
 
 class ChromecastPlayer(Player):
@@ -502,8 +502,7 @@ class ChromecastPlayer(Player):
 
             if new_available and self.type == PlayerType.PLAYER:
                 # Poll current group status
-                provider = self.provider
-                assert isinstance(provider, ChromecastProvider)  # for type checking
+                provider = cast("ChromecastProvider", self.provider)
                 mz_mgr = provider.mz_mgr
                 assert mz_mgr is not None  # for type checking
                 for group_uuid in mz_mgr.get_multizone_memberships(self.cast_info.uuid):