
    j                        d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlZ e j                   e      Z ed      Z ed      Zej*                  j,                  j.                  j0                  Zej*                  j,                  j.                  j4                  Zdeded	ej8                  d
efdZdeded	ej8                  d
efdZdej*                  j,                  j.                  de
j>                  dee	j@                     deee   gee   f   d	ej8                  d
ej*                  j,                  j.                  fdZ!y)    N)AnyListOptionalCallableTypeVar)tracespan)generator_wrapperserror_info_collector
StreamItemAggregatedResultoriginal_nextgenerations_aggregatorfinally_callbackreturnc                      t        j                         dt        j                  j                  j
                  dt        f fd       }|S )Nselfr   c                 :   t        | d      st        | d      rg | _        d | _        	  |       }t        | d      r| j                  j                  |       |S # t        $ r t        | d      r	  | j                        } || j                  d| j
                  | j                         t        | d      rt        | d       t        | d      rt        | d       t        | d      rt        | d        # t        | d      rt        | d       t        | d      rt        | d       t        | d      rt        | d       w w xY w t        $ rM}t        | d      r;t        j                  |      | _        t        j                  dt        |      d        d }~ww xY w)N_opik_accumulated_itemsopik_tracked_instanceToutput
error_infocapture_outputgenerators_span_to_endgenerators_trace_to_end_opik_error_infoz(Exception raised from LiteLLM stream: %sexc_info)hasattrr   r   appendStopIterationspan_to_endtrace_to_enddelattr	Exceptionr   collectLOGGERdebugstr)r   itemr   	exceptionr   r   r   s       /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/integrations/litellm/stream_patchers.pywrapperz*_create_sync_next_wrapper.<locals>.wrapper   s    t67t45/1,(,% 	 &Dt67,,33D9K 	t67?3D4P4PQF$%#'#8#8'+/3/?/?040A0A t%>?&?@t%78&89t%<=&=> t%>?&?@t%78&89t%<=&=> > 	t67(<(D(DY(O%>	N!  
 	s2   0A F0=C6-A	F6AEFAFF	functoolswrapslitellmlitellm_core_utilsstreaming_handlerCustomStreamWrapperr   )r   r   r   r.   s   ``` r-   _create_sync_next_wrapperr6      sJ    
 __]#(((::NN(	( $(T N    original_anextc                      t        j                         dt        j                  j                  j
                  dt        f fd       }|S )Nr   r   c                 V  K   t        | d      st        | d      rg | _        d | _        	  |        d {   }t        | d      r| j                  j                  |       |S 7 -# t        $ r t        | d      r	  | j                        } || j                  d| j
                  | j                         t        | d      rt        | d       t        | d      rt        | d       t        | d      rt        | d        # t        | d      rt        | d       t        | d      rt        | d       t        | d      rt        | d       w w xY w t        $ rM}t        | d      r;t        j                  |      | _        t        j                  dt        |      d        d }~ww xY ww)N_opik_accumulated_items_asyncopik_tracked_instance_asyncTr   _opik_error_info_asyncz.Exception raised from LiteLLM async stream: %sr   )r    r;   r=   r!   StopAsyncIterationspan_to_end_asynctrace_to_end_asyncr%   r&   r   r'   r(   r)   r*   )r   r+   r   r,   r   r   r8   s       r-   r.   z+_create_async_next_wrapper.<locals>.wrapperO   s     t<=t:;572.2+ 	'--Dt<=2299$?K . " 	t<=E3D4V4VWF$%#'#>#>'+/3/E/E040G0G t%DE&EFt%=>&>?t%BC&CD t%DE&EFt%=>&>?t%BC&CD D 	t<=.B.J.J9.U+D	N!  
 	sS   'F)A& A$,A& #F)$A& &F&<=D9A	F&AEF&AF!!F&&F)r/   )r8   r   r   r.   s   ``` r-   _create_async_next_wrapperrA   J   sJ    
 __^$(((::NN(	( %(T Nr7   streamr#   r$   c                 :   t        t        ||      t        j                  j                  j
                  _        t        t        ||      t        j                  j                  j
                  _	        d| _
        || _        || _        d| _        || _        || _        | S )NT)r6   _original_nextr2   r3   r4   r5   __next__rA   _original_anext	__anext__r   r#   r$   r<   r?   r@   )rB   r#   r$   r   r   s        r-   patch_streamrH   }   s     	"24D	
 00DDM 	#35E	
 00DDN $(F $F&F)-F&*F ,FMr7   )"loggingr0   typingr   r   r   r   r   opik.api_objectsr   r	   opik.decoratorr
   r   ,litellm.litellm_core_utils.streaming_handlerr2   	getLogger__name__r(   r   r   r3   r4   r5   rE   rD   rG   rF   FinishGeneratorCallbackr6   rA   SpanData	TraceDatarH    r7   r-   <module>rT      st     9 9 ( C 3 
		8	$\"
-.  00DDMM  00DDNN 
00$0 )@@0 	0f00$0 )@@0 	0f&&88LL 5??+ %d:&6%7BR9S%ST	
 )@@ 11EEr7   