1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-15 07:36:16 +00:00

Add app selector as replacement for addon selector (#161684)

This commit is contained in:
Jan Čermák
2026-01-27 16:35:34 +01:00
committed by GitHub
parent 3794b4e1a1
commit be88a1f14a
2 changed files with 37 additions and 6 deletions

View File

@@ -243,18 +243,18 @@ class ActionSelector(Selector[ActionSelectorConfig]):
return data
class AddonSelectorConfig(BaseSelectorConfig, total=False):
"""Class to represent an addon selector config."""
class AppSelectorConfig(BaseSelectorConfig, total=False):
"""Class to represent an app selector config."""
name: str
slug: str
@SELECTORS.register("addon")
class AddonSelector(Selector[AddonSelectorConfig]):
"""Selector of a add-on."""
@SELECTORS.register("app")
class AppSelector(Selector[AppSelectorConfig]):
"""Selector of an app."""
selector_type = "addon"
selector_type = "app"
CONFIG_SCHEMA = make_selector_config_schema(
{
@@ -263,6 +263,28 @@ class AddonSelector(Selector[AddonSelectorConfig]):
}
)
def __init__(self, config: AppSelectorConfig | None = None) -> None:
"""Instantiate a selector."""
super().__init__(config)
def __call__(self, data: Any) -> str:
"""Validate the passed selection."""
app: str = vol.Schema(str)(data)
return app
# AddonSelectorConfig as an alias of AppSelectorConfig
AddonSelectorConfig = AppSelectorConfig
@SELECTORS.register("addon")
class AddonSelector(Selector[AddonSelectorConfig]):
"""Selector of an add-on, kept for backward compatibility after add-ons -> apps rename."""
selector_type = "addon"
CONFIG_SCHEMA = AppSelector.CONFIG_SCHEMA
def __init__(self, config: AddonSelectorConfig | None = None) -> None:
"""Instantiate a selector."""
super().__init__(config)

View File

@@ -487,6 +487,15 @@ def test_addon_selector_schema(schema, valid_selections, invalid_selections) ->
_test_selector("addon", schema, valid_selections, invalid_selections)
@pytest.mark.parametrize(
("schema", "valid_selections", "invalid_selections"),
[({}, ("abc123",), (None,))],
)
def test_app_selector_schema(schema, valid_selections, invalid_selections) -> None:
"""Test app selector."""
_test_selector("app", schema, valid_selections, invalid_selections)
@pytest.mark.parametrize(
("schema", "valid_selections", "invalid_selections"),
[({}, ("abc123", "/backup"), (None, "abc@123", "abc 123", ""))],