Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1347,7 +1347,7 @@ jobs:
pattern: coverage-*
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'true'
uses: codecov/codecov-action@v5.5.0
uses: codecov/codecov-action@v5.5.1
with:
fail_ci_if_error: true
flags: full-suite
Expand Down Expand Up @@ -1498,7 +1498,7 @@ jobs:
pattern: coverage-*
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'false'
uses: codecov/codecov-action@v5.5.0
uses: codecov/codecov-action@v5.5.1
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/detect-duplicate-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
steps:
- name: Check if integration label was added and extract details
id: extract
uses: actions/github-script@v7.0.1
uses: actions/github-script@v8
with:
script: |
// Debug: Log the event payload
Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
- name: Fetch similar issues
id: fetch_similar
if: steps.extract.outputs.should_continue == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@v8
env:
INTEGRATION_LABELS: ${{ steps.extract.outputs.integration_labels }}
CURRENT_NUMBER: ${{ steps.extract.outputs.current_number }}
Expand Down Expand Up @@ -280,7 +280,7 @@ jobs:
- name: Post duplicate detection results
id: post_results
if: steps.extract.outputs.should_continue == 'true' && steps.fetch_similar.outputs.has_similar == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@v8
env:
AI_RESPONSE: ${{ steps.ai_detection.outputs.response }}
SIMILAR_ISSUES: ${{ steps.fetch_similar.outputs.similar_issues }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/detect-non-english-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
steps:
- name: Check issue language
id: detect_language
uses: actions/github-script@v7.0.1
uses: actions/github-script@v8
env:
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
Expand Down Expand Up @@ -90,7 +90,7 @@ jobs:

- name: Process non-English issues
if: steps.detect_language.outputs.should_continue == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@v8
env:
AI_RESPONSE: ${{ steps.ai_language_detection.outputs.response }}
ISSUE_NUMBER: ${{ steps.detect_language.outputs.issue_number }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/restrict-task-creation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
if: github.event.issue.type.name == 'Task'
steps:
- name: Check if user is authorized
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const issueAuthor = context.payload.issue.user.login;
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/androidtv_remote/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
},
"zeroconf_confirm": {
"title": "Discovered Android TV",
"description": "Do you want to add the Android TV ({name}) to Home Assistant? It will turn on and a pairing code will be displayed on it that you will need to enter in the next screen."
"description": "Do you want to add the Android TV ({name}) to Home Assistant? It will turn on and a pairing code will be displayed on it that you will need to enter in the next screen."
},
"pair": {
"description": "Enter the pairing code displayed on the Android TV ({name}).",
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/esphome/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"mqtt": ["esphome/discover/#"],
"quality_scale": "platinum",
"requirements": [
"aioesphomeapi==39.0.1",
"aioesphomeapi==40.0.1",
"esphome-dashboard-api==1.3.0",
"bleak-esphome==3.2.0"
],
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/intent/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ async def post(self, request: web.Request, data: dict[str, Any]) -> web.Response
intent_result = await intent.async_handle(
hass, DOMAIN, intent_name, slots, "", self.context(request)
)
except intent.IntentHandleError as err:
except (intent.IntentHandleError, intent.MatchFailedError) as err:
intent_result = intent.IntentResponse(language=language)
intent_result.async_set_speech(str(err))

Expand Down
17 changes: 16 additions & 1 deletion homeassistant/components/ohme/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from ohme import ApiException, OhmeApiClient

from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed

from .const import DOMAIN
Expand Down Expand Up @@ -83,6 +83,21 @@ class OhmeAdvancedSettingsCoordinator(OhmeBaseCoordinator):

coordinator_name = "Advanced Settings"

def __init__(
self, hass: HomeAssistant, config_entry: OhmeConfigEntry, client: OhmeApiClient
) -> None:
"""Initialise coordinator."""
super().__init__(hass, config_entry, client)

@callback
def _dummy_listener() -> None:
pass

# This coordinator is used by the API library to determine whether the
# charger is online and available. It is therefore required even if no
# entities are using it.
self.async_add_listener(_dummy_listener)

async def _internal_update_data(self) -> None:
"""Fetch data from API endpoint."""
await self.client.async_get_advanced_settings()
Expand Down
6 changes: 3 additions & 3 deletions homeassistant/components/sia/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"zones": "Number of zones for the account",
"additional_account": "Additional accounts"
},
"title": "Create a connection for SIA-based alarm systems."
"title": "Create a connection for SIA-based alarm systems"
},
"additional_account": {
"data": {
Expand All @@ -21,7 +21,7 @@
"zones": "[%key:component::sia::config::step::user::data::zones%]",
"additional_account": "[%key:component::sia::config::step::user::data::additional_account%]"
},
"title": "Add another account to the current port."
"title": "Add another account to the current port"
}
},
"abort": {
Expand All @@ -45,7 +45,7 @@
"zones": "[%key:component::sia::config::step::user::data::zones%]"
},
"description": "Set the options for account: {account}",
"title": "Options for the SIA Setup."
"title": "Options for the SIA setup"
}
}
}
Expand Down
135 changes: 25 additions & 110 deletions homeassistant/components/systemmonitor/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@

