
    (GgRe                     0   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 d dlm	Z	m
Z
mZmZmZmZmZ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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+m,Z, d d
l-m.Z.m/Z/m0Z0 d dl1m2Z2  edejf                  jh                  e jh                        Z5 edejl                  e jl                        Z7dZ8 G d dee5e7f   e9e5ee.   f         Z: G d d      Z;de<e5   de=fdZ>deejf                  jh                  e	   e jh                  e	   f   dee?   fdZ@eAdddee<ejf                  jh                     e<e jh                     f   deeB   de=ddfdZCddddej                  e.   d ee	geee	   e	f   f   d!e	d"ee0   d#ed$ej                  e:   d%ej                  ee.eEee'   gee.   f      d&ej                  e)   d'e=dejf                  jh                  e	   fd(ZFddd)d)d*dej                  e.   d ee	geee	   e	f   f   d!e	d"ee0   d#ed$ej                  e:   d%ej                  ee.eEee'   gee.   f      d&ej                  e)   d+e j                  d'e=d,e=dee jh                  e	   ejf                  jh                  e	   f   fd-ZHy).    N)partial)AnyAsyncIterator	AwaitableCallableGenericIterableIteratorOptionalSequenceTypeTypeVarUnioncast)	Callbacks)
CONFCONFIG_KEY_CALLCONFIG_KEY_SCRATCHPADERROR	INTERRUPTMISSING	NO_WRITESRESUMERETURN
TAG_HIDDEN)GraphBubbleUpGraphInterrupt)Call)Submit)arun_with_retryrun_with_retry)PregelExecutableTaskPregelScratchpadRetryPolicy)chain_future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.pyc                       e Zd ZU eed<   ej                  eee	e
   gdf      ed<   eed<   ee   ed<   ej                  ed<   dedej                  eee	e
   gdf      dee   ddf fd	Zd
ede	e   ddf fdZdededdfdZ xZS )FuturesDicteventNcallbackcounterdonelockfuture_typereturnc                     t         |           t        j                         | _        || _        || _        d| _        t               | _	        y )Nr   )
super__init__	threadingLockr.   r*   r+   r,   setr-   )selfr*   r+   r/   	__class__s       t/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/pregel/runner.pyr3   zFuturesDict.__init__E   s<     	NN$	
 E	    keyvaluec                    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   )	r2   __setitem__r.   r*   clearr,   add_done_callbackr   on_done)r7   r;   r<   r8   s      r9   r?   zFuturesDict.__setitem__U   st    
 	C' "

  "!" !!'$,,">?	 " "s   0A??Btaskfutc                    	  | j                         |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+   
_exceptionr.   r-   addr,   _should_stop_othersr*   r6   )r7   rC   rD   s      r9   rB   zFuturesDict.on_donea   s    
	%DMMOD*S/2 %		c"!<<1$(;DII(FJJNN$	% % % %		c"!<<1$(;DII(FJJNN$	% % %s0    B2 A/B&&B/2E?A/D7.	E7E <E)__name__
__module____qualname__r'   __annotations__weakrefrefr   r"   r   BaseExceptionintr6   r&   r4   r5   r   r3   r?   rB   __classcell__)r8   s   @r9   r)   r)   <   s    Hkk&(?@$FG  L
a&L
.."" ++*H],CDdJK
" !W" 
" 
@
@ ,-
@ 
	
@%"% % 
	%r:   r)   c                      e Zd ZdZddddej
                  e   dej
                  eee	e
eef      gdf      dej
                  eeeee   gee   f      ded	eeegdf      d
