3131 TerminationEvent ,
3232 TurnEvent ,
3333 UpdateConfiguration ,
34+ WarningEvent ,
3435)
3536
3637logger = logging .getLogger (__name__ )
@@ -220,6 +221,8 @@ def _read_message(self) -> None:
220221
221222 if isinstance (message , ErrorEvent ):
222223 self ._handle_error (message )
224+ elif isinstance (message , WarningEvent ):
225+ self ._handle_warning (message )
223226 elif message :
224227 self ._handle_message (message )
225228 else :
@@ -250,6 +253,10 @@ def _parse_message(self, data: Dict[str, Any]) -> Optional[EventMessage]:
250253 return SpeechStartedEvent .model_validate (data )
251254 elif event_type == StreamingEvents .LLMGatewayResponse :
252255 return LLMGatewayResponseEvent .model_validate (data )
256+ elif event_type == StreamingEvents .Error :
257+ return ErrorEvent .model_validate (data )
258+ elif event_type == StreamingEvents .Warning :
259+ return WarningEvent .model_validate (data )
253260 else :
254261 return None
255262 elif "error" in data :
@@ -267,6 +274,13 @@ def _parse_event_type(message_type: Optional[Any]) -> Optional[StreamingEvents]:
267274 except KeyError :
268275 return None
269276
277+ def _handle_warning (self , warning : WarningEvent ):
278+ logger .warning (
279+ "Streaming warning (code=%s): %s" , warning .warning_code , warning .warning
280+ )
281+ for handler in self ._handlers [StreamingEvents .Warning ]:
282+ handler (self , warning )
283+
270284 def _handle_error (
271285 self ,
272286 error : Union [
@@ -291,6 +305,7 @@ def _parse_error(
291305 if isinstance (error , ErrorEvent ):
292306 return StreamingError (
293307 message = error .error ,
308+ code = error .error_code ,
294309 )
295310 elif isinstance (error , websockets .exceptions .ConnectionClosed ):
296311 if (
0 commit comments