
    9iUm              	      :   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$ d d	l%m&Z& d d
l'm(Z( d dl)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8  edejr                  jt                  ejt                        Z; edejx                  ejx                        Z=dZ> ej~                         Z@deAd<    G d dee;e=f   eBe;e7dz  f         ZC G d d      ZD	 	 	 	 d%dZE	 	 	 	 d&dZFeGdd	 	 	 	 	 	 	 d'dZHdddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d(d ZIdddd!d"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)d#ZJdddd!d"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d$ZKy)+    )annotationsN)AsyncIterator	AwaitableCallableIterableIteratorSequence)partial)AnyGenericTypeVarcast)	Callbacks)CONFCONFIG_KEY_CALLCONFIG_KEY_SCRATCHPADERROR	INTERRUPT	NO_WRITESRESUMERETURN)chain_futurerun_coroutine_threadsafe)PregelScratchpad)MISSING)
TAG_HIDDEN)GraphBubbleUpGraphInterrupt)Call)Submit)arun_with_retryrun_with_retry)CachePolicyPregelExecutableTaskRetryPolicyFE)zlanggraph/pregel/retry.pyzlanggraph/pregel/runner.pyzlanggraph/pregel/executor.pyzlanggraph/utils/runnable.pyz"langchain_core/runnables/config.pyzconcurrent/futures/thread.pyzconcurrent/futures/_base.pyz;weakref.WeakSet[concurrent.futures.Future | asyncio.Future]SKIP_RERAISE_SETc                       e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   	 	 	 	 	 	 	 	 d fdZ	 	 	 	 	 	 d fdZ	 	 	 	 	 	 ddZ xZS )FuturesDictr'   eventIweakref.ref[Callable[[PregelExecutableTask, BaseException | None], None]]callbackintcounterset[F]donezthreading.Locklockc                    t         |           t        j                         | _        || _        || _        d| _        t               | _	        y )Nr   )
super__init__	threadingLockr2   r+   r-   r/   setr1   )selfr+   r-   future_type	__class__s       b/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/pregel/_runner.pyr5   zFuturesDict.__init__N   s<     	NN$	
 E	    c                   t         |   ||       |j| j                  5  | j                  j	                          | xj
                  dz  c_        d d d        |j                  t        | j                  |             y y # 1 sw Y   0xY w)N   )	r4   __setitem__r2   r+   clearr/   add_done_callbackr
   on_done)r9   keyvaluer;   s      r<   r@   zFuturesDict.__setitem__^   st    
 	C' "

  "!" !!'$,,">?	 " "s   0A??Bc                   	 | j                         x}r ||t        |             | j                  5  | j                  j	                  |       | xj
                  dz  c_        | j
                  dk(  st        | j                        r| j                  j                          d d d        y # 1 sw Y   y xY w# | j                  5  | j                  j	                  |       | xj
                  dz  c_        | j
                  dk(  st        | j                        r| j                  j                          d d d        w # 1 sw Y   w xY wxY w)Nr?   r   )	r-   
_exceptionr2   r1   addr/   _should_stop_othersr+   r8   )r9   taskfutcbs       r<   rC   zFuturesDict.on_donej   s    
	%]]_$r$4C) %		c"!<<1$(;DII(FJJNN$	% % % %		c"!<<1$(;DII(FJJNN$	% % %s0   $B6 A/B**B36EA/D;2	E;E E)r+   r'   r-   r,   r:   ztype[F]returnNone)rD   r&   rE   zPregelExecutableTask | NonerM   rN   )rJ   r$   rK   r&   rM   rN   )__name__
__module____qualname____annotations__r5   r@   rC   __classcell__)r;   s   @r<   r*   r*   G   s    HWWL
L
""
" " 
" 
@
@ +
@ 
	
@%"% % 
	%r=   r*   c                      e Zd ZdZddd	 	 	 	 	 	 	 	 	 ddZddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddddd	 	 	 	 	 	 	 	 	 	 	 	 	 dd	Z	 	 	 	 	 	 dd
Zy)PregelRunnerzResponsible for executing a set of Pregel tasks concurrently, committing
    their writes, yielding control to caller when there is output to emit, and
    interrupting other tasks if appropriate.FN)use_astreamnode_finishedc               <    || _         || _        || _        || _        y N)submit
