
    ii:                        % S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr  S SKJrJrJrJrJrJrJr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  SS
KJr  SSK J!r!  SSK"J#r#  SSK$J%r%J&r&  Sr'\RP                  " \)5      r*\" S0 S9r+\\\,\4      \-S'   \" S5      r.\S\\,\4   S\S   4S j5       r/ " S S\5      r0 " S S\5      r1 " S S5      r2\1Rg                  5         g)    N)contextmanager)Context
ContextVarTokencopy_context)partial)AnyCallableDict	GeneratorListOptionalProtocolTypeVar)
deprecated)	BaseModel
ConfigDictField   )	BaseEvent)BaseEventHandler)SpanDropEvent)active_span_id)BaseSpanHandlerNullSpanHandler__dispatcher_span_decorated__instrument_tags)defaultactive_instrument_tags_Rnew_tagsreturnNNNc              #      #    [         R                  U 5      n S v   [         R                  U5        g ! [         R                  U5        f = f7fN)r   setreset)r!   tokens     `/home/james-whalen/.local/lib/python3.13/site-packages/llama_index_instrumentation/dispatcher.pyr   r   "   s:     "&&x0E,$$U+$$U+s   A3 AA

Ac                   *    \ rS rSrS\S\SS4S jrSrg)EventDispatcher,   eventkwargsr"   Nc                     g r%    )selfr-   r.   s      r)   __call__EventDispatcher.__call__-   s        r0   )__name__
__module____qualname____firstlineno__r   r	   r2   __static_attributes__r0   r4   r)   r+   r+   ,   s    DiD3D4Dr4   r+   c                   8  ^  \ rS rSr% Sr\" SS9r\" \SS9r	\\
S'   \" / SS	9r\\   \
S
'   \" \" 5       /SS	9r\\   \
S'   \" \SS9r\\
S'   \" SSS	9r\S   \
S'   \" SSS	9r\\
S'   \" SSS	9r\\
S'   \" \SS9r\\\\4      \
S'   S/ / SSSS4S\S
\\   S\\   S\S\S   S\S\4U 4S jjjr\S9S j5       r\S9S j5       rS\SS4S  jrS\SS4S! jr S"\!S#\SS4S$ jr"S"\!S#\SS4S% jr#\$" S&S'S(9S\%4S) j5       r&   S:S*\S+\'RP                  S,\\   S-\\   S.\\\\4      S#\SS4S/ jjr)  S;S*\S+\'RP                  S,\\   S0\\*   S#\SS4S1 jjr+  S;S*\S+\'RP                  S,\\   S2\\   S#\SS4S3 jjr,S4\-S5\.4   S\-S5\.4   4S6 jr/\S\4S7 j5       r0S8r1U =r2$ )<
Dispatcher0   a  
Dispatcher class.

Responsible for dispatching BaseEvent (and its subclasses) as well as
sending signals to enter/exit/drop a BaseSpan. It does so by sending
event and span signals to its attached BaseEventHandler as well as
BaseSpanHandler.

Concurrency:
    - Dispatcher is async-task and thread safe in the sense that
    spans of async coros will maintain its hieararchy or trace-trees and
    spans which emanate from various threads will also maintain its
    hierarchy.
T)arbitrary_types_allowedzName of dispatcher)default_factorydescriptionnamezList of attached handlers)r   r?   event_handlerszSpan handler.span_handlerszName of parent Dispatcher.parent_nameNzDispatcher manager.ManagermanagerrootzRoot of the Dispatcher tree.	root_namezGWhether to propagate the event to parent dispatchers and their handlers	propagatezJId of current enclosing span. Used for creating `dispatch_event` partials.current_span_ids c           
      ,   > [         TU ]  UUUUUUUS9  g )N)r@   rA   rB   rC   rE   rG   rH   )super__init__)	r1   r@   rA   rB   rC   rE   rG   rH   	__class__s	           r)   rM   Dispatcher.__init__X   s,     	)'# 	 	
