mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
End deprecation setting disabled_by as string (#125646)
This commit is contained in:
parent
15e5851383
commit
3536ba43f5
@ -271,6 +271,16 @@ class ConfigFlowResult(FlowResult, total=False):
|
||||
version: int
|
||||
|
||||
|
||||
def _validate_item(*, disabled_by: ConfigEntryDisabler | Any | None = None) -> None:
|
||||
"""Validate config entry item."""
|
||||
|
||||
# Deprecated in 2022.1, stopped working in 2024.10
|
||||
if disabled_by is not None and not isinstance(disabled_by, ConfigEntryDisabler):
|
||||
raise TypeError(
|
||||
f"disabled_by must be a ConfigEntryDisabler value, got {disabled_by}"
|
||||
)
|
||||
|
||||
|
||||
class ConfigEntry(Generic[_DataT]):
|
||||
"""Hold a configuration entry."""
|
||||
|
||||
@ -369,18 +379,7 @@ class ConfigEntry(Generic[_DataT]):
|
||||
_setter(self, "unique_id", unique_id)
|
||||
|
||||
# Config entry is disabled
|
||||
if isinstance(disabled_by, str) and not isinstance(
|
||||
disabled_by, ConfigEntryDisabler
|
||||
):
|
||||
report( # type: ignore[unreachable]
|
||||
(
|
||||
"uses str for config entry disabled_by. This is deprecated and will"
|
||||
" stop working in Home Assistant 2022.3, it should be updated to"
|
||||
" use ConfigEntryDisabler instead"
|
||||
),
|
||||
error_if_core=False,
|
||||
)
|
||||
disabled_by = ConfigEntryDisabler(disabled_by)
|
||||
_validate_item(disabled_by=disabled_by)
|
||||
_setter(self, "disabled_by", disabled_by)
|
||||
|
||||
# Supports unload
|
||||
@ -1958,19 +1957,7 @@ class ConfigEntries:
|
||||
if (entry := self.async_get_entry(entry_id)) is None:
|
||||
raise UnknownEntry
|
||||
|
||||
if isinstance(disabled_by, str) and not isinstance(
|
||||
disabled_by, ConfigEntryDisabler
|
||||
):
|
||||
report( # type: ignore[unreachable]
|
||||
(
|
||||
"uses str for config entry disabled_by. This is deprecated and will"
|
||||
" stop working in Home Assistant 2022.3, it should be updated to"
|
||||
" use ConfigEntryDisabler instead"
|
||||
),
|
||||
error_if_core=False,
|
||||
)
|
||||
disabled_by = ConfigEntryDisabler(disabled_by)
|
||||
|
||||
_validate_item(disabled_by=disabled_by)
|
||||
if entry.disabled_by is disabled_by:
|
||||
return True
|
||||
|
||||
|
@ -19,7 +19,7 @@ from homeassistant.components.analytics.const import (
|
||||
ATTR_STATISTICS,
|
||||
ATTR_USAGE,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntryState
|
||||
from homeassistant.config_entries import ConfigEntryDisabler, ConfigEntryState
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.loader import IntegrationNotFound
|
||||
@ -863,7 +863,7 @@ async def test_not_check_config_entries_if_yaml(
|
||||
domain="ignored_integration",
|
||||
state=ConfigEntryState.LOADED,
|
||||
source="ignore",
|
||||
disabled_by="user",
|
||||
disabled_by=ConfigEntryDisabler.USER,
|
||||
)
|
||||
mock_config_entry.add_to_hass(hass)
|
||||
|
||||
|
@ -4297,29 +4297,28 @@ async def test_loading_old_data(
|
||||
assert entry.pref_disable_new_entities is True
|
||||
|
||||
|
||||
async def test_deprecated_disabled_by_str_ctor(
|
||||
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
async def test_deprecated_disabled_by_str_ctor() -> None:
|
||||
"""Test deprecated str disabled_by constructor enumizes and logs a warning."""
|
||||
entry = MockConfigEntry(disabled_by=config_entries.ConfigEntryDisabler.USER.value)
|
||||
assert entry.disabled_by is config_entries.ConfigEntryDisabler.USER
|
||||
assert " str for config entry disabled_by. This is deprecated " in caplog.text
|
||||
with pytest.raises(
|
||||
TypeError, match="disabled_by must be a ConfigEntryDisabler value, got user"
|
||||
):
|
||||
MockConfigEntry(disabled_by=config_entries.ConfigEntryDisabler.USER.value)
|
||||
|
||||
|
||||
async def test_deprecated_disabled_by_str_set(
|
||||
hass: HomeAssistant,
|
||||
manager: config_entries.ConfigEntries,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test deprecated str set disabled_by enumizes and logs a warning."""
|
||||
entry = MockConfigEntry(domain="comp")
|
||||
entry.add_to_manager(manager)
|
||||
hass.config.components.add("comp")
|
||||
assert await manager.async_set_disabled_by(
|
||||
entry.entry_id, config_entries.ConfigEntryDisabler.USER.value
|
||||
)
|
||||
assert entry.disabled_by is config_entries.ConfigEntryDisabler.USER
|
||||
assert " str for config entry disabled_by. This is deprecated " in caplog.text
|
||||
with pytest.raises(
|
||||
TypeError, match="disabled_by must be a ConfigEntryDisabler value, got user"
|
||||
):
|
||||
await manager.async_set_disabled_by(
|
||||
entry.entry_id, config_entries.ConfigEntryDisabler.USER.value
|
||||
)
|
||||
|
||||
|
||||
async def test_entry_reload_concurrency(
|
||||
|
Loading…
x
Reference in New Issue
Block a user