Skip to content

Commit bb98ed6

Browse files
authored
2025.10.3 (#154718)
2 parents 40d7f2a + 59dace5 commit bb98ed6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+342
-126
lines changed

homeassistant/components/airq/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
"integration_type": "hub",
88
"iot_class": "local_polling",
99
"loggers": ["aioairq"],
10-
"requirements": ["aioairq==0.4.6"]
10+
"requirements": ["aioairq==0.4.7"]
1111
}

homeassistant/components/alexa_devices/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
"iot_class": "cloud_polling",
99
"loggers": ["aioamazondevices"],
1010
"quality_scale": "platinum",
11-
"requirements": ["aioamazondevices==6.4.0"]
11+
"requirements": ["aioamazondevices==6.4.4"]
1212
}

homeassistant/components/asuswrt/bridge.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
from collections.abc import Awaitable, Callable, Coroutine
88
import functools
99
import logging
10-
from typing import Any, cast
10+
from typing import Any
1111

1212
from aioasuswrt.asuswrt import AsusWrt as AsusWrtLegacy
1313
from aiohttp import ClientSession
1414
from asusrouter import AsusRouter, AsusRouterError
1515
from asusrouter.config import ARConfigKey
16-
from asusrouter.modules.client import AsusClient
16+
from asusrouter.modules.client import AsusClient, ConnectionState
1717
from asusrouter.modules.data import AsusData
1818
from asusrouter.modules.homeassistant import convert_to_ha_data, convert_to_ha_sensors
1919
from asusrouter.tools.connection import get_cookie_jar
@@ -219,7 +219,7 @@ def _get_api(
219219
@property
220220
def is_connected(self) -> bool:
221221
"""Get connected status."""
222-
return cast(bool, self._api.is_connected)
222+
return self._api.is_connected
223223

224224
async def async_connect(self) -> None:
225225
"""Connect to the device."""
@@ -235,8 +235,7 @@ async def async_connect(self) -> None:
235235

236236
async def async_disconnect(self) -> None:
237237
"""Disconnect to the device."""
238-
if self._api is not None and self._protocol == PROTOCOL_TELNET:
239-
self._api.connection.disconnect()
238+
await self._api.async_disconnect()
240239

241240
async def async_get_connected_devices(self) -> dict[str, WrtDevice]:
242241
"""Get list of connected devices."""
@@ -437,6 +436,7 @@ async def async_get_connected_devices(self) -> dict[str, WrtDevice]:
437436
if dev.connection is not None
438437
and dev.description is not None
439438
and dev.connection.ip_address is not None
439+
and dev.state is ConnectionState.CONNECTED
440440
}
441441

442442
async def async_get_available_sensors(self) -> dict[str, dict[str, Any]]:

homeassistant/components/asuswrt/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
"integration_type": "hub",
88
"iot_class": "local_polling",
99
"loggers": ["aioasuswrt", "asusrouter", "asyncssh"],
10-
"requirements": ["aioasuswrt==1.4.0", "asusrouter==1.21.0"]
10+
"requirements": ["aioasuswrt==1.5.1", "asusrouter==1.21.0"]
1111
}

homeassistant/components/august/__init__.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: AugustConfigEntry) -> bo
3636
raise ConfigEntryAuthFailed("Migration to OAuth required")
3737