dfdZddddddee   dedee   dee   deeg ej,                  j.                  d   f      d
ed   fdZddddddee   dedee   dee   deeg ej.                  d   f      d
ed   fdZdedee   d
df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_finishedsubmit
put_writesschedule_taskrT   rU   r0   c                J    || _         || _        || _        || _        || _        y N)rV   rW   rT   rU   rX   )r7   rV   rW   rX   rT   rU   s         r9   r3   zPregelRunner.__init__u   s*     $&**r:   T)reraisetimeoutretry_policy
get_waitertasksr[   r\   r]   r^   c             #     K   t        |      }t        t        j                  | j                        t        j                         t        j                  j                        }d  t        |      dk(  r|||d   }	 t        ||t        t        t        t        j                  |      |t        j                  |      | j                   | j"                  |      i       | j	                  |d        |sy d}|
d | |       <   |D ]  }|j4                  r | j#                         t        ||t        t        t        t        j                  |      |t        j                  |      | j                   | j"                  |      i|      }	|||	<    |r|t7        j8                         z   nd }
t        |      |dndkD  rt        j                  j;                  |t        j                  j<                  |
r!t?        d|
t7        j8                         z
        nd 	      \  }}|snP|D ]&  }	|jA                  |	      }||s|d | |       <   ( ~	~tC        |      rnd  t        |      |dndkD  r|jD                  j;                  |
r!t?        d|
t7        j8                         z
        nd 
       d  	 tG        |j(                  jI                  d |jK                         D              |       y # t$        $ r}| j	                  ||       |rM|rKt        j                  j                         }	|	j'                  |       |j(                  j+                  |	       nm|rk|j,                  xr\j.                  It1        fdt2        D              r1j.                  j.                  t1        fdt2        D              r1|_         Y d }~d }~ww xY w# t$        $ rp}|j,                  xr\j.                  It1        fdt2        D              r1j.                  j.                  t1        fdt2        D              r1|_         d }~ww xY ww)Nr+   r*   r/   r>   r   )retryfuturesrX   rV   r[   )configurablec              3   |   K   | ]3  }j                   j                  j                  j                  |       5 y wrZ   tb_framef_codeco_filenameendswith.0nametbs     r9   	<genexpr>z$PregelRunner.tick.<locals>.<genexpr>   4      = $ KK..::CCDI=   9< )rd   __reraise_on_exit__return_whenr\   r\   c              3   ,   K   | ]  \  }}|	|  y wrZ   rr   rl   fts      r9   ro   z$PregelRunner.tick.<locals>.<genexpr>        "RAAM1"R   
)panicc              3   |   K   | ]3  }j                   j                  j                  j                  |       5 y wrZ   rf   rk   s     r9   ro   z$PregelRunner.tick.<locals>.<genexpr>  4      5 KK&&22;;DA5rq   )&tupler)   rM   
WeakMethodcommitr4   Event
concurrentrc   Futurelenr!   r   r   _callrN   rX   rV   	Exceptionset_exceptionr-   rG   __traceback__tb_nextanyEXCLUDED_FRAME_FNAMESwritestime	monotonicwaitFIRST_COMPLETEDmaxpoprH   r*   _panic_or_proceedunionitems)r7   r_   r[   r\   r]   r^   rc   rz   excrD   end_timer-   inflightrC   rn   s                 @r9   tickzPregelRunner.tick   s     e''4//#"**11
 	u:?w:3EaA  '!#KKN".$+KK$8*.*<*<#';;$+*
" At$" !$(GJL! 	!A88#dkkm" '!#KKN".$+KK$8*.*<*<#';;$+*
" )0"  !'	!. 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]  As#w5?5G5G5N5N5PC%%c*LL$$S) ...r. jj4 =(== : "$B	 !jj4 =(== :
 -/)d  	&&&r&jj, 5 55 2 B	 jj, 5 55 2
 %'!	s   A<Q A4K1 4"QD"Q:Q=Q 0Q1AQ5;O 0Q1	O:CO OQOQ	QA"Q
Q

QQc               	  K   t        j                         }t        |      }t        t	        j
                  | j                        t        j                         t         j                        }d  t        |      dk(  r|||d   }	 t        ||| j                  t        t        t        t	        j                  |      | j                  |t	        j                  |      | j                   | j"                  ||	      i       d {    | j                  |d        |sy d}|
d | |       <   |D ]  }|j6                  rt9        t         j                   | j#                         t        ||| j                  t        t        t        t	        j                  |      || j                  t	        j                  |      | j                   | j"                  ||	      i|j:                  d	|
            }
|||
<    |r||j=                         z   nd }t        |      |dndkD  rt        j>                  |t         j@                  |rtC        d||j=                         z
        nd        d {   \  }}|snQ|D ]&  }
|jE                  |
      }||s|d | |       <   ( ~
~tG        |      rnd  t        |      |dndkD  rt        jH                  |jJ                  j?                         |rtC        d||j=                         z
        nd        d {    d  |D ]  }
