From a117280973542cdfdc6cd6564ecfcc5f1564f511 Mon Sep 17 00:00:00 2001 From: Teemu Rytilahti Date: Mon, 3 Jun 2024 20:03:41 +0200 Subject: [PATCH 1/2] Do not raise on multi-request errors --- kasa/smartprotocol.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kasa/smartprotocol.py b/kasa/smartprotocol.py index b1cde04df..545f8147a 100644 --- a/kasa/smartprotocol.py +++ b/kasa/smartprotocol.py @@ -402,7 +402,9 @@ async def query(self, request: str | dict, retry_count: int = 3) -> dict: ret_val = {} for multi_response in multi_responses: method = multi_response["method"] - self._handle_response_error_code(multi_response, method) + self._handle_response_error_code( + multi_response, method, raise_on_error=False + ) ret_val[method] = multi_response.get("result") return ret_val From b29ee5f250dbb99198967b9c15186c32f1c767a1 Mon Sep 17 00:00:00 2001 From: Teemu Rytilahti Date: Mon, 3 Jun 2024 20:34:18 +0200 Subject: [PATCH 2/2] Fix tests --- kasa/tests/test_smartprotocol.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kasa/tests/test_smartprotocol.py b/kasa/tests/test_smartprotocol.py index a2bcacfa4..5a0eb0fa7 100644 --- a/kasa/tests/test_smartprotocol.py +++ b/kasa/tests/test_smartprotocol.py @@ -181,8 +181,9 @@ async def test_childdevicewrapper_multiplerequest_error(dummy_protocol, mocker): } wrapped_protocol = _ChildProtocolWrapper("dummyid", dummy_protocol) mocker.patch.object(wrapped_protocol._transport, "send", return_value=mock_response) - with pytest.raises(KasaException): - await wrapped_protocol.query(DUMMY_QUERY) + res = await wrapped_protocol.query(DUMMY_QUERY) + assert res["get_device_info"] == {"foo": "bar"} + assert res["invalid_command"] == SmartErrorCode(-1001) @pytest.mark.parametrize("list_sum", [5, 10, 30])