From 494d783a8092b4e4ca41a5893fd2d63c0934c275 Mon Sep 17 00:00:00 2001 From: Julio Quinteros Pro Date: Thu, 26 Feb 2026 13:22:56 -0300 Subject: [PATCH] fix(mypy): suppress attr-defined errors on websocket send/close calls CI MyPy resolves CLIENT_CONNECTION_CLASS as Optional[ClientConnection] and flags .send() and .close() as attr-defined errors. These methods exist at runtime on the websocket connection object. Add type: ignore comments to unblock the linting CI. Co-Authored-By: Claude Opus 4.6 --- litellm/litellm_core_utils/realtime_streaming.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/litellm/litellm_core_utils/realtime_streaming.py b/litellm/litellm_core_utils/realtime_streaming.py index 8df41aea4a3..760efa71ab7 100644 --- a/litellm/litellm_core_utils/realtime_streaming.py +++ b/litellm/litellm_core_utils/realtime_streaming.py @@ -230,9 +230,9 @@ class RealTimeStreaming: message, self.model, self.session_configuration_request ) for msg in transformed: - await self.backend_ws.send(msg) + await self.backend_ws.send(msg) # type: ignore[union-attr] else: - await self.backend_ws.send(message) + await self.backend_ws.send(message) # type: ignore[union-attr] def _has_realtime_guardrails(self) -> bool: """Return True if any callback is registered for realtime guardrail event types.""" @@ -362,7 +362,7 @@ class RealTimeStreaming: "[realtime guardrail] ending session after violation %d", self._violation_count, ) - await self.backend_ws.close() + await self.backend_ws.close() # type: ignore[union-attr] verbose_logger.warning( "[realtime guardrail] BLOCKED transcript (violation %d): %r",