|
jM                           	 tO        |j*                  jQ                  d |jS                         D              t         jT                  |       y 7 z# t$        $ r}	| j                  ||	       |r?|r=|j'                         }
|
j)                  |	       |j*                  j-                  |
       nm|rk|	j.                  xr\j0                  It3        fdt4        D              r1j0                  j0                  t3        fdt4        D              r1|	_         Y d }	~	5d }	~	ww xY w7 7 J# t$        $ rp}	|	j.                  xr\j0                  It3        fdt4        D              r1j0                  j0                  t3        fdt4        D              r1|	_         d }	~	ww xY ww)Nra   r>   r   )streamrb   rc   rX   rV   r[   loop)r   rd   c              3   |   K   | ]3  }j                   j                  j                  j                  |       5 y wrZ   rf   rk   s     r9   ro   z%PregelRunner.atick.<locals>.<genexpr><  rp   rq   rr   )rb   r   rc   rX   rV   r[   r   T)r   rd   rI   __cancel_on_exit__rs   rt   rv   c              3   ,   K   | ]  \  }}|	|  y wrZ   rr   rx   s      r9   ro   z%PregelRunner.atick.<locals>.<genexpr>  r{   r|   timeout_exc_clsr}   c              3   |   K   | ]3  }j                   j                  j                  j                  |       5 y wrZ   rf   rk   s     r9   ro   z%PregelRunner.atick.<locals>.<genexpr>  r   rq   )+asyncioget_event_loopr   r)   rM   r   r   r   r   r   r    rT   r   r   _acallrN   rX   rV   r   create_futurer   r-   rG   r   r   r   r   r   r   rm   r   r   r   r   r   rH   wait_forr*   cancelr   r   r   TimeoutError)r7   r_   r[   r\   r]   r^   r   rc   rz   r   rD   r   r-   r   rC   rn   s                  @r9   atickzPregelRunner.atick
  sh     %%'e''4--/
 	u:?z1goaA#% ++'"#KKN#'#3#3".$+KK$8*.*<*<#';;$+!%
*"	  $ At$" !$(GJL! 	!A88NN!DKKM'$#//+W & 'A&2'+'7'7(/G(<.2.@.@'+{{(/%)
.& "#+/,3)2  !7	!> -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[&  As#w*.*<*<*>C%%c*LL$$S) ...r. jj4 =(== : "$B	 !jj4 =(== :
 -/)r,	
   	&&&r&jj, 5 55 2 B	 jj, 5 55 2
 %'!	s   BSA<N NN "SD&S'Q("SSS1SASQ S6A
Q!  SN 	QB7QQSQSS!	S*A"SSSSrC   	exceptionc                    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| | j                         |j                  t
        |fg       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   CancelledErrorr   appendr   rW   idr   argsr   r   extendr   rU   configr   getrm   r   )r7   rC   r   r   wresumess         r9   r   zPregelRunner.commit  sp   
 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 "!$''UI,>+?@ % !!#zQS9T'T""499-;;""It#45DOOdggt{{3# #Ms   -G%?G%)rI   rJ   rK   __doc__rM   rN   r   r   strr   r   r   r"   rP   r   r   boolr3   r	   floatr$   r   rc   r   r
   r   r   r   r   rO   r   rr   r:   r9   rS   rS   p   s   0 "9=+ F#+ KK#xc3h/H)I4)O PQ	+
 {{%sHTN;-.0
+ +  # 56+ 
+0 #'.2NR,- 	
 % {+ Xb**<*<*C*CD*I&IJK 
$J #'.2CGP,-P 	P
 %P {+P Xb'..*>&>?@P 
t	Pd 4" 4 M* 4 
	 4r:   rS   r-   r0   c                 ~    | D ]8  }|j                         r|j                         x}s't        |t              r8 y y)ziCheck if any task failed, if so, cancel all other tasks.
    GraphInterrupts are not considered failures.TF)	cancelledr   r   r   )r-   rD   r   s      r9   rH   rH     sB    
  ==?MMO#S#c=1 r:   rD   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   rc   r   )rD   s    r9   rF   rF     sK     }}c7>>*))++%%4466}}r:   Tr   futsr   r}   c                ,   t               }t               }| D ]F  }|j                         r|j                         r|j                  |       6|j                  |       H g }|rgt	        |j                               x}rI|r!|j                         j                          |r!|r$t        |t              r|j                  |       n||rg|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      r9   ro   z$_panic_or_proceed.<locals>.<genexpr>  s$     "PCHHQK"Pq1"P1"Ps    "z	Timed outN)r6   r   r-   rG   rF   r   r   r   r   r   r   )r   r   r}   r-   r   rD   
interruptsr   s           r9   r   r     s     MPEDPSPUH ==?XXZHHSMLL (*J
TXXZ((3(%%'  c>2%%c*I  U"P
"PPQQLLN!!#  k** r:   rb   	callbacksrC   funcinputrb   r   rc   rX   rV   r[   c                ,   t        j                  |      rt        d      d }	 |        j                  t           t
           }
  |        |        |
j                         t        ||||            xr>t        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'        |             na|	j                  d        nO  |       t(        |t*        t-        t.        t1        j2                        ||||||      i|d      }	 |       |	<   t5        t6        t         j                  t        j                  j                  f   |	      }	t9        |	t        j                  j                               S )	Nz/In an sync context async tasks cannot be calledr   c              3   J   K   | ]  \  }}||j                   k(  r|  y wrZ   r   rl   ry   rz   	next_tasks      r9   ro   z_call.<locals>.<genexpr>"  -      Aq=Q),,%6     #c              3   :   K   | ]  \  }}|t         k(  s|  y wrZ   r   rl   cvs      r9   ro   z_call.<locals>.<genexpr>/       Fda!v+F   c              3   :   K   | ]  \  }}|t         k(  s|  y wrZ   r   r   s      r9   ro   z_call.<locals>.<genexpr>2       KDAqU
aKr   )rc   rb   r   rX   rV   r[   T)rd   rs   __next_tick__)r   iscoroutinefunctionRuntimeErrorr   r   r   call_counterr   nextr   r   r   rc   r   r   
set_resultr   r   rO   r   r!   r   r   r   rM   rN   r   r   r%   )rC   r   r   rb   r   rc   rX   rV   r[   rD   
scratchpadretr   r   s                @r9   r   r     s     ""4(LMM/3C#'6==#67L#MJ#MO!T5; y 
 #IOO-
 
 
3 
 $$++-CFi&6&6FPC'!s#KI,<,<KTRRR!!%c=9Cy~ t$ &(#WI. '#"+&3% '	& %, #'C* 'GIcN
uW^^Z%7%7%>%>>?
EC Z//66899r:   F)rb   r   r[   r   r   r   c                L   d } |        j                   t           t           }  |        |        |j                         t	        ||||            xrjt        fd |       j                         D        d       x}rn>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         |       |<   nyt!        t        j                    |       t"        ||
t$        t'        t(        t+        j,                        |
|||||	      i |        j.                  d|	d	            } |       |<   t!        t0        t        j                  t2        j4                  j                  f   |      }	 t        j6                         d u}|rKt        |t        j:                        r/t        j                  |      }|j=                  t>        ||       |S |S t2        j4                  j                         }|j=                  t>        ||       |S # t8        $ r d	}Y w xY w)
Nr   c              3   J   K   | ]  \  }}||j                   k(  r|  y wrZ   r   r   s      r9   ro   z_acall.<locals>.<genexpr>s  r   r   )r   c              3   :   K   | ]  \  }}|t         k(  s|  y wrZ   r   r   s      r9   ro   z_acall.<locals>.<genexpr>  r   r   c              3   :   K   | ]  \  }}|t         k(  s|  y wrZ   r   r   s      r9   ro   z_acall.<locals>.<genexpr>  r   r   )r   rc   rX   rV   r   r[   T)r   rd   rI   r   rs   r   F) r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   r   r   r    r   r   r   rM   rN   rm   r   r   rc   current_taskr   Taskcall_soon_threadsafer%   )rC   r   r   rb   r   rc   rX   rV   r   r[   r   rD   r   r   r   in_asyncsfutr   s                    @r9   r   r   V  sh   & %)C#'6==#67L#MJ#MO!T5; y 
 #IOO-
 
 
