Deprecate cloud tts platform config (#110461)
* Deprecate cloud tts platform config * Add test
This commit is contained in:
parent
8fb04d759b
commit
f140c1a46d
3 changed files with 49 additions and 2 deletions
|
@ -24,6 +24,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"issues": {
|
"issues": {
|
||||||
|
"deprecated_tts_platform_config": {
|
||||||
|
"title": "The Cloud text-to-speech platform configuration is deprecated",
|
||||||
|
"description": "The whole `platform: cloud` entry under the `tts:` section in configuration.yaml is deprecated and should be removed. You can use the UI to change settings for the Cloud text-to-speech platform. Please adjust your configuration.yaml and restart Home Assistant to fix this issue."
|
||||||
|
},
|
||||||
"deprecated_voice": {
|
"deprecated_voice": {
|
||||||
"title": "A deprecated voice was used",
|
"title": "A deprecated voice was used",
|
||||||
"fix_flow": {
|
"fix_flow": {
|
||||||
|
|
|
@ -20,8 +20,9 @@ from homeassistant.components.tts import (
|
||||||
Voice,
|
Voice,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import Platform
|
from homeassistant.const import CONF_PLATFORM, Platform
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, async_get_hass, callback
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
@ -39,6 +40,27 @@ SUPPORT_LANGUAGES = list(TTS_VOICES)
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def _deprecated_platform(value: str) -> str:
|
||||||
|
"""Validate if platform is deprecated."""
|
||||||
|
if value == DOMAIN:
|
||||||
|
_LOGGER.warning(
|
||||||
|
"The cloud tts platform configuration is deprecated, "
|
||||||
|
"please remove it from your configuration "
|
||||||
|
"and use the UI to change settings instead"
|
||||||
|
)
|
||||||
|
hass = async_get_hass()
|
||||||
|
async_create_issue(
|
||||||
|
hass,
|
||||||
|
DOMAIN,
|
||||||
|
"deprecated_tts_platform_config",
|
||||||
|
breaks_in_ha_version="2024.9.0",
|
||||||
|
is_fixable=False,
|
||||||
|
severity=IssueSeverity.WARNING,
|
||||||
|
translation_key="deprecated_tts_platform_config",
|
||||||
|
)
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
def validate_lang(value: dict[str, Any]) -> dict[str, Any]:
|
def validate_lang(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
"""Validate chosen gender or language."""
|
"""Validate chosen gender or language."""
|
||||||
if (lang := value.get(CONF_LANG)) is None:
|
if (lang := value.get(CONF_LANG)) is None:
|
||||||
|
@ -58,6 +80,7 @@ def validate_lang(value: dict[str, Any]) -> dict[str, Any]:
|
||||||
PLATFORM_SCHEMA = vol.All(
|
PLATFORM_SCHEMA = vol.All(
|
||||||
TTS_PLATFORM_SCHEMA.extend(
|
TTS_PLATFORM_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
|
vol.Required(CONF_PLATFORM): vol.All(cv.string, _deprecated_platform),
|
||||||
vol.Optional(CONF_LANG): str,
|
vol.Optional(CONF_LANG): str,
|
||||||
vol.Optional(ATTR_GENDER): str,
|
vol.Optional(ATTR_GENDER): str,
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,6 +122,26 @@ async def test_prefs_default_voice(
|
||||||
assert engine.default_options == {"gender": "male", "audio_output": "mp3"}
|
assert engine.default_options == {"gender": "male", "audio_output": "mp3"}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_deprecated_platform_config(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
issue_registry: IssueRegistry,
|
||||||
|
cloud: MagicMock,
|
||||||
|
) -> None:
|
||||||
|
"""Test cloud provider uses the preferences."""
|
||||||
|
assert await async_setup_component(
|
||||||
|
hass, TTS_DOMAIN, {TTS_DOMAIN: {"platform": DOMAIN}}
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
issue = issue_registry.async_get_issue(DOMAIN, "deprecated_tts_platform_config")
|
||||||
|
assert issue is not None
|
||||||
|
assert issue.breaks_in_ha_version == "2024.9.0"
|
||||||
|
assert issue.is_fixable is False
|
||||||
|
assert issue.is_persistent is False
|
||||||
|
assert issue.severity == IssueSeverity.WARNING
|
||||||
|
assert issue.translation_key == "deprecated_tts_platform_config"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"engine_id",
|
"engine_id",
|
||||||
[
|
[
|
||||||
|
|
Loading…
Add table
Reference in a new issue