SIGNAL_SYSTEMMONITOR_UPDATE = "systemmonitor_update"

SENSORS_NO_ARG = ("load_", "memory_", "processor_use", "swap_", "last_boot")
SENSORS_WITH_ARG = {
"disk_": "disk_arguments",
"ipv": "network_arguments",
**dict.fromkeys(NET_IO_TYPES, "network_arguments"),
}


@lru_cache
def get_cpu_icon() -> Literal["mdi:cpu-64-bit", "mdi:cpu-32-bit"]:
Expand Down Expand Up @@ -422,105 +429,27 @@ def get_arguments() -> dict[str, Any]:
startup_arguments["cpu_temperature"] = cpu_temperature

_LOGGER.debug("Setup from options %s", entry.options)

for _type, sensor_description in SENSOR_TYPES.items():
if _type.startswith("disk_"):
for argument in startup_arguments["disk_arguments"]:
is_enabled = check_legacy_resource(
f"{_type}_{argument}", legacy_resources
)
if (_add := slugify(f"{_type}_{argument}")) not in loaded_resources:
loaded_resources.add(_add)
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)
continue

if _type.startswith("ipv"):
for argument in startup_arguments["network_arguments"]:
is_enabled = check_legacy_resource(
f"{_type}_{argument}", legacy_resources
)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)
continue

if _type == "last_boot":
argument = ""
is_enabled = check_legacy_resource(f"{_type}_{argument}", legacy_resources)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)
continue

if _type.startswith("load_"):
argument = ""
is_enabled = check_legacy_resource(f"{_type}_{argument}", legacy_resources)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)
continue

if _type.startswith("memory_"):
argument = ""
is_enabled = check_legacy_resource(f"{_type}_{argument}", legacy_resources)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)

if _type in NET_IO_TYPES:
for argument in startup_arguments["network_arguments"]:
is_enabled = check_legacy_resource(
f"{_type}_{argument}", legacy_resources
)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
for sensor_type, sensor_argument in SENSORS_WITH_ARG.items():
if _type.startswith(sensor_type):
for argument in startup_arguments[sensor_argument]:
is_enabled = check_legacy_resource(
f"{_type}_{argument}", legacy_resources
)
)
continue
if (_add := slugify(f"{_type}_{argument}")) not in loaded_resources:
loaded_resources.add(_add)
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)
continue

if _type == "processor_use":
if _type.startswith(SENSORS_NO_ARG):
argument = ""
is_enabled = check_legacy_resource(f"{_type}_{argument}", legacy_resources)
loaded_resources.add(slugify(f"{_type}_{argument}"))
Expand Down Expand Up @@ -553,20 +482,6 @@ def get_arguments() -> dict[str, Any]:
)
continue

if _type.startswith("swap_"):
argument = ""
is_enabled = check_legacy_resource(f"{_type}_{argument}", legacy_resources)
loaded_resources.add(slugify(f"{_type}_{argument}"))
entities.append(
SystemMonitorSensor(
coordinator,
sensor_description,
entry.entry_id,
argument,
is_enabled,
)
)

# Ensure legacy imported disk_* resources are loaded if they are not part
# of mount points automatically discovered
for resource in legacy_resources:
Expand Down
4 changes: 1 addition & 3 deletions homeassistant/components/tuya/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,7 @@ def __init__(
self.hass = hass
self.manager = manager

# pylint disable can be removed when issue fixed in library
# https://github.com/tuya/tuya-device-sharing-sdk/pull/35
def update_device( # pylint: disable=arguments-renamed
def update_device(
self,
device: CustomerDevice,
updated_status_properties: list[str] | None = None,
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/tuya/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,5 @@
"integration_type": "hub",
"iot_class": "cloud_push",
"loggers": ["tuya_iot"],
"requirements": ["tuya-device-sharing-sdk==0.2.3"]
"requirements": ["tuya-device-sharing-sdk==0.2.4"]
}
4 changes: 2 additions & 2 deletions requirements_all.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions requirements_test_all.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading