From: OzGav Date: Mon, 3 Nov 2025 00:15:54 +0000 (+1000) Subject: Typing fixes for the Radio media controller (#2574) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=5456cbbbbdecbd175f8aa7e2885cbc20c3a770de;p=music-assistant-server.git Typing fixes for the Radio media controller (#2574) --- diff --git a/music_assistant/controllers/media/radio.py b/music_assistant/controllers/media/radio.py index 3ceb02ec..f29783bd 100644 --- a/music_assistant/controllers/media/radio.py +++ b/music_assistant/controllers/media/radio.py @@ -3,6 +3,7 @@ from __future__ import annotations import asyncio +from typing import TYPE_CHECKING from music_assistant_models.enums import MediaType from music_assistant_models.media_items import Radio, Track @@ -13,6 +14,9 @@ from music_assistant.helpers.json import serialize_to_json from .base import MediaControllerBase +if TYPE_CHECKING: + from music_assistant import MusicAssistant + class RadioController(MediaControllerBase[Radio]): """Controller managing MediaItems of type Radio.""" @@ -21,9 +25,9 @@ class RadioController(MediaControllerBase[Radio]): media_type = MediaType.RADIO item_cls = Radio - def __init__(self, *args, **kwargs) -> None: + def __init__(self, mass: MusicAssistant) -> None: """Initialize class.""" - super().__init__(*args, **kwargs) + super().__init__(mass) # register (extra) api handlers api_base = self.api_base self.mass.register_api_command(f"music/{api_base}/radio_versions", self.versions) @@ -52,10 +56,11 @@ class RadioController(MediaControllerBase[Radio]): all_versions.pop(prov_version.item_id, None) # return the aggregated result - return all_versions.values() + return list(all_versions.values()) - async def _add_library_item(self, item: Radio) -> int: + async def _add_library_item(self, item: Radio, overwrite_existing: bool = False) -> int: """Add a new item record to the database.""" + assert self.mass.music.database is not None # For type checking db_id = await self.mass.music.database.insert( self.db_table, { @@ -65,7 +70,9 @@ class RadioController(MediaControllerBase[Radio]): "metadata": serialize_to_json(item.metadata), "external_ids": serialize_to_json(item.external_ids), "search_name": create_safe_string(item.name, True, True), - "search_sort_name": create_safe_string(item.sort_name, True, True), + "search_sort_name": create_safe_string( + item.sort_name if item.sort_name is not None else "", True, True + ), }, ) # update/set provider_mappings table @@ -84,6 +91,7 @@ class RadioController(MediaControllerBase[Radio]): match = {"item_id": db_id} name = update.name if overwrite else cur_item.name sort_name = update.sort_name if overwrite else cur_item.sort_name or update.sort_name + assert self.mass.music.database is not None # For type checking await self.mass.music.database.update( self.db_table, match, @@ -96,7 +104,7 @@ class RadioController(MediaControllerBase[Radio]): update.external_ids if overwrite else cur_item.external_ids ), "search_name": create_safe_string(name, True, True), - "search_sort_name": create_safe_string(sort_name, True, True), + "search_sort_name": create_safe_string(sort_name or "", True, True), }, ) # update/set provider_mappings table diff --git a/pyproject.toml b/pyproject.toml index bc92363a..d0cc178e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -132,7 +132,13 @@ enable_error_code = [ exclude = [ '^music_assistant/controllers/cache.py$', '^music_assistant/controllers/config.py$', - '^music_assistant/controllers/media/.*$', + '^music_assistant/controllers/media/albums.py*$', + '^music_assistant/controllers/media/artists.py*$', + '^music_assistant/controllers/media/audiobooks.py*$', + '^music_assistant/controllers/media/base.py*$', + '^music_assistant/controllers/media/playlists.py*$', + '^music_assistant/controllers/media/podcasts.py*$', + '^music_assistant/controllers/media/tracks.py*$', '^music_assistant/controllers/music.py$', '^music_assistant/controllers/player_queues.py$', '^music_assistant/controllers/streams.py$',