3 
 ..d+CFi&6&6FPC'!s#KI,<,<KTRRR!!%c=9Cy~ t$&GIcN #!'"#KK	2#)$+*7#)!%$+	*" "V[['+(/ #'-C6 'GIcN
uW^^Z%7%7%>%>>?
EC'')5
 c7<<(D)  %%lC>K J!!((*!!,T:#  s   ;J J#"J#)Ir   concurrent.futuresr   r4   r   rM   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   langchain_core.callbacksr   langgraph.constantsr   r   r   r   r   r   r   r   r   r   langgraph.errorsr   r   langgraph.pregel.algor   langgraph.pregel.executorr   langgraph.pregel.retryr    r!   langgraph.typesr"   r#   r$   langgraph.utils.futurer%   rc   r   r&   r   r'   r   dictr)   rS   r6   r   rH   rO   rF   r   r   r   rN   rP   r   AbstractEventLoopr   rr   r:   r9   <module>r      s             /   ; & , B O O /C##**GNN;C'--0 1%'!Q$-a2F)G&G!H 1%hL4 L4^

a&	
	z!!((-w~~c/BB	C
m
  (4	'+
J&&--.GNN0CC
D'+ )_'+ 	'+
 
'+^ $(N:
++*
+N:
C5%	# 344
5N: N:
 K N: N: [[%N: ;;!37BV9WW	
N: KKN: N: s#N:l $( #j
++*
+j
C5%	# 344
5j j
 K j j [[%j ;;!37BV9WW	
j KKj 
#
#j  !j" #j$ 7>>#
 2 2 9 9# >>?%jr:   