put_writesrV   rW   )r9   rZ   r[   rV   rW   s        r<   r5   zPregelRunner.__init__   s"     $&*r=   T)reraisetimeoutretry_policy
get_waiterc             #    K   t        |      }t        t        j                  | j                        t        j                         t        j                  j                        }d  t        |      dk(  ry t        |      dk(  rx|v|t|d   }	 t        ||t        t        t        t        j                  |      |t        j                  |      || j                         i       | j	                  |d        |sy d}|
d | |       <   |D ]o  } | j!                         t        ||t        t        t        t        j                  |      |t        j                  |      || j                         i|      }
|||
<   q |r|t3        j4                         z   nd }t        |      |dndkD  rt        j                  j7                  |t        j                  j8                  |r!t;        d|t3        j4                         z
        nd 	      \  }}|snP|D ]&  }
|j=                  |
      }||s|d | |       <   ( ~
~t?        |      rnd  t        |      |dndkD  r|j@                  j7                  |r!t;        d|t3        j4                         z
        nd 
       d  	 tC        |j&                  jE                  d |jG                         D              |       y # t"        $ r}	| j	                  ||	       |rM|rKt        j                  j                         }
|
j%                  |	       |j&                  j)                  |
       nm|rk|	j*                  xr\j,                  It/        fdt0        D              r1j,                  j,                  t/        fdt0        D              r1|	_         Y d }	~	d }	~	ww xY w# t"        $ rp}	|	j*                  xr\j,                  It/        fdt0        D              r1j,                  j,                  t/        fdt0        D              r1|	_         d }	~	ww xY ww)Nr-   r+   r:   r   r?   )r^   futuresschedule_taskrZ   )configurablec              3  |   K   | ]3  }j                   j                  j                  j                  |       5 y wrY   tb_framef_codeco_filenameendswith.0nametbs     r<   	<genexpr>z$PregelRunner.tick.<locals>.<genexpr>   4      = $ KK..::CCDI=   9< )rd   __reraise_on_exit__return_whenr]   r]   c              3  ,   K   | ]  \  }}|	|  y wrY   rr   rl   fts      r<   ro   z$PregelRunner.tick.<locals>.<genexpr>       "RAAM1"R   
)panicc              3  |   K   | ]3  }j                   j                  j                  j                  |       5 y wrY   rf   rk   s     r<   ro   z$PregelRunner.tick.<locals>.<genexpr>  4      5 KK&&22;;DA5rq   )$tupler*   weakref
WeakMethodcommitr6   Event
concurrentrb   Futurelenr"   r   r
   _callrefrZ   	Exceptionset_exceptionr1   rH   __traceback__tb_nextanyEXCLUDED_FRAME_FNAMEStime	monotonicwaitFIRST_COMPLETEDmaxpoprI   r+   _panic_or_proceedunionitems)r9   tasksr\   r]   r^   r_   rc   rb   rz   excrK   end_timer1   inflightrJ   rn   s                  @r<   tickzPregelRunner.tick   s     e''4//#"**11
 	u:?Z1_Z5GaA '!#KKN)5$+KK$8*7#';;*	" At$" !$(GJL! 	A$++-#WA%1 'G 4&3#{{&	 %,C  GCL#	* 297T^^--d'l:#9aqA'//44&..>>@HQ4>>+; ;<d 5 ND(
  {{3'<J$:04
- "4(+ 'l:#9aqA. 	<DSHt~~'778$ 	 	
 		"""R"RRY  As#w5?5G5G5N5N5PC%%c*LL$$S) ...r. jj4 =(== : "$B	 !jj4 =(== :
 -/)`  	&&&r&jj, 5 55 2 B	 jj, 5 55 2
 %'!	s}   BP>A)K 8D-P>&P>)P>,0P>AP>!;O P>	N?&CN:,N:4P>:N??P>	P;A"P6.P66P;;P>c              

  K   	 t        j                         }t        j                  |       t        |      }t        t        j                  | j                        t        j                         t         j                        }d  t        |      dk(  ry t        |      dk(  r|||d   }		 t        |	|| j                  t        t!        t"        t        j$                  |	      | j                  |t        j$                  |      || j&                  |      i       d {    | j                  |	d        |sy d}|
d | |       <   |D ]  }	t;        t         j                   | j'                         t        |	|| j                  t        t!        t"        t        j$                  |	      || j                  t        j$                  |      || j&                  |      i|	j<                  d	|
            }|	||<    |r||j?                         z   nd }t        |      |dndkD  rt        j@                  |t         jB                  |rtE        d||j?                         z
        nd        d {   \  }}|snQ|D ]&  }|jG                  |      }||s|d | |       <   ( ~~tI        |      rnd  t        |      |dndkD  rt        jJ                  |jL                  jA                         |rtE        d||j?                         z
        nd        d {    d  |D ]  }|jO                           	 tQ        |j.                  jS                  d |jU                         D              t         jV                  |       y # t        $ r t        j                         }Y w xY w7 # t(        $ r}
| j                  |	|
       |r?|r=|j+                         }|j-                  |
       |j.                  j1                  |       nm|rk|
j2                  xr\j4                  It7        fdt8        D              r1j4                  j4                  t7        fdt8        D              r1|
_         Y d }
~
Ad }
~
ww xY w7 7 n# t(        $ rp}
|
j2                  xr\j4                  It7        fdt8        D              r1j4                  j4                  t7        fdt8        D              r1|
_         d }
~
ww xY ww)Nra   r   r?   )streamr^   rb   rc   rZ   loop)r   rd   c              3  |   K   | ]3  }j                   j                  j                  j                  |       5 y wrY   rf   rk   s     r<   ro   z%PregelRunner.atick.<locals>.<genexpr>K  rp   rq   rr   )r^   r   rb   rc   rZ   r   T)r   rd   rO   __cancel_on_exit__rs   rt   rv   c              3  ,   K   | ]  \  }}|	|  y wrY   rr   rx   s      r<   ro   z%PregelRunner.atick.<locals>.<genexpr>  r{   r|   timeout_exc_clsr}   c              3  |   K   | ]3  }j                   j                  j                  j                  |       5 y wrY   rf   rk   s     r<   ro   z%PregelRunner.atick.<locals>.<genexpr>  r   rq   ),asyncioget_event_loopRuntimeErrornew_event_loopset_event_loopr   r*   r   r   r   r   r   r   r!   rV   r   r
   _acallr   rZ   r   create_futurer   r1   rH   r   r   r   r   r   rm   r   r   r   r   r   rI   wait_forr+   cancelr   r   r   TimeoutError)r9   r   r\   r]   r^   r_   rc   r   rb   rz   r   rK   r   r1   r   rJ   rn   s                   @r<   atickzPregelRunner.atick  s    	,))+D 	t$e''4--/
 	u:?Z1_!3aA"% ++'"#KKN#'#3#3)5$+KK$8*7#';;!%	*"	  " At$" !$(GJL! 	A# ++'"#KKN)5#'#3#3$+KK$8*7#';;!%	*" VV'+(/'C0 GCL3	: -47TYY[('l:#9aqA#*<<#33;CQ499; 67$ ND(
  {{3'<J$:04
- "4(+ 'l:#9aqA. MM 7?SHtyy{23T
 	
 	

 	 	CJJL		"""R"RR ' 4 4w  	,))+D	,"$  As#w*.*<*<*>C%%c*LL$$S) ...r. jj4 =(== : "$B	 !jj4 =(== :
 -/)n,	
   	&&&r&jj, 5 55 2 B	 jj, 5 55 2
 %'!	s   TN BT0A1N* !N'"N* 8D1T)R*"TTT1TATR T8A
R TN$ T#N$$T'N* *	Q>3B7Q9+Q93T9Q>>TT	T A"S;3S;;T  Tc                   t        |t        j                        rM|j                  j	                  t
        |f        | j                         |j                  |j                         y |rt        |t              r|j                  d   rt        |j                  d   fg}|j                  D cg c]  }|d   t        k(  s| c}x}r|j                  |        | j                         |j                  |       y t        |t              ry |j                  j	                  t
        |f        | j                         |j                  |j                         y y | j                  rI|j                  "t         |j                  j#                  dg       vr| j                  |j$                         |j                  s!|j                  j	                  t&        d f        | j                         |j                  |j                         y c c}w )Nr   tags)
