fixes for dataclass json encoding
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 15 Sep 2020 23:11:39 +0000 (01:11 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 15 Sep 2020 23:11:39 +0000 (01:11 +0200)
music_assistant/__main__.py
music_assistant/config.py
music_assistant/models/config_entry.py
music_assistant/models/media_types.py
music_assistant/models/player.py
music_assistant/models/player_queue.py
music_assistant/models/streamdetails.py

index befb278769fd33402a3d22500424abae7de5dae2..3e7f1637ac7b59f459692a5a4519cae1e8da5eb9 100755 (executable)
@@ -2,8 +2,6 @@
 import argparse
 import logging
 import os
-import platform
-import webbrowser
 
 from aiorun import run
 from music_assistant.mass import MusicAssistant
@@ -58,10 +56,6 @@ def main():
 
     mass = MusicAssistant(data_dir)
 
-    # run UI in browser on windows and macos only
-    if platform.system() in ["Windows", "Darwin"]:
-        webbrowser.open(mass.web.internal_url)
-
     def on_shutdown(loop):
         logger.info("shutdown requested!")
         loop.run_until_complete(mass.async_stop())
index b82264e40ab6e6152f329c13d1acbef5b2893209..fb2072cb37ec855307d3b79bc8fad3bc36b45d97 100755 (executable)
@@ -160,9 +160,9 @@ class ConfigItem:
 
     def __repr__(self):
         """Print class."""
-        return f"{OrderedDict}({self.items()})"
+        return f"{OrderedDict}({self.to_dict()})"
 
-    def items(self) -> dict:
+    def to_dict(self) -> dict:
         """Return entire config as dict."""
         result = OrderedDict()
         for entry in self.get_config_entries():
index 0b000318064688cc1456175b8f4799d608151d78..d4dd4442506030db5383f3d0c3f0be3704e6b074 100644 (file)
@@ -2,7 +2,7 @@
 
 from dataclasses import dataclass, field
 from enum import Enum
-from typing import Any, List, Optional, Tuple
+from typing import Any, List, Tuple
 
 from mashumaro import DataClassDictMixin
 
@@ -25,13 +25,13 @@ class ConfigEntry(DataClassDictMixin):
 
     entry_key: str
     entry_type: ConfigEntryType
-    default_value: Optional[Any] = None
+    default_value: Any = None
     values: List[Any] = field(default_factory=list)  # select from list of values
     range: Tuple[Any] = ()  # select values within range
-    description_key: Optional[str] = None  # key in the translations file
-    help_key: Optional[str] = None  # key in the translations file
+    description_key: str = None  # key in the translations file
+    help_key: str = None  # key in the translations file
     multi_value: bool = False  # allow multiple values from the list
     depends_on: str = ""  # needs to be set before this setting shows up in frontend
     hidden: bool = False  # hide from UI
-    value: Optional[Any] = None  # set by the configuration manager
+    value: Any = None  # set by the configuration manager
     store_hashed: bool = False  # value will be hashed, non reversible
index 7c8a3318c01089dc35b346e9760f9e5c4ac5e9c5..89754db90a8a78ecea7bee0df33c892785681aee 100755 (executable)
@@ -2,7 +2,7 @@
 
 from dataclasses import dataclass, field
 from enum import Enum
-from typing import Any, List, Optional
+from typing import Any, List
 
 from mashumaro import DataClassDictMixin
 from music_assistant.utils import CustomIntEnum
@@ -54,8 +54,8 @@ class MediaItemProviderId(DataClassDictMixin):
 
     provider: str
     item_id: str
-    quality: Optional[TrackQuality] = TrackQuality.UNKNOWN
-    details: Optional[str] = None
+    quality: TrackQuality = TrackQuality.UNKNOWN
+    details: str = None
 
 
 class ExternalId(Enum):
@@ -97,7 +97,7 @@ class Album(MediaItem):
     media_type: MediaType = MediaType.Album
     version: str = ""
     year: int = 0
-    artist: Optional[Artist] = None
+    artist: Artist = None
     labels: List[str] = field(default_factory=list)
     album_type: AlbumType = AlbumType.Album
 
@@ -110,7 +110,7 @@ class Track(MediaItem):
     duration: int = 0
     version: str = ""
     artists: List[Artist] = field(default_factory=list)
-    album: Optional[Album] = None
+    album: Album = None
     disc_number: int = 1
     track_number: int = 1
 
index 25617769b10e3d698fe75250e5fef7b03048f38b..15999a3f488b36071bf77ab6f6c8b91d801f796e 100755 (executable)
@@ -3,7 +3,7 @@
 from dataclasses import dataclass, field
 from datetime import datetime
 from enum import Enum
-from typing import Any, List, Optional
+from typing import Any, List
 
 from mashumaro import DataClassDictMixin
 from music_assistant.models.config_entry import ConfigEntry
@@ -23,9 +23,9 @@ class PlayerState(Enum):
 class DeviceInfo(DataClassDictMixin):
     """Model for a player's deviceinfo."""
 
-    model: Optional[str] = ""
-    address: Optional[str] = ""
-    manufacturer: Optional[str] = ""
+    model: str = ""
+    address: str = ""
+    manufacturer: str = ""
 
 
 class PlayerFeature(CustomIntEnum):
@@ -96,5 +96,5 @@ class PlayerControl(DataClassDictMixin):
     type: PlayerControlType = PlayerControlType.UNKNOWN
     id: str = ""
     name: str = ""
-    state: Optional[Any] = None
+    state: Any = None
     set_state: Any = None
index 348d766b28fc6e28359845323e0a9dcb388c9cbf..cd8bc41eaa01f85ff55fdc07643fa62b61f8dde7 100755 (executable)
@@ -483,7 +483,7 @@ class PlayerQueue:
             "shuffle_enabled": self.shuffle_enabled,
             "repeat_enabled": self.repeat_enabled,
             "crossfade_enabled": self.crossfade_enabled,
-            "items": len(self.items),
+            "items": len(self._items),
             "cur_item_id": self.cur_item_id,
             "cur_index": self.cur_index,
             "next_index": self.next_index,
index fa34426ef1fd2e0efd327e081d8dcb82ab15cb1a..1333a1c37550e9836e25e0b4abce8a1427e3fd32 100644 (file)
@@ -2,7 +2,7 @@
 
 from dataclasses import dataclass
 from enum import Enum
-from typing import Any, Optional
+from typing import Any
 
 from mashumaro import DataClassDictMixin
 
@@ -37,5 +37,6 @@ class StreamDetails(DataClassDictMixin):
     sample_rate: int
     bit_depth: int
     player_id: str = ""
-    details: Optional[Any] = None
-    seconds_played: int = None
+    details: Any = None
+    seconds_played: int = 0
+    sox_options: str = None