r4   r"   c                 f    U R                   c   eU R                   R                  U R                     $ r%   )rE   dispatchersrC   r1   s    r)   parentDispatcher.parentl   s-    ||'''||''(8(899r4   c                 f    U R                   c   eU R                   R                  U R                     $ r%   )rE   rQ   rG   rR   s    r)   rF   Dispatcher.rootq   s+    ||'''||''77r4   handlerc                 0    U =R                   U/-  sl         gzAdd handler to set of handlers.N)rA   r1   rW   s     r)   add_event_handlerDispatcher.add_event_handlerv   s    y(r4   c                 0    U =R                   U/-  sl         grY   )rB   rZ   s     r)   add_span_handlerDispatcher.add_span_handlerz   s    wi'r4   r-   r.   c                 4   U nUR                   R                  [        R                  5       5        U(       aQ  UR                   H  n UR
                  " U40 UD6  M     UR                  (       d  SnOUR                  nU(       a  MP  gg! [         a     MS  f = f)z*Dispatch event to all registered handlers.N)	tagsupdater   getrA   handleBaseExceptionrH   rS   )r1   r-   r.   chs        r)   r-   Dispatcher.event~   s    "& 	

04467%%HHU-f- &
 ;;HH a % s   B		
BBc           
        #    U nUR                   R                  [        R                  5       5        / nU(       as  UR                   H:  n UR                  [        R                  " UR                  " U40 UD65      5        M<     UR                  (       d  SnOUR                  nU(       a  Ms  U(       a  [        R                  " USS06I Sh  vN   gg! [         a     M  f = f N7f)z9Asynchronously dispatch event to all registered handlers.Nreturn_exceptionsT)ra   rb   r   rc   rA   appendasynciocreate_taskahandlere   rH   rS   gather)r1   r-   r.   rf   tasksrg   s         r)   aeventDispatcher.aevent   s     "&

