
    ^h                     d    S SK r S SKJr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
Jr   " S S5      rg)    N)Optional)verbose_logger)ChatCompletionToolCallChunk#ChatCompletionToolCallFunctionChunkChatCompletionUsageBlock)GenericStreamingChunkUsagec                   L    \ rS rSrS\4S jrS\S\4S jrS r	S r
S	 rS
 rSrg)ModelResponseIterator   sync_streamc                     Xl         g N)streaming_response)selfr   r   s      a/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/databricks/streaming_utils.py__init__ModelResponseIterator.__init__   s    "4    chunkreturnc           	      8    [         R                  " S0 UDSS0D6nSnS nSnSnS nUR                  S   R                  R                  b#  UR                  S   R                  R                  nUR                  S   R                  R
                  Gbh  [        UR                  S   R                  R
                  5      S:  Ga7  UR                  S   R                  R
                  S   R                  Gb  UR                  S   R                  R
                  S   R                  R                   b  [        UR                  S   R                  R
                  S   R                  S[        UR                  S   R                  R
                  S   R                  R                  UR                  S   R                  R
                  S   R                  R                  S9UR                  S   R                  S9nUR                  S   R                  b  SnUR                  S   R                  n[        US	S 5      nUb)  [!        UR"                  UR$                  UR&                  S
9n[)        UUUUUSS9$ ! [*        R,                   a    [/        SU 35      ef = f)NstreamT Fr   function)name	arguments)idtyper   indexusage)prompt_tokenscompletion_tokenstotal_tokens)texttool_useis_finishedfinish_reasonr!   r    z"Failed to decode JSON from chunk:  )litellmModelResponsechoicesdeltacontent
tool_callslenr   r   r   r   r   r   r    r(   getattrr   r"   r#   r$   r   jsonJSONDecodeError
ValueError)	r   r   processed_chunkr%   r&   r'   r(   r!   usage_chunks	            r   chunk_parser"ModelResponseIterator.chunk_parser   sj   7	K%33IeIDIOD>BHKM8<E&&q)//77C&..q177??  ''*00;;G//288CCDqH#++A.44??BKKW#++A.44??BKKUU 7&..q177BB1EHH#@,44Q7zz!-!$$"1"9"9!"<zz!#-!)) *11!4:: &&q)77C" / 7 7 : H H+2?GT+RK&0"-";";&1&C&C!,!9!9 )!'+  ## 	KA%IJJ	Ks   I3I6 6#Jc                 (    U R                   U l        U $ r   )r   response_iteratorr   s    r   __iter__ModelResponseIterator.__iter__M   s    !%!8!8r   c           
      F   [        U S5      (       d  U R                  U l         U R                  R                  5       n UR                  SS5      nUR                  5       n[        U5      S:  a%  [        R                  " U5      nU R                  US9$ [        SSSS SS S9$ ! [         a    [        e[
         a  n[        SU 35      eS nAff = f! [         a    [        e[
         a5  n[        R                  " S	U S
U S35        [        SSSS SS S9s S nA$ S nAff = f)Nr:   #Error receiving chunk from stream: data:r   r   r   Fr%   r'   r(   r!   r    r&   Error parsing chunk: ,
Received chunk: !. Defaulting to empty chunk here.)hasattrr   r:   __next__StopIterationr4   RuntimeErrorreplacestripr0   r2   loadsr7   r   r   debugr   r   e
json_chunks       r   rG   ModelResponseIterator.__next__Q   s;   t011%)%<%<D"	J**335E	MM'2.EKKME5zA~!ZZ.
((z(::, %"$!   	  	J!DQCHII	J$  	  	  's*=eWDef )!  		s;   B# AC C #C<C

CD +*DD D c                 D    U R                   R                  5       U l        U $ r   )r   	__aiter__async_response_iteratorr;   s    r   rS   ModelResponseIterator.__aiter__z   s    '+'>'>'H'H'J$r   c           
      l  #     U R                   R                  5       I S h  vN n UR                  SS5      nUR                  5       nUS:X  a  [        e[        U5      S:  a%  [        R                  " U5      nU R                  US9$ [        SSSS SS S9$  Nu! [         a    [        e[         a  n[	        SU 35      eS nAf[
         a  n[	        SU 35      eS nAff = f! [         a    [        e[         a5  n[        R                  " S	U S
U S35        [        SSSS SS S9s S nA$ S nAff = f7f)Nr?   r@   r   z[DONE]r   rA   FrB   rC   rD   rE   )rT   	__anext__StopAsyncIterationr4   rI   	ExceptionrJ   rK   r0   r2   rL   r7   r   r   rM   rN   s       r   rW   ModelResponseIterator.__anext__~   sS    	J66@@BBE	MM'2.EKKME ((5zA~!ZZ.
((z(::, %"$! # C! 	%$$ 	J!DQCHII 	J!DQCHII	J( " 	%$$ 	  's*=eWDef )!  		sz   D4B BB A!C# D4	C# D4B C 2C  C CC  D4#D1<*D,&D1'D4,D11D4)rT   r:   r   N)__name__
__module____qualname____firstlineno__boolr   dictr   r7   r<   rG   rS   rW   __static_attributes__r)   r   r   r   r      s;    5 58K$ 8K+@ 8Kv&R(r   r   )r2   typingr   r*   r   litellm.types.llms.openair   r   r   litellm.types.utilsr   r	   r   r)   r   r   <module>re      s,       " 
 =X Xr   