3838
session = async_create_august_clientsession(hass)
39-
implementation = (
40-
await config_entry_oauth2_flow.async_get_config_entry_implementation(
41-
hass, entry
39+
try:
40+
implementation = (
41+
await config_entry_oauth2_flow.async_get_config_entry_implementation(
42+
hass, entry
43+
)
4244
)
43-
)
45+
except ValueError as err:
46+
raise ConfigEntryNotReady("OAuth implementation not available") from err
4447
oauth_session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
4548
august_gateway = AugustGateway(Path(hass.config.config_dir), session, oauth_session)
4649
try:

homeassistant/components/bluetooth/match.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,17 @@ class IntegrationMatchHistory:
6868
manufacturer_data: bool
6969
service_data: set[str]
7070
service_uuids: set[str]
71+
name: str
7172

7273

7374
def seen_all_fields(
74-
previous_match: IntegrationMatchHistory, advertisement_data: AdvertisementData
75+
previous_match: IntegrationMatchHistory,
76+
advertisement_data: AdvertisementData,
77+
name: str,
7578
) -> bool:
7679
"""Return if we have seen all fields."""
80+
if previous_match.name != name:
81+
return False
7782
if not previous_match.manufacturer_data and advertisement_data.manufacturer_data:
7883
return False
7984
if advertisement_data.service_data and (
@@ -122,10 +127,11 @@ def match_domains(self, service_info: BluetoothServiceInfoBleak) -> set[str]:
122127
device = service_info.device
123128
advertisement_data = service_info.advertisement
124129
connectable = service_info.connectable
130+
name = service_info.name
125131
matched = self._matched_connectable if connectable else self._matched
126132
matched_domains: set[str] = set()
127133
if (previous_match := matched.get(device.address)) and seen_all_fields(
128-
previous_match, advertisement_data
134+
previous_match, advertisement_data, name
129135
):
130136
# We have seen all fields so we can skip the rest of the matchers
131137
return matched_domains
@@ -140,11 +146,13 @@ def match_domains(self, service_info: BluetoothServiceInfoBleak) -> set[str]:
140146
)
141147
previous_match.service_data |= set(advertisement_data.service_data)
142148
previous_match.service_uuids |= set(advertisement_data.service_uuids)
149+
previous_match.name = name
143150
else:
144151
matched[device.address] = IntegrationMatchHistory(
145152
manufacturer_data=bool(advertisement_data.manufacturer_data),
146153
service_data=set(advertisement_data.service_data),
147154
service_uuids=set(advertisement_data.service_uuids),
155+
name=name,
148156
)
149157
return matched_domains
150158

homeassistant/components/co2signal/config_flow.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838

3939
_LOGGER = logging.getLogger(__name__)
4040

41+
DESCRIPTION_PLACEHOLDER = {
42+
"register_link": "https://electricitymaps.com/free-tier",
43+
}
44+
4145

4246
class ElectricityMapsConfigFlow(ConfigFlow, domain=DOMAIN):
4347
"""Handle a config flow for Co2signal."""
@@ -70,6 +74,7 @@ async def async_step_user(
7074
return self.async_show_form(
7175
step_id="user",
7276
data_schema=data_schema,
77+
description_placeholders=DESCRIPTION_PLACEHOLDER,
7378
)
7479

7580
data = {CONF_API_KEY: user_input[CONF_API_KEY]}
@@ -179,4 +184,5 @@ async def _validate_and_create(
179184
step_id=step_id,
180185
data_schema=data_schema,
181186
errors=errors,
187+
description_placeholders=DESCRIPTION_PLACEHOLDER,
182188
)

homeassistant/components/co2signal/strings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"location": "[%key:common::config_flow::data::location%]",
77
"api_key": "[%key:common::config_flow::data::access_token%]"
88
},
9-
"description": "Visit https://electricitymaps.com/free-tier to request a token."
9+
"description": "Visit the [Electricity Maps page]({register_link}) to request a token."
1010
},
1111
"coordinates": {
1212
"data": {

homeassistant/components/coinbase/config_flow.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ async def async_step_reauth_confirm(
166166
data_schema=STEP_USER_DATA_SCHEMA,
167167
description_placeholders={
168168
"account_name": self.reauth_entry.title,
169+
"developer_url": "https://www.coinbase.com/developer-platform",
169170
},
170171
errors=errors,
171172
)
@@ -195,6 +196,7 @@ async def async_step_reauth_confirm(
195196
data_schema=STEP_USER_DATA_SCHEMA,
196197
description_placeholders={
197198
"account_name": self.reauth_entry.title,
199+
"developer_url": "https://www.coinbase.com/developer-platform",
198200
},
199201
errors=errors,
200202
)

homeassistant/components/coinbase/strings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
},
1212
"reauth_confirm": {
1313
"title": "Update Coinbase API credentials",
14-
"description": "Your current Coinbase API key appears to be for the deprecated v2 API. Please reconfigure with a new API key created for the v3 API. Visit https://www.coinbase.com/developer-platform to create new credentials for {account_name}.",
14+
"description": "Your current Coinbase API key appears to be for the deprecated v2 API. Please reconfigure with a new API key created for the v3 API. Visit the [Developer Platform]({developer_url}) to create new credentials for {account_name}.",
1515
"data": {
1616
"api_key": "[%key:common::config_flow::data::api_key%]",
1717
"api_token": "API secret"

0 commit comments

Comments
 (0)