diff --git a/homeassistant/components/anthropic/config_flow.py b/homeassistant/components/anthropic/config_flow.py index ee49b60c7874ed..9cc8ccd7fe374e 100644 --- a/homeassistant/components/anthropic/config_flow.py +++ b/homeassistant/components/anthropic/config_flow.py @@ -271,7 +271,7 @@ async def async_step_init( ] = bool if user_input is not None: - if not user_input.get(CONF_LLM_HASS_API): + if user_input.get(CONF_LLM_HASS_API) is None: user_input.pop(CONF_LLM_HASS_API, None) if user_input[CONF_RECOMMENDED]: diff --git a/homeassistant/components/openai_conversation/config_flow.py b/homeassistant/components/openai_conversation/config_flow.py index 05ed4fe18f5f13..ff1f1820c9e221 100644 --- a/homeassistant/components/openai_conversation/config_flow.py +++ b/homeassistant/components/openai_conversation/config_flow.py @@ -309,7 +309,7 @@ async def async_step_init( ] = bool if user_input is not None: - if not user_input.get(CONF_LLM_HASS_API): + if user_input.get(CONF_LLM_HASS_API) is None: user_input.pop(CONF_LLM_HASS_API, None) if user_input[CONF_RECOMMENDED]: diff --git a/homeassistant/components/opower/manifest.json b/homeassistant/components/opower/manifest.json index 46fa1a55e1eb36..f4b11c1c79dcad 100644 --- a/homeassistant/components/opower/manifest.json +++ b/homeassistant/components/opower/manifest.json @@ -9,5 +9,5 @@ "iot_class": "cloud_polling", "loggers": ["opower"], "quality_scale": "platinum", - "requirements": ["opower==0.19.0"] + "requirements": ["opower==0.20.0"] } diff --git a/homeassistant/components/rainforest_eagle/manifest.json b/homeassistant/components/rainforest_eagle/manifest.json index 47456ce50141a7..c3bba445184eba 100644 --- a/homeassistant/components/rainforest_eagle/manifest.json +++ b/homeassistant/components/rainforest_eagle/manifest.json @@ -12,5 +12,5 @@ "integration_type": "device", "iot_class": "local_polling", "loggers": ["aioeagle", "eagle100"], - "requirements": ["aioeagle==1.1.0", "eagle100==0.1.1"] + "requirements": ["aioeagle==1.1.1", "eagle100==0.1.1"] } diff --git a/requirements_all.txt b/requirements_all.txt index d34b125b2894cb..632ab3aaaf2762 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -245,7 +245,7 @@ aiodns==4.0.4 aioeafm==0.1.2 # homeassistant.components.rainforest_eagle -aioeagle==1.1.0 +aioeagle==1.1.1 # homeassistant.components.ecowitt aioecowitt==2026.6.0 @@ -1805,7 +1805,7 @@ openwrt-luci-rpc==1.1.17 openwrt-ubus-rpc==0.0.3 # homeassistant.components.opower -opower==0.19.0 +opower==0.20.0 # homeassistant.components.oralb oralb-ble==1.1.3 diff --git a/tests/components/anthropic/test_config_flow.py b/tests/components/anthropic/test_config_flow.py index b8140115f8d4c4..606a42c734e4e1 100644 --- a/tests/components/anthropic/test_config_flow.py +++ b/tests/components/anthropic/test_config_flow.py @@ -592,6 +592,7 @@ async def test_invalid_model( { CONF_RECOMMENDED: False, CONF_PROMPT: "Speak like a pirate", + CONF_LLM_HASS_API: [], CONF_PROMPT_CACHING: "off", CONF_CHAT_MODEL: "claude-haiku-4-5", CONF_MAX_TOKENS: DEFAULT[CONF_MAX_TOKENS], @@ -695,6 +696,7 @@ async def test_invalid_model( { CONF_RECOMMENDED: False, CONF_PROMPT: "Speak like a pirate", + CONF_LLM_HASS_API: [], CONF_PROMPT_CACHING: "prompt", CONF_CHAT_MODEL: "claude-opus-4-7", CONF_MAX_TOKENS: DEFAULT[CONF_MAX_TOKENS], @@ -728,6 +730,7 @@ async def test_invalid_model( { CONF_RECOMMENDED: False, CONF_PROMPT: "Speak like a pirate", + CONF_LLM_HASS_API: [], CONF_PROMPT_CACHING: "automatic", CONF_CHAT_MODEL: "claude-haiku-4-5", CONF_MAX_TOKENS: DEFAULT[CONF_MAX_TOKENS], diff --git a/tests/components/openai_conversation/test_config_flow.py b/tests/components/openai_conversation/test_config_flow.py index d83c1f263d1e33..132befddc8d98f 100644 --- a/tests/components/openai_conversation/test_config_flow.py +++ b/tests/components/openai_conversation/test_config_flow.py @@ -647,6 +647,25 @@ async def test_form_invalid_auth(hass: HomeAssistant, side_effect, error) -> Non @pytest.mark.parametrize( ("current_options", "new_options", "expected_options"), [ + ( # Test clearing every llm api is stored as an empty list + { + CONF_RECOMMENDED: True, + CONF_LLM_HASS_API: ["assist"], + CONF_PROMPT: "", + }, + ( + { + CONF_RECOMMENDED: True, + CONF_LLM_HASS_API: [], + CONF_PROMPT: "", + }, + ), + { + CONF_RECOMMENDED: True, + CONF_LLM_HASS_API: [], + CONF_PROMPT: "", + }, + ), ( # Test converting single llm api format to list { CONF_RECOMMENDED: True,