isinstancer   CancelledErrorwritesappendr   r[   idr   argsr   r   extendr   rW   configr   getrm   r   )r9   rJ   	exceptionr   wresumess         r<   r   zPregelRunner.commit  s   
 i!7!78 KKy12DOOdggt{{3)^4>>!$()..*;<=F.2kk"LQqTV^1"LLwLg.%DOO%dggv6I}5 ""E9#56!!$''4;;7 % !!#zQS9T'T""499-;;""It#45DOOdggt{{3' #Ms   -H?H)
rZ   weakref.ref[Submit]r[   z=weakref.ref[Callable[[str, Sequence[tuple[str, Any]]], None]]rV   boolrW   zCallable[[str], None] | NonerM   rN   )r   Iterable[PregelExecutableTask]r\   r   r]   float | Noner^   Sequence[RetryPolicy] | Noner_   z4Callable[[], concurrent.futures.Future[None]] | Nonerc   OCallable[[PregelExecutableTask, int, Call | None], PregelExecutableTask | None]rM   zIterator[None])r   r   r\   r   r]   r   r^   r   r_   z)Callable[[], asyncio.Future[None]] | Nonerc   ZCallable[[PregelExecutableTask, int, Call | None], Awaitable[PregelExecutableTask | None]]rM   zAsyncIterator[None])rJ   r$   r   BaseException | NonerM   rN   )rO   rP   rQ   __doc__r5   r   r   r   rr   r=   r<   rU   rU   z   s)   0 "6:+ $+ R	+
 + 4+ 
