Bump zwave-js-server-python to 0.64.0 (#147176)

This commit is contained in:
Petar Petrov
2025-06-20 15:59:54 +03:00
committed by GitHub
parent 33bde48c9c
commit 46aea5d9dc
5 changed files with 35 additions and 38 deletions

View File

@ -32,19 +32,19 @@ from zwave_js_server.exceptions import (
NotFoundError,
SetValueFailed,
)
from zwave_js_server.firmware import controller_firmware_update_otw, update_firmware
from zwave_js_server.firmware import driver_firmware_update_otw, update_firmware
from zwave_js_server.model.controller import (
ControllerStatistics,
InclusionGrant,
ProvisioningEntry,
QRProvisioningInformation,
)
from zwave_js_server.model.controller.firmware import (
ControllerFirmwareUpdateData,
ControllerFirmwareUpdateProgress,
ControllerFirmwareUpdateResult,
)
from zwave_js_server.model.driver import Driver
from zwave_js_server.model.driver.firmware import (
DriverFirmwareUpdateData,
DriverFirmwareUpdateProgress,
DriverFirmwareUpdateResult,
)
from zwave_js_server.model.endpoint import Endpoint
from zwave_js_server.model.log_config import LogConfig
from zwave_js_server.model.log_message import LogMessage
@ -2340,8 +2340,8 @@ def _get_node_firmware_update_progress_dict(
}
def _get_controller_firmware_update_progress_dict(
progress: ControllerFirmwareUpdateProgress,
def _get_driver_firmware_update_progress_dict(
progress: DriverFirmwareUpdateProgress,
) -> dict[str, int | float]:
"""Get a dictionary of a controller's firmware update progress."""
return {
@ -2370,7 +2370,8 @@ async def websocket_subscribe_firmware_update_status(
) -> None:
"""Subscribe to the status of a firmware update."""
assert node.client.driver
controller = node.client.driver.controller
driver = node.client.driver
controller = driver.controller
@callback
def async_cleanup() -> None:
@ -2408,21 +2409,21 @@ async def websocket_subscribe_firmware_update_status(
)
@callback
def forward_controller_progress(event: dict) -> None:
progress: ControllerFirmwareUpdateProgress = event["firmware_update_progress"]
def forward_driver_progress(event: dict) -> None:
progress: DriverFirmwareUpdateProgress = event["firmware_update_progress"]
connection.send_message(
websocket_api.event_message(
msg[ID],
{
"event": event["event"],
**_get_controller_firmware_update_progress_dict(progress),
**_get_driver_firmware_update_progress_dict(progress),
},
)
)
@callback
def forward_controller_finished(event: dict) -> None:
finished: ControllerFirmwareUpdateResult = event["firmware_update_finished"]
def forward_driver_finished(event: dict) -> None:
finished: DriverFirmwareUpdateResult = event["firmware_update_finished"]
connection.send_message(
websocket_api.event_message(
msg[ID],
@ -2436,8 +2437,8 @@ async def websocket_subscribe_firmware_update_status(
if controller.own_node == node:
msg[DATA_UNSUBSCRIBE] = unsubs = [
controller.on("firmware update progress", forward_controller_progress),
controller.on("firmware update finished", forward_controller_finished),
driver.on("firmware update progress", forward_driver_progress),
driver.on("firmware update finished", forward_driver_finished),
]
else:
msg[DATA_UNSUBSCRIBE] = unsubs = [
@ -2447,17 +2448,13 @@ async def websocket_subscribe_firmware_update_status(
connection.subscriptions[msg["id"]] = async_cleanup
connection.send_result(msg[ID])
if node.is_controller_node and (
controller_progress := controller.firmware_update_progress
):
if node.is_controller_node and (driver_progress := driver.firmware_update_progress):
connection.send_message(
websocket_api.event_message(
msg[ID],
{
"event": "firmware update progress",
**_get_controller_firmware_update_progress_dict(
controller_progress
),
**_get_driver_firmware_update_progress_dict(driver_progress),
},
)
)
@ -2559,9 +2556,9 @@ class FirmwareUploadView(HomeAssistantView):
try:
if node.client.driver.controller.own_node == node:
await controller_firmware_update_otw(
await driver_firmware_update_otw(
node.client.ws_server_url,
ControllerFirmwareUpdateData(
DriverFirmwareUpdateData(
uploaded_file.filename,
await hass.async_add_executor_job(uploaded_file.file.read),
),

View File

@ -9,7 +9,7 @@
"integration_type": "hub",
"iot_class": "local_push",
"loggers": ["zwave_js_server"],
"requirements": ["pyserial==3.5", "zwave-js-server-python==0.63.0"],
"requirements": ["pyserial==3.5", "zwave-js-server-python==0.64.0"],
"usb": [
{
"vid": "0658",

2
requirements_all.txt generated
View File

@ -3193,7 +3193,7 @@ ziggo-mediabox-xl==1.1.0
zm-py==0.5.4
# homeassistant.components.zwave_js
zwave-js-server-python==0.63.0
zwave-js-server-python==0.64.0
# homeassistant.components.zwave_me
zwave-me-ws==0.4.3

View File

@ -2625,7 +2625,7 @@ zeversolar==0.3.2
zha==0.0.60
# homeassistant.components.zwave_js
zwave-js-server-python==0.63.0
zwave-js-server-python==0.64.0
# homeassistant.components.zwave_me
zwave-me-ws==0.4.3

View File

@ -32,7 +32,7 @@ from zwave_js_server.model.controller import (
ProvisioningEntry,
QRProvisioningInformation,
)
from zwave_js_server.model.controller.firmware import ControllerFirmwareUpdateData
from zwave_js_server.model.driver.firmware import DriverFirmwareUpdateData
from zwave_js_server.model.node import Node
from zwave_js_server.model.node.firmware import NodeFirmwareUpdateData
from zwave_js_server.model.value import ConfigurationValue, get_value_id_str
@ -3501,7 +3501,7 @@ async def test_firmware_upload_view(
"homeassistant.components.zwave_js.api.update_firmware",
) as mock_node_cmd,
patch(
"homeassistant.components.zwave_js.api.controller_firmware_update_otw",
"homeassistant.components.zwave_js.api.driver_firmware_update_otw",
) as mock_controller_cmd,
patch.dict(
"homeassistant.components.zwave_js.api.USER_AGENT",
@ -3544,7 +3544,7 @@ async def test_firmware_upload_view_controller(
"homeassistant.components.zwave_js.api.update_firmware",
) as mock_node_cmd,
patch(
"homeassistant.components.zwave_js.api.controller_firmware_update_otw",
"homeassistant.components.zwave_js.api.driver_firmware_update_otw",
) as mock_controller_cmd,
patch.dict(
"homeassistant.components.zwave_js.api.USER_AGENT",
@ -3557,7 +3557,7 @@ async def test_firmware_upload_view_controller(
)
mock_node_cmd.assert_not_called()
assert mock_controller_cmd.call_args[0][1:2] == (
ControllerFirmwareUpdateData(
DriverFirmwareUpdateData(
"file", b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
),
)
@ -4415,7 +4415,7 @@ async def test_subscribe_controller_firmware_update_status(
event = Event(
type="firmware update progress",
data={
"source": "controller",
"source": "driver",
"event": "firmware update progress",
"progress": {
"sentFragments": 1,
@ -4424,7 +4424,7 @@ async def test_subscribe_controller_firmware_update_status(
},
},
)
client.driver.controller.receive_event(event)
client.driver.receive_event(event)
msg = await ws_client.receive_json()
assert msg["event"] == {
@ -4439,7 +4439,7 @@ async def test_subscribe_controller_firmware_update_status(
event = Event(
type="firmware update finished",
data={
"source": "controller",
"source": "driver",
"event": "firmware update finished",
"result": {
"status": 255,
@ -4447,7 +4447,7 @@ async def test_subscribe_controller_firmware_update_status(
},
},
)
client.driver.controller.receive_event(event)
client.driver.receive_event(event)
msg = await ws_client.receive_json()
assert msg["event"] == {
@ -4464,13 +4464,13 @@ async def test_subscribe_controller_firmware_update_status_initial_value(
ws_client = await hass_ws_client(hass)
device = get_device(hass, client.driver.controller.nodes[1])
assert client.driver.controller.firmware_update_progress is None
assert client.driver.firmware_update_progress is None
# Send a firmware update progress event before the WS command
event = Event(
type="firmware update progress",
data={
"source": "controller",
"source": "driver",
"event": "firmware update progress",
"progress": {
"sentFragments": 1,
@ -4479,7 +4479,7 @@ async def test_subscribe_controller_firmware_update_status_initial_value(
},
},
)
client.driver.controller.receive_event(event)
client.driver.receive_event(event)
client.async_send_command_no_wait.return_value = {}