From d242eaa37524b8a4f07884b39c3dec6fd8f097c0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 16 Jul 2023 20:41:39 -1000 Subject: [PATCH] Remove the ability to defer websocket message construction (#96734) This was added in #71364 but all use cases of it were refactored away so it can now be removed --- homeassistant/components/websocket_api/auth.py | 2 +- homeassistant/components/websocket_api/connection.py | 2 +- homeassistant/components/websocket_api/http.py | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/websocket_api/auth.py b/homeassistant/components/websocket_api/auth.py index d0831f2e90e..9f8e8bfb6f8 100644 --- a/homeassistant/components/websocket_api/auth.py +++ b/homeassistant/components/websocket_api/auth.py @@ -57,7 +57,7 @@ class AuthPhase: self, logger: WebSocketAdapter, hass: HomeAssistant, - send_message: Callable[[str | dict[str, Any] | Callable[[], str]], None], + send_message: Callable[[str | dict[str, Any]], None], cancel_ws: CALLBACK_TYPE, request: Request, ) -> None: diff --git a/homeassistant/components/websocket_api/connection.py b/homeassistant/components/websocket_api/connection.py index a554001970b..f598906661c 100644 --- a/homeassistant/components/websocket_api/connection.py +++ b/homeassistant/components/websocket_api/connection.py @@ -51,7 +51,7 @@ class ActiveConnection: self, logger: WebSocketAdapter, hass: HomeAssistant, - send_message: Callable[[str | dict[str, Any] | Callable[[], str]], None], + send_message: Callable[[str | dict[str, Any]], None], user: User, refresh_token: RefreshToken, ) -> None: diff --git a/homeassistant/components/websocket_api/http.py b/homeassistant/components/websocket_api/http.py index 728405b5d96..fcaa13ff8de 100644 --- a/homeassistant/components/websocket_api/http.py +++ b/homeassistant/components/websocket_api/http.py @@ -95,7 +95,7 @@ class WebSocketHandler: # to where messages are queued. This allows the implementation # to use a deque and an asyncio.Future to avoid the overhead of # an asyncio.Queue. - self._message_queue: deque[str | Callable[[], str] | None] = deque() + self._message_queue: deque[str | None] = deque() self._ready_future: asyncio.Future[None] | None = None def __repr__(self) -> str: @@ -136,12 +136,11 @@ class WebSocketHandler: messages_remaining = len(message_queue) # A None message is used to signal the end of the connection - if (process := message_queue.popleft()) is None: + if (message := message_queue.popleft()) is None: return debug_enabled = is_enabled_for(logging_debug) messages_remaining -= 1 - message = process if isinstance(process, str) else process() if ( not messages_remaining @@ -156,9 +155,9 @@ class WebSocketHandler: messages: list[str] = [message] while messages_remaining: # A None message is used to signal the end of the connection - if (process := message_queue.popleft()) is None: + if (message := message_queue.popleft()) is None: return - messages.append(process if isinstance(process, str) else process()) + messages.append(message) messages_remaining -= 1 joined_messages = ",".join(messages) @@ -184,7 +183,7 @@ class WebSocketHandler: self._peak_checker_unsub = None @callback - def _send_message(self, message: str | dict[str, Any] | Callable[[], str]) -> None: + def _send_message(self, message: str | dict[str, Any]) -> None: """Send a message to the client. Closes connection if the client is not reading the messages.