Typing: Add mypy for theaudiodb (#1522)
authorJc2k <john.carr@unrouted.co.uk>
Wed, 24 Jul 2024 22:13:56 +0000 (23:13 +0100)
committerGitHub <noreply@github.com>
Wed, 24 Jul 2024 22:13:56 +0000 (00:13 +0200)
music_assistant/server/models/provider.py
music_assistant/server/providers/theaudiodb/__init__.py
mypy.ini

index 0d23cda09549af6190de4a93a51fc749db60daac..3e6358639db42ec6656f48ffe02a33198797aea1 100644 (file)
@@ -6,7 +6,6 @@ import logging
 from typing import TYPE_CHECKING, Any
 
 from music_assistant.constants import CONF_LOG_LEVEL, MASS_LOGGER_NAME
-from music_assistant.server.helpers.throttle_retry import ThrottlerManager
 
 if TYPE_CHECKING:
     from zeroconf import ServiceStateChange
@@ -21,8 +20,6 @@ if TYPE_CHECKING:
 class Provider:
     """Base representation of a Provider implementation within Music Assistant."""
 
-    throttler: ThrottlerManager  # optional throttler
-
     def __init__(
         self, mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
     ) -> None:
index ccde5cb52a71d4e72793ef89ad2672b6da76727b..61c3d72ca9f8219b7ad22440bdfa7c1df8ae880f 100644 (file)
@@ -3,7 +3,7 @@
 from __future__ import annotations
 
 from json import JSONDecodeError
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING, Any, cast
 
 import aiohttp.client_exceptions
 from asyncio_throttle import Throttler
@@ -19,9 +19,10 @@ from music_assistant.common.models.media_items import (
     MediaItemLink,
     MediaItemMetadata,
     Track,
+    UniqueList,
 )
 from music_assistant.server.controllers.cache import use_cache
-from music_assistant.server.helpers.app_vars import app_var  # pylint: disable=no-name-in-module
+from music_assistant.server.helpers.app_vars import app_var  # type: ignore[attr-defined]
 from music_assistant.server.helpers.compare import compare_strings
 from music_assistant.server.models.metadata_provider import MetadataProvider
 
@@ -199,7 +200,7 @@ class AudioDbMetadataProvider(MetadataProvider):
         else:
             metadata.description = artist_obj.get("strBiographyEN")
         # images
-        metadata.images = []
+        metadata.images = UniqueList()
         for key, img_type in IMG_MAPPING.items():
             for postfix in ("", "2", "3", "4", "5", "6", "7", "8", "9", "10"):
                 if img := artist_obj.get(f"{key}{postfix}"):
@@ -245,7 +246,7 @@ class AudioDbMetadataProvider(MetadataProvider):
             metadata.description = album_obj.get("strDescriptionEN")
         metadata.review = album_obj.get("strReview")
         # images
-        metadata.images = []
+        metadata.images = UniqueList()
         for key, img_type in IMG_MAPPING.items():
             for postfix in ("", "2", "3", "4", "5", "6", "7", "8", "9", "10"):
                 if img := album_obj.get(f"{key}{postfix}"):
@@ -279,7 +280,7 @@ class AudioDbMetadataProvider(MetadataProvider):
         else:
             metadata.description = track_obj.get("strDescriptionEN")
         # images
-        metadata.images = []
+        metadata.images = UniqueList([])
         for key, img_type in IMG_MAPPING.items():
             for postfix in ("", "2", "3", "4", "5", "6", "7", "8", "9", "10"):
                 if img := track_obj.get(f"{key}{postfix}"):
@@ -296,7 +297,7 @@ class AudioDbMetadataProvider(MetadataProvider):
         return metadata
 
     @use_cache(86400 * 30)
-    async def _get_data(self, endpoint, **kwargs) -> dict | None:
+    async def _get_data(self, endpoint: str, **kwargs: Any) -> dict[str, Any] | None:
         """Get data from api."""
         url = f"https://theaudiodb.com/api/v1/json/{app_var(3)}/{endpoint}"
         async with (
@@ -304,7 +305,7 @@ class AudioDbMetadataProvider(MetadataProvider):
             self.mass.http_session.get(url, params=kwargs, ssl=False) as response,
         ):
             try:
-                result = await response.json()
+                result = cast(dict[str, Any], await response.json())
             except (
                 aiohttp.client_exceptions.ContentTypeError,
                 JSONDecodeError,
index 777b60a03126c5fc3b8378e0d6b5a4fceccc11a3..fef884fca5e088d92b10ef9dd21ebf78b598cc95 100644 (file)
--- a/mypy.ini
+++ b/mypy.ini
@@ -21,4 +21,4 @@ disallow_untyped_decorators = true
 disallow_untyped_defs = true
 warn_return_any = true
 warn_unreachable = true
-packages=tests,music_assistant.client,music_assistant.common,music_assistant.server.providers.builtin,music_assistant.server.providers.filesystem_local,music_assistant.server.providers.filesystem_smb,music_assistant.server.providers.fully_kiosk,music_assistant.server.providers.jellyfin,music_assistant.server.providers.plex,music_assistant.server.providers.radiobrowser,music_assistant.server.providers.test
+packages=tests,music_assistant.client,music_assistant.common,music_assistant.server.providers.builtin,music_assistant.server.providers.filesystem_local,music_assistant.server.providers.filesystem_smb,music_assistant.server.providers.fully_kiosk,music_assistant.server.providers.jellyfin,music_assistant.server.providers.plex,music_assistant.server.providers.radiobrowser,music_assistant.server.providers.test,music_assistant.server.providers.theaudiodb