+"  $59KOB-B 	B
 B 3B IB
B 
BP  $59@DW-W 	W
 W 3W >W
W 
Wr"4""4 ("4 
	"4r=   rU   c                    | D ]A  }|j                         r|j                         x}s't        |t              r8|t        vsA y y)ziCheck if any task failed, if so, cancel all other tasks.
    GraphInterrupts are not considered failures.TF)	cancelledr   r   r   r(   )r1   rK   r   s      r<   rI   rI     sJ    
  ==?MMO#S#c=1cAQ6Q r=   c                    | j                         rLt        | t        j                        rt        j                         S t
        j                  j	                         S | j                         S )zCReturn the exception from a future, without raising CancelledError.)r   r   r   r   r   r   rb   r   )rK   s    r<   rG   rG     sK     }}c7>>*))++%%4466}}r=   Tr   c               @   t               }t               }| D ]F  }|j                         r|j                         r|j                  |       6|j                  |       H g }|rq|j	                         }t        |      x}rQ|r!|j	                         j                          |r!|r,t        |t              r|j                  |       n
|t        vr||rq|rt        t        d |D                    |r+|r!|j	                         j                          |r! |d      y)zJCancel remaining tasks if any failed, re-raise exception if panic is True.c              3  H   K   | ]  }|j                   d    D ]  }|   yw)r   N)r   )rl   r   is      r<   ro   z$_panic_or_proceed.<locals>.<genexpr>  s$     "PCHHQK"Pq1"P1"Ps    "z	Timed outN)r8   r   r1   rH   r   rG   r   r   r   r   r(   r   )futsr   r}   r1   r   rK   
interruptsr   s           r<   r   r     s    GJeDJM%H ==?XXZHHSMLL (*J
hhjS/!3!%%'  c>2%%c* 00I  U"P
"PPQQLLN!!#  k** r=   r^   cache_policy	callbacksc               @   t        j                  |      rt        d      d }	 |        j                  t           t
           }
 | |        |
j                         t        |||||            xrRt        fd |       j                         D        d       x}	rn&j                  rt        j                  j                         }	t        d j                  D        t              }|t        ur|	j                  |       nt        d j                  D        d       x}r-|	j!                  t#        |t$              r|n
t'        |             nu|	j                  d        nc  |       t(        |t*        t-        t.        t1        j2                        |||||      idd	      }	t4        j7                  |	        |       |	<   t9        t:        j                  t        j                  j                  z  |	      }	t=        |	t        j                  j                               S )
Nz/In an sync context async tasks cannot be calledr   c              3  J   K   | ]  \  }}||j                   k(  r|  y wrY   r   rl   ry   rz   	next_tasks      r<   ro   z_call.<locals>.<genexpr>6  s-      Aq=Q),,%6     #c              3  :   K   | ]  \  }}|t         k(  s|  y wrY   r   rl   cvs      r<   ro   z_call.<locals>.<genexpr>C  s     Fda!v+F   c              3  :   K   | ]  \  }}|t         k(  s|  y wrY   r   r   s      r<   ro   z_call.<locals>.<genexpr>F  s     KDAqU
aKr   )rb   r^   r   rc   rZ   FT)rd   rs   __next_tick__)inspectiscoroutinefunctionr   r   r   r   call_counterr   nextr   r   r   rb   r   r   
set_resultr   r   BaseExceptionr   r"   r   r
   r   r   r   r(   rH   r   r   r   )rJ   funcinputr^   r   r   rb   rc   rZ   rK   
scratchpadretr   r   s                @r<   r   r     s    ""4(LMM,0C#'6==#67L#MJ!!%%	

 
y 
 #IOO-
 
 
3 
 $$++-CFi&6&6FPC'!s#KI,<,<KTRRR!!%c=9Cy~ t$ &(#WI. '%1"+&3%&
 %* #%C,   %&GIcN
w~~
 2 2 9 993
?C Z//66899r=   F)r^   r   r   r   c               
   	 t        j                         d u}|rt        j                  |	      }nt        j
                  j                         }t        t        || |||||||||	|
      |	d       |S # t        $ r d}Y iw xY w)NFr   )r^   r   r   rb   rc   rZ   r   r   )lazy)r   current_taskr   r   r   rb   r   _acall_impl)rJ   r   r   r^   r   r   rb   rc   rZ   r   r   in_asyncrK   s                r<   r   r   l  s    ('')5 DKNNE
   '')%%'	
 	!$ J9  s   A4 4BBc               V  K   	 d } |       j                   t           t           } | |       |j                         t	        |||||             d {   xryt        fd |       j                         D        d       x}rnMj                  rt        j                  |
      }t        d j                  D        t              }|t        ur|j                  |       n]t        d j                  D        d       x}r-|j                  t        |t              r|n
