gukebox 1.3.1__tar.gz → 1.3.2.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/PKG-INFO +1 -1
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/di_container.py +9 -4
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/resolve.py +5 -3
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/pyproject.toml +1 -1
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/LICENSE +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/README.md +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/current_tag_router.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/discs_router.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/models.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/settings_router.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api_controller.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/cli_controller.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/cli_display.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/interactive_cli_controller.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/ui_controller.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/ui_pages/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/ui_pages/library.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/ui_pages/settings.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/ui_pages/sonos.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/cli_controller.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/json_library_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/players/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/players/dryrun_player_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/players/sonos_player_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/readers/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/readers/dryrun_reader_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/readers/pn532_reader_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/sonos_discovery_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/text_current_tag_adapter.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/app.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/cli_presentation.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/command_handlers.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/commands.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/library_command_handlers.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/library_commands.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/pn532_command_handlers.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/pn532_commands.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/services.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/admin/sonos_households.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/app.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/di_container.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/current_tag_action.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/current_tag_status.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/disc.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/library.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/playback_action.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/playback_session.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/entities/tag_event.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/errors.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/ports/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/ports/player_port.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/ports/reader_port.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/repositories/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/repositories/current_tag_repository.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/repositories/library_repository.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/determine_action.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/determine_current_tag_action.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/handle_tag_event.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/add_disc.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/edit_disc.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/get_current_tag_status.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/get_disc.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/list_discs.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/remove_disc.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/resolve_tag_id.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/search_discs.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/pn532/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/pn532/profiles.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/definitions.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/dict_utils.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/entities.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/errors.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/file_settings_repository.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/migration.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/repositories.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/runtime_resolver.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/runtime_validation.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/selected_sonos_group_repository.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/service_protocols.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/timing_validation.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/types.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/validation_rules.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/settings/view_utils.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/config_utils.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/errors.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/logger.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/terminal_ui.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/shared/timing.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/sonos/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/sonos/discovery.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/sonos/selection.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/sonos/service.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/pn532/__init__.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/pn532/pn532.py +0 -0
- {gukebox-1.3.1 → gukebox-1.3.2.dev1}/pn532/spi.py +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from typing import cast
|
|
2
|
+
|
|
1
3
|
from jukebox.adapters.outbound.json_library_adapter import JsonLibraryAdapter
|
|
2
4
|
from jukebox.adapters.outbound.sonos_discovery_adapter import SoCoSonosDiscoveryAdapter
|
|
3
5
|
from jukebox.adapters.outbound.text_current_tag_adapter import TextCurrentTagAdapter
|
|
@@ -13,6 +15,7 @@ from jukebox.settings.file_settings_repository import FileSettingsRepository
|
|
|
13
15
|
from jukebox.settings.resolve import SettingsService as SettingsServiceImpl
|
|
14
16
|
from jukebox.settings.resolve import build_environment_settings_overrides
|
|
15
17
|
from jukebox.settings.service_protocols import SettingsService
|
|
18
|
+
from jukebox.settings.types import JsonObject
|
|
16
19
|
from jukebox.shared.config_utils import get_current_tag_path
|
|
17
20
|
from jukebox.sonos.service import DefaultSonosService, SonosService
|
|
18
21
|
|
|
@@ -24,16 +27,18 @@ def build_settings_service(
|
|
|
24
27
|
library: str | None,
|
|
25
28
|
command: object | None,
|
|
26
29
|
) -> SettingsService:
|
|
27
|
-
cli_overrides = {}
|
|
30
|
+
cli_overrides: JsonObject = {}
|
|
28
31
|
|
|
29
32
|
if library is not None:
|
|
30
|
-
cli_overrides.setdefault("paths", {})["library_path"] = library
|
|
33
|
+
cast(JsonObject, cli_overrides.setdefault("paths", {}))["library_path"] = library
|
|
31
34
|
|
|
32
35
|
if isinstance(command, ApiCommand) and command.port is not None:
|
|
33
|
-
|
|
36
|
+
admin = cast(JsonObject, cli_overrides.setdefault("admin", {}))
|
|
37
|
+
cast(JsonObject, admin.setdefault("api", {}))["port"] = command.port
|
|
34
38
|
|
|
35
39
|
if isinstance(command, UiCommand) and command.port is not None:
|
|
36
|
-
|
|
40
|
+
admin = cast(JsonObject, cli_overrides.setdefault("admin", {}))
|
|
41
|
+
cast(JsonObject, admin.setdefault("ui", {}))["port"] = command.port
|
|
37
42
|
|
|
38
43
|
return SettingsServiceImpl(
|
|
39
44
|
repository=FileSettingsRepository(),
|
|
@@ -31,16 +31,18 @@ _MISSING = object()
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
def build_environment_settings_overrides() -> JsonObject:
|
|
34
|
-
overrides = {}
|
|
34
|
+
overrides: JsonObject = {}
|
|
35
35
|
|
|
36
36
|
library_path = os.environ.get("JUKEBOX_LIBRARY_PATH")
|
|
37
37
|
if library_path is not None:
|
|
38
|
-
overrides.setdefault("paths", {})["library_path"] = library_path
|
|
38
|
+
cast(JsonObject, overrides.setdefault("paths", {}))["library_path"] = library_path
|
|
39
39
|
|
|
40
40
|
sonos_host = os.environ.get("JUKEBOX_SONOS_HOST")
|
|
41
41
|
sonos_name = os.environ.get("JUKEBOX_SONOS_NAME")
|
|
42
42
|
if sonos_host is not None or sonos_name is not None:
|
|
43
|
-
|
|
43
|
+
jukebox = cast(JsonObject, overrides.setdefault("jukebox", {}))
|
|
44
|
+
player = cast(JsonObject, jukebox.setdefault("player", {}))
|
|
45
|
+
sonos_overrides = cast(JsonObject, player.setdefault("sonos", {}))
|
|
44
46
|
sonos_overrides["manual_host"] = sonos_host
|
|
45
47
|
sonos_overrides["manual_name"] = sonos_name
|
|
46
48
|
sonos_overrides["selected_group"] = None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/api/current_tag_router.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/inbound/admin/interactive_cli_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/players/dryrun_player_adapter.py
RENAMED
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/players/sonos_player_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/readers/dryrun_reader_adapter.py
RENAMED
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/adapters/outbound/readers/pn532_reader_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/determine_current_tag_action.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gukebox-1.3.1 → gukebox-1.3.2.dev1}/jukebox/domain/use_cases/library/get_current_tag_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|