@@ -536,20 +536,15 @@ def _map_tool_definition(f: ToolDefinition) -> BetaToolParam:
536536 }
537537
538538
539- def _map_usage (message : BetaMessage | BetaRawMessageStreamEvent ) -> usage .RequestUsage :
539+ def _map_usage (message : BetaMessage | BetaRawMessageStartEvent | BetaRawMessageDeltaEvent ) -> usage .RequestUsage :
540540 if isinstance (message , BetaMessage ):
541541 response_usage = message .usage
542542 elif isinstance (message , BetaRawMessageStartEvent ):
543543 response_usage = message .message .usage
544544 elif isinstance (message , BetaRawMessageDeltaEvent ):
545545 response_usage = message .usage
546546 else :
547- # No usage information provided in:
548- # - RawMessageStopEvent
549- # - RawContentBlockStartEvent
550- # - RawContentBlockDeltaEvent
551- # - RawContentBlockStopEvent
552- return usage .RequestUsage ()
547+ assert_never (message )
553548
554549 # Store all integer-typed usage values in the details, except 'output_tokens' which is represented exactly by
555550 # `response_tokens`
@@ -586,10 +581,8 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]:
586581 current_block : BetaContentBlock | None = None
587582
588583 async for event in self ._response :
589- self ._usage += _map_usage (event )
590-
591584 if isinstance (event , BetaRawMessageStartEvent ):
592- pass
585+ self . _usage = _map_usage ( event )
593586
594587 elif isinstance (event , BetaRawContentBlockStartEvent ):
595588 current_block = event .content_block
@@ -652,7 +645,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]:
652645 pass
653646
654647 elif isinstance (event , BetaRawMessageDeltaEvent ):
655- pass
648+ self . _usage = _map_usage ( event )
656649
657650 elif isinstance (event , BetaRawContentBlockStopEvent | BetaRawMessageStopEvent ): # pragma: no branch
658651 current_block = None
0 commit comments