04467$&%%LL!4!4QYYu5O5O!PQ &
 ;;HH a ..%@4@@@  %  As<   AC(6C+C(. C(C&C(
C#C("C##C(z0.10.41z`get_dispatch_event()` has been deprecated in favor of using `event()` directly. If running into this warning through an integration package, then please update your integration to the latest version.)versionreasonc                     U R                   $ )a  
Keep for backwards compatibility.

In llama-index-core v0.10.41, we removed this method and made changes to
integrations or packs that relied on this method. Adding back this method
in case any integrations or apps have not been upgraded. That is, they
still rely on this method.
)r-   rR   s    r)   get_dispatch_eventDispatcher.get_dispatch_event   s    " zzr4   id_
bound_argsinstance	parent_idra   c           
          U nU(       aV  UR                    H  n UR                  " SUUUUUS.UD6  M     UR                  (       d  SnOUR                  nU(       a  MU  gg! [         a     MX  f = f)z9Send notice to handlers that a span with id_ has started.rx   ry   rz   r{   ra   Nr0   )rB   
span_enterre   rH   rS   )	r1   rx   ry   rz   r{   ra   r.   rf   rg   s	            r)   r~   Dispatcher.span_enter   s{     #'__
LL #-!)"+! ! % ;;HH! a % s   A!!
A/.A/errc           	          U nU(       aU  UR                    H  n UR                  " SUUUUS.UD6  M     UR                  (       d  SnOUR                  nU(       a  MT  gg! [         a     MW  f = f)z>Send notice to handlers that a span with id_ is being dropped.rx   ry   rz   r   Nr0   )rB   	span_dropre   rH   rS   )r1   rx   ry   rz   r   r.   rf   rg   s           r)   r   Dispatcher.span_drop   sx     #'__	KK #-!)	
 ! % ;;HH a %    A  
A.-A.resultc           	          U nU(       aU  UR                    H  n UR                  " SUUUUS.UD6  M     UR                  (       d  SnOUR                  nU(       a  MT  gg! [         a     MW  f = f)z8Send notice to handlers that a span with id_ is exiting.rx   ry   rz   r   Nr0   )rB   	span_exitre   rH   rS   )r1   rx   ry   rz   r   r.   rf   rg   s           r)   r   Dispatcher.span_exit   sx     #'__	KK #-!)%	
 ! % ;;HH a % r   func.c                   ^   [        U[        5      (       a  U$ [        U[        S5        [        R
                  S[        S[        S[        S[        S[        4
U 4S jj5       n[        R
                  S[        S[        S[        S[        S[        4
U 4S jj5       n[        R                  " U5      (       a  U" U5      $ U" U5      $ ! [         a     Nf = f)	NTr   rz   argsr.   r"   c                 4  >^ [         R                  " U 5      R                  " U0 UD6nUb?  [        U5      R                  nU R                  nU SU S[
        R                  " 5        3nO$U R                   S[
        R                  " 5        3n[        R                  5       nS n	[        5       n
[        R                  " U5      mTR                  [        R                  L a  S OTR                  nTR!                  UUUUUS9  S["        R$                  S[&        S[         R(                  S[*        S[,        S	S 4UU4S
 jjn U " U0 UD6n	[/        U	["        R$                  5      (       aj  ["        R0                  " U	5      nUR3                  [5        UUUUU
S95        U[/        U	["        R$                  5      (       d  [        R6                  " T5        $ $ TR9                  XtXS9  U	[/        U	["        R$                  5      (       d  [        R6                  " T5        $ $ ! [:         a8  nTR=                  [?        U['        U5      S95        TRA                  XtXS9  e S nAff = f! [/        U	["        R$                  5      (       d  [        R6                  " T5        f f = f)N.-r}   futurespan_idry   rz   contextr"   c           	      P  >  U R                  5       (       a  S OU R                  5       nTR                  UUUUS9  U UR                  [        R
                  T5        $ ! [         a"  n[        R                  SU 35         S nA$ S nAff = f! [         a8  nTR                  [        U[        U5      S95        TR                  XX6S9  e S nAff = f!  UR                  [        R
                  T5        f ! [         a"  n[        R                  SU 35         S nAf S nAff = f= f)Nr   z Failed to reset active_span_id: r   err_strr   )	exceptionr   r   runr   r'   
ValueError_loggerdebugre   r-   r   strr   )	r   r   ry   rz   r   r   er1   r(   s	          r)   handle_future_result>Dispatcher.span.<locals>.wrapper.<locals>.handle_future_result,  s   N%+%5%5%7%7TV]]_FNN##-!)%	 #  "NN$8$8%@% N  (H&LMMN % JJ}Wc!fMNNN#X #  NN$8$8%@% N  (H&LMMNsd   :B  A
B)BB
C3CCC D% C65D%6
D" DD%D""D%)r   ry   rz   r   r   r   r   )!inspect	signaturebindtyper5   uuiduuid4r7   r   rc   r   r   r&   	old_valuer   MISSINGr~   rl   Futurer   BoundArgumentsr	   r   
isinstanceensure_futureadd_done_callbackr   r'   r   re   r-   r   r   )r   rz   r   r.   ry   actual_classmethod_namerx   ra   r   r   r{   r   
new_futurer   r(   r1   s                  @r)   wrapper Dispatcher.span.<locals>.wrapper  s`    **4055tFvFJ##H~66"mm%a}Adjjl^D**+1TZZ\N;)--/DF #nG"&&s+E %5== @eooIOO%!#   N N N $22 N 	 N
 ! N  N  ND0t.v.fgnn55!(!6!6v!>J000$''1%-$+ & "&'..99"((/ : NN #  " "&'..99"((/ : ! 

=c!fEF3X
 "&'..99"((/ :s+   AH H 
I$3III 8Jc           	      *  >#    [         R                  " U 5      R                  " U0 UD6nUb?  [        U5      R                  nU R                  nU SU S[
        R                  " 5        3nO$U R                   S[
        R                  " 5        3n[        R                  5       n[        R                  " U5      n	U	R                  [        R                  L a  S OU	R                  n
TR                  UUUU
US9   U " U0 UD6I S h  vN nTR!                  XtXS9  U[        R"                  " U	5        $  N,! [$         a8  nTR'                  [)        U[+        U5      S95        TR-                  XtXS9  e S nAff = f! [        R"                  " U	5        f = f7f)Nr   r   r}   r   r   r   )r   r   r   r   r5   r   r   r7   r   rc   r   r&   r   r   r   r~   r   r'   re   r-   r   r   r   )r   rz   r   r.   ry   r   r   rx   ra   r(   r{   r   r   r1   s                r)   async_wrapper&Dispatcher.span.<locals>.async_wrapperk  sj     !**4055tFvFJ##H~66"mm%a}Adjjl^D**+1TZZ\N;)--/D"&&s+E %5== @eooIOO%!#  ,#T4V44 X    $$U+ 5  

=c!fEF3X $$U+sN   C5F9D3 D1D3 	E8 F1D3 3
E5=3E00E55E8 8FF)hasattrDISPATCHER_SPAN_DECORATED_ATTRsetattrAttributeErrorwrapt	decoratorr
   r	   listdictr   iscoroutinefunction)r1   r   r   r   s   `   r)   spanDispatcher.span  s    	t;<<D8$? 
U	0( U	0c U	0 U	0t U	0PS U	0 
U	0n 
"	,"	,&)"	,15"	,?C"	,"	, 
"	,H &&t,, &&4= K  	 	s   C C 
CCc                     U R                   (       a%  U R                   R                   SU R                   3$ U R                  $ )zName to be used in logging.r   )rS   r@   rR   s    r)   log_nameDispatcher.log_name  s5     ;;kk&&'q4499r4   r0   )r"   r;   r#   )NN)3r5   r6   r7   r8   __doc__r   model_configr   r   r@   __annotations__rA   r   r   r   rB   r   rC   rE   r   rG   rH   boolr   rI   r   r	   rM   propertyrS   rF   r[   r^   r   r-   rq   r   r+   rv   r   r   r~   re   r   r   r
   r    r   r   r9   __classcell__)rN   s   @r)   r;   r;   0   sr    d;Lc7KLD#L-2 ;.ND)*  ,1 "#,M4(  )EK  $)"7$GXi   67UVIsV]It  27`2htCH~.  13/1'+

 -.
 O,	

 
 )$
 
 
 
( : : 8 8))9 )d )( (D (9   $A) As At A$ =	O 		 #'#')- ** 3-	
 C= tCH~&  
B #''+ ** 3-	
 m$  
> #' $ ** 3-	
   
6K!#r'* K!xR/@ K!Z #  r4   r;   c                   8    \ rS rSrS\SS4S jrS\SS4S jrSrg)	rD   i  rF   r"   Nc                 *    UR                   U0U l        g r%   r@   rQ   )r1   rF   s     r)   rM   Manager.__init__  s    3799d2Cr4   dc                 j    UR                   U R                  ;   a  g XR                  UR                   '   g r%   r   )r1   r   s     r)   add_dispatcherManager.add_dispatcher  s)    66T%%%'(QVV$r4   )rQ   )r5   r6   r7   r8   r;   rM   r   r9   r0   r4   r)   rD   rD     s+    DZ DD D)
 )t )r4   rD   )4rl   r   loggingr   
contextlibr   contextvarsr   r   r   r   	functoolsr   typingr	   r
   r   r   r   r   r   r   r   r   pydanticr   r   r   baser   rA   r   events.spanr   r   r   rB   r   r   r   	getLoggerr5   r   r   r   r   r    r   r+   r;   rD   model_rebuildr0   r4   r)   <module>r      s        % @ @  T T T  ! 1 1  , &  
 "A 


H
% 6@r6 
4S>2  T] ,d38n ,;K1L , ,Eh Ek k\) )    r4   