t        |             n|j                  d         |       |<   nt!        t        j                    |	       t"        ||t$        t'        t(        t+        j,                        ||||	|
      ij.                  ddd		            }t0        j3                  |        |       |<   |t5        ||        y | j                  t7        d
             y 7 # t        $ r}| j                  |       Y d }~y d }~ww xY ww)Nr   c              3  J   K   | ]  \  }}||j                   k(  r|  y wrY   r   r   s      r<   ro   z_acall_impl.<locals>.<genexpr>  s-      1}ill): r   r   c              3  :   K   | ]  \  }}|t         k(  s|  y wrY   r   r   s      r<   ro   z_acall_impl.<locals>.<genexpr>  s     J$!Qa6kAJr   c              3  :   K   | ]  \  }}|t         k(  s|  y wrY   r   r   s      r<   ro   z_acall_impl.<locals>.<genexpr>  s     !O1AJ!!Or   )r   rb   rc   rZ   r   TF)r   rd   rO   r   rs   r   zTask not scheduled)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r
   r   r   r   rm   r(   rH   r   r   )destinationrJ   r   r   r^   r   r   rb   rc   rZ   r   r   rK   r   r   r   r   s                   @r<   r   r     s    &M'%)'+v}}T':;P'Q
+F##%))#

 

 

9 

  '	 1
  s  !!nn$/J)*:*:JGTg%NN3' !O	0@0@!OQUVVSV%%)#}=9S> NN4(!*	# NNFH'!$%+W & 'I 6'-(/.;'-%).
& "++/,1 '++8 !$$S)!*	#?k*%%l3G&HIM

N  '!!#&&'sN   H)AH G?FH #H)$H >H)?H 	H&H!H)!H&&H))r1   r0   rM   r   )rK   z4concurrent.futures.Future[Any] | asyncio.Future[Any]rM   r   )r   z4set[concurrent.futures.Future] | set[asyncio.Future]r   ztype[Exception]r}   r   rM   rN   )rJ   !weakref.ref[PregelExecutableTask]r   %Callable[[Any], Awaitable[Any] | Any]r   r   r^   r   r   CachePolicy | Noner   r   rb   weakref.ref[FuturesDict]rc   r   rZ   r   rM   zconcurrent.futures.Future[Any])rJ   r   r   r   r   r   r^   r   r   r   r   r   rb   r   rc   r   rZ   r   r   asyncio.AbstractEventLoopr   r   rM   4asyncio.Future[Any] | concurrent.futures.Future[Any])r   r   rJ   r   r   r   r   r   r^   r   r   r   r   r   rb   z7weakref.ref[FuturesDict[asyncio.Future, asyncio.Event]]rc   r   rZ   r   r   r   r   r   rM   rN   )L
__future__r   r   concurrent.futuresr   r   r6   r   r   collections.abcr   r   r   r   r   r	   	functoolsr
   typingr   r   r   r   langchain_core.callbacksr   langgraph._internal._constantsr   r   r   r   r   r   r   r   langgraph._internal._futurer   r   langgraph._internal._scratchpadr   langgraph._internal._typingr   langgraph.constantsr   langgraph.errorsr   r   langgraph.pregel._algor   langgraph.pregel._executorr    langgraph.pregel._retryr!   r"   langgraph.typesr#   r$   r%   rb   r   r&   r   r'   r   WeakSetr(   rR   dictr*   rU   rI   rG   r   r   r   r   r   rr   r=   r<   <module>r     s   "          /	 	 	 O < / * : ' - C  C##**GNN;C'--0  GOO M 
0%'!Q$-a)=)D&D!E 0%fQ4 Q4h

	
	=

  (4	(+
>(+ %(+ 	(+
 
(+` 26'+T:
+T:
/T: T:
 /T: %T: T: &T:T:  T: $T:x 26'+ !2
+2
/2 2
 /2 %2 2 &22  2 $2  !2" :#2v 26'+ #`'E`'
+`' 0`' 	`' /`' %`' `' E`'`'  `'  $!`'" #`'$ 
%`'r=   