
    <i                    6   S SK Jr  S SKrS SKrS SKrS SKJrJr  S SK	J
r
JrJrJr  S SKJrJrJrJr  S SKJrJr  S SKJr  S SKJr  S S	KJrJrJrJr  S S
KJrJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.  S SK/J0r0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrG  S SKHJIrI  S SKJJKrKJLrL  S SKMJNrN  S SKOJPrP  S SKQJRrR  S SKSJTrTJUrU  S SKVJWrWJXrX  S SKYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrd  S SKeJfrfJgrgJhrhJiri  S SKjJkrkJlrlJmrm  S SKnJoroJprpJqrqJrrrJsrs  S SKtJuru  S SKvJwrwJxrx  S SKyJzrzJ{r{J|r|  S S K}J~r~Jr  S S!KJrJrJrJrJrJrJrJr  \" S"5      r\0" S#5      r\\\\4      rS+S$ jr " S% S&5      r " S' S(\\5      r " S) S*\\5      rg),    )annotationsN)defaultdictdeque)CallableIteratorMappingSequence)AbstractAsyncContextManagerAbstractContextManagerAsyncExitStack	ExitStack)datetimetimezone)	signature)TracebackType)AnyLiteralTypeVarcast)AsyncParentRunManagerParentRunManager)RunnableConfig)	BaseCache)WRITES_IDX_MAPBaseCheckpointSaverChannelVersions
CheckpointCheckpointMetadataCheckpointTuplePendingWrite)	BaseStore)	ParamSpecSelf)patch_configurable)CONFCONFIG_KEY_CHECKPOINT_IDCONFIG_KEY_CHECKPOINT_MAPCONFIG_KEY_CHECKPOINT_NSCONFIG_KEY_RESUME_MAPCONFIG_KEY_RESUMINGCONFIG_KEY_SCRATCHPADCONFIG_KEY_STREAMCONFIG_KEY_TASK_IDCONFIG_KEY_THREAD_IDERRORINPUT	INTERRUPTNS_ENDNS_SEPNULL_TASK_IDPUSHRESUMETASKS)PregelScratchpad)	EMPTY_SEQMISSING)BaseChannel)UntrackedValue)
TAG_HIDDEN)EmptyInputErrorGraphInterrupt)ManagedValueMappingManagedValueSpec)CallGetNextVersionPregelTaskWritesapply_writescheckpoint_null_version	incrementprepare_next_tasksprepare_single_task!sanitize_untracked_values_in_sendshould_interrupttask_path_str)channels_from_checkpointcopy_checkpointcreate_checkpointempty_checkpoint)AsyncBackgroundExecutorBackgroundExecutorSubmit)map_command	map_inputmap_output_updatesmap_output_valuesread_channels)
PregelNode)get_new_channel_versionsis_xxh3_128_hexdigest)map_debug_checkpointmap_debug_task_resultsmap_debug_tasks)StreamChunkStreamProtocol)AllCachePolicyCommand
DurabilityPregelExecutableTaskRetryPolicySend
StreamModeVPc            	        ^  SU 4S jjn[        UT  VVs1 s H  o"R                    H  o3iM     M     snn5      $ s  snnf )Nc                R   > T H   nU S   UR                   ;   d  M  U" U 5        M"     g )N   )modes)valuestreamstreamss     f/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/langgraph/pregel/_loop.py__call__DuplexStream.<locals>.__call__   s$    FQx6<<'u     )ro   r_   returnNone)r`   rn   )rq   rs   smodes   `   rr   DuplexStreamrz      s3    
 (7$O7awwtTwT7$OPP$Os   ;c                     \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S!\S"'   S#\S$'   S%\S&'   S'\S('   S)\S*'   S\S+'   S,\S-'   S.\S/'   S0\S1'   S2\S3'   S4\S5'   S6\S7'   S8\S9'   S:\S;'   S\S<'   S=\S>'   S?\S@'   SA\SB'   SC\SD'   SE\SF'   SG\SH'   SIrSJ\SK'   SIrSL\SM'   \\SISISNSISO.                                       SbSP jjrScSQ jr	SdSR jr
 Se       SfSS jjrSgST jrSdSU jrShSV jrShSW jrSiSX jrSjSY jr      SkSZ jrSlS[ jr        SmS\ jr          SnS] jrS^S_.       SoS` jjrSargI)p
PregelLoop   r   configBaseStore | NonestoreStreamProtocol | Nonerp   intstepstop
Any | NoneinputzBaseCache[WritesT] | NonecacheBaseCheckpointSaver | NonecheckpointerMapping[str, PregelNode]nodes,Mapping[str, BaseChannel | ManagedValueSpec]specsstr | Sequence[str]
input_keysoutput_keysstream_keysboolskip_done_tasks	is_nested/None | AsyncParentRunManager | ParentRunManagermanagerAll | Sequence[str]interrupt_afterinterrupt_beforerd   
durabilitySequence[RetryPolicy]retry_policyCachePolicy | Nonecache_policyrC   checkpointer_get_next_versionz4Callable[[RunnableConfig, WritesT, str], Any] | Nonecheckpointer_put_writes)checkpointer_put_writes_accepts_task_pathzjCallable[[concurrent.futures.Future | None, RunnableConfig, Checkpoint, str, ChannelVersions], Any] | None _checkpointer_put_after_previous#Callable[[Checkpoint], None] | None_migrate_checkpointrS   submitzMapping[str, BaseChannel]channelsr@   managedr   
checkpointstrcheckpoint_id_savedztuple[str, ...]checkpoint_nscheckpoint_configr   checkpoint_metadatazlist[PendingWrite]checkpoint_pending_writeszdict[str, str | float | int]checkpoint_previous_versionszRunnableConfig | Noneprev_checkpoint_configzZLiteral['input', 'pending', 'done', 'interrupt_before', 'interrupt_after', 'out_of_steps']statuszdict[str, PregelExecutableTask]tasksNzNone | dict[str, Any] | Anyoutputset[str] | Noneupdated_channels )r   r   r   migrate_checkpointr   r   c          
     R   X l         X0l        X@l        SU l        SU l        Xl        X`l        XPl        Xpl        Xl	        Xl
        Xl        Xl        Xl        Xl        UU l        [         U R                  R#                  [$        0 5      ;   U l        [(        U[$           ;  U l        UU l        Xl        UU l        UU l        Xl        U R                   b:  [6        U[$           ;   a)  [9        U R                   U[$           [6           5      U l         U[$           R#                  [:        5      n[=        U[>        5      (       ae  URA                  5       =n(       aN  [C        U R                  [D        [F        RH                  " U[$           [D           [K        U5      45      05      U l        U R&                  (       dH  U[$           R#                  [D        5      (       a'  [C        U R                  [D        S[(        S 05      U l        [L        U R                  [$           ;   a  U R                  [$           R#                  [D        5      U R                  [$           [L           ;   aU  [C        U R                  [(        U R                  [$           [L           U R                  [$           [D              05      U l'        OU R                  U l'        U RN                  [$           R#                  [P        5      =n(       a?  [=        U[J        5      (       d*  [C        U RN                  [P        [K        U5      05      U l'        U R                  [$           R#                  [D        5      (       aD  [S        [U        [J        U R                  [$           [D           5      RW                  [F        5      5      OSU l,        S U l-        g )Nr    r   ).rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   getr%   r   r&   r   r   trigger_to_nodesr   r   r   r,   rz   r+   
isinstancer8   subgraph_counterr$   r(   r3   joinr   r'   r   r.   tupler   splitr   r   )selfr   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
scratchpadcnt	thread_ids                          rr   __init__PregelLoop.__init__   s   . 
		
(


$&&. 0+t{{tR/HH7vd|K#5  0(($;;"'8F4L'H&t{{F4LAR4STDK.4Tl.>.>?T.U
j"233 !1133s30KK0&++ &t-E F #C3
 ~~&,"2"23K"L"L,)2/GNDK
 &T)::D!%%&>?{{4 !:;< &8,dkk$.?1/kk$'(@A/C&D" &*[[D"..t4889MNN9Ni--);**)3y>:*& {{4 $$%=>> $sDKK-.FGHNNvVW 	
 '+#ru   c           	     $  ^ U(       d  g[        S U 5       5      (       a-  [        U Vs0 s H  o3S   U_M
     snR                  5       5      nT[        :X  aq  U R                   Vs/ s H  nUS   T:w  d  US   [
        ;  d  M  UPM     snU l        U R                   Vs/ s H  o3S   T:X  d  M  USS PM     sn[        U5      -   nO.U R                   Vs/ s H  o3S   T:w  d  M  UPM     snU l        Un[        S U R                  R                  5        5       5      (       a}  U VVs/ s Hn  u  pV[        U R                  R                  U5      [        5      (       a  M5  U[        :X  a,  [        U[        5      (       a  U[        X`R                  5      4OXV4PMp     nnnU R                  R                  U4S jU 5       5        U R                   S:w  a  U R"                  b  [%        U R&                  [(        U R*                  [,           R                  [(        S5      [.        U R0                  S	   05      nU R2                  (       ak  [5        U S
5      (       a  U R6                  R                  T5      nOSnU R9                  U R"                  UUTU(       a  [;        UR<                  5      OS5        OU R9                  U R"                  UUT5        [5        U S
5      (       a  U R?                  TU5        ggs  snf s  snf s  snf s  snf s  snnf )3Put writes for a task, to be read by the next tick.Nc              3  8   #    U  H  oS    [         ;   v   M     g7f)r   N)r   ).0ws     rr   	<genexpr>(PregelLoop.put_writes.<locals>.<genexpr>5  s     6v!t~%v   r   rm   c              3  B   #    U  H  n[        U[        5      v   M     g 7fNr   r<   r   channels     rr   r   r   I  s      
?UGJw//?U   c              3  0   >#    U  H  u  pTX4v   M     g 7fr   r   )r   cvtask_ids      rr   r   r   Z  s     -Q&$!wo&s   exitr   idr   ) alllistvaluesr4   r   r   anyr   r   r   r   r<   r7   rg   rJ   extendr   r   r$   r   r(   r~   r%   r&   r   r   hasattrr   r   rL   pathoutput_writes)	r   r   writesr   writes_to_saver   r   r~   tasks	    `       rr   
put_writesPregelLoop.put_writes0  s   6v666F3FqQ47F3::<=Fl" 77.7AQ47?ad.&@ 7.D*  $=='=!1!"='V'N  99.9aqTW_9.D* $N  
?C}}?S?S?U
 
 
 +
 +DA!$**.."3^D EzjD&9&9 9!]]KL  +  
 	&&---Q&-QQ??f$)E)E)Q'&&,dkk$.?.C.C0"/ -dood.C	F ==4))::>>'2DD00"04M$))," 00"	 4!!w/ "G 4.
'
.
s5   K8&K=K= L0	LL'L+4L#=Lc           
        U R                   c  g U R                  (       d  g [        U R                  [        U R
                  [           R                  [        S5      [        U R                  S   05      n[        [        5      nU R                   H  u  p4nX#   R                  XE45        M     UR                  5        H  u  p6U R                  (       ai  [        U S5      (       aX  U R                   R                  U5      nU R#                  U R                   UUUU(       a  [%        UR&                  5      OS5        M  U R#                  U R                   UUU5        M     g )Nr   r   r   )r   r   r$   r   r(   r~   r%   r   r&   r   r   r   appenditemsr   r   r   r   rL   r   )r   r~   by_taskr   r   ro   r   r   s           rr   _put_pending_writesPregelLoop._put_pending_writes|  s+   ''/--#""($++d*;*?*?,b+ )$//$*?	
 d#'+'E'E#Ge##W$45 (F  '}}OG=='gC C zz~~g.0004M$))," 00	  /ru   c           
     6   [         R                  " U R                  S   R                  SS5      5      n[	        U R                  5      n[        [        S-  [        [        UR                  X!R                  U4S40 SU R                  _SU_SU_SU R                  _S	U R                  _S
U R                  _SU R                  _SUR                  _SU R                   _SU R"                  _SS_SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _65      =n(       a`  U R/                  S[0        U/5        X`R2                  UR                  '   U R4                  (       a  U R7                  UR                  U05        U$ g)zEAccept a PUSH from a task, potentially returning a new task to start.r   -r   Nr   checkpoint_id_bytesrF   pending_writes	processesr   r   r~   r   r   for_executionTr   r   r   r   r   r   )binascii	unhexlifyr   replacerF   r   re   rI   r5   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   _emitr^   r   r   _match_writes)r   r   	write_idxcallr   null_versionpusheds          rr   accept_pushPregelLoop.accept_push  s    '001F1N1NsTV1WX.t? 4'tyy)WWd;  ?? %8	
 )5  $== **   {{ YY YY # jj "..  !" "..#$ "..%
 
6 
0 JJw&:$*JJvyy!##""FIIv#67M?
ru   c                   U R                   U R                  :  a  SU l        g[        U R                  U R
                  U R                  U R                  U R                  U R                  U R                   U R                  SU R                  U R                  U R                  U R                  U R                  U R                  U R                   S9U l        U R$                  b  U R'                  S[(        0 U R*                  E[,        0 U R*                  [,           E[.        U R                  S   0E0EU R                  U R0                  U R2                  U R"                  R5                  5       U R
                  U R6                  U R8                  5
        U R"                  (       d  SU l        gU R:                  (       a,  U R
                  (       a  U R=                  U R"                  5        U R>                  (       aO  [A        U R                  U R>                  U R"                  R5                  5       5      (       a  SU l        [C        5       eU R'                  S	[D        U R"                  R5                  5       5        U R"                  R5                  5        H;  nURF                  (       d  M  U RI                  URJ                  URF                  SS
9  M=     g)zExecute a single iteration of the Pregel loop.

Args:
    input_keys: The key(s) to read input from.

Returns:
    True if more iterations are needed.
out_of_stepsFT)r   r   r   r   r   r   r   r   checkpointsr   doner   r   cached)&r   r   r   rH   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r\   r   r%   r&   r   r   r   r   r   r   r   r   rK   r?   r^   r   r   r   )r   r   s     rr   tickPregelLoop.tick  s3    99tyy (DK (OO**JJMMLLKKIIIILL****!22!22****!

( 00<JJ$,, 0060$//$2G   ((

!!#..++  !( zz DK D$B$Btzz*   %5OOT22DJJ4E4E4G&
 &
 -DK "" 	

7OTZZ->->-@A JJ%%'D{{{""477DKK"E ( ru   c                   U R                   R                  5        VVs/ s H  oR                    H  o"PM     M     nnn[        U R                  U R
                  U R                   R                  5       U R                  U R                  5      U l        U R                  R                  [        U R                  [        5      (       a  U R                  4OU R                  5      (       d,  U R                  S[        U R                  X0R
                  5        U R                  R!                  5         SU l        U R%                  SS05        U R&                  (       aO  [)        U R                  U R&                  U R                   R                  5       5      (       a  SU l        [-        5       eU R.                  [0           R3                  [4        S 5        g s  snnf )Nr   Tsourceloopr   )r   r   r   rE   r   r   r   r   r   
isdisjointr   r   r   r   rW   r   clearr   _put_checkpointr   rK   r   r?   r~   r%   popr*   )r   tr   r   s       rr   
after_tickPregelLoop.after_tick  sh   !ZZ..0C0((Q!(!0C ,OOMMJJ..!!!
 $$//$**C00 !!
 

 JJ+T-=-=v}} 	&&,,.#h/0$4OOT114::3D3D3F%
 %
 ,DK ""D148? Ds   Gc                    [         er   NotImplementedErrorr   s    rr   match_cached_writesPregelLoop.match_cached_writes@  s    !!ru   c                   #    [         e7fr   r  r  s    rr   amatch_cached_writesPregelLoop.amatch_cached_writesC  s     !!s   	c                    U R                    HS  u  p#nU[        [        [        4;   a  M  UR	                  U5      =n(       d  M7  UR
                  R                  X445        MU     g r   )r   r/   r1   r6   r   r   r   )r   r   tidkr   r   s         rr   r   PregelLoop._match_writesH  sO    77ICAUIv..yy~%t%""A6*	 8ru   c                V   0 n[        5       nU R                   H@  u  p4nU[        :X  a  US   R                  X'   M#  U[        :X  d  M/  UR                  U5        MB     U Vs1 s H  nX1;   d  M
  X   iM     nnUR                  5        Vs1 s H  nXv;  d  M
  UiM     nnU$ s  snf s  snf )zUReturn the set of interrupt ids that are pending without corresponding resume values.r   )setr   r1   r   r6   addr   )	r   pending_interruptspending_resumesr   
write_typero   resumed_interrupt_idsinterrupt_idhanging_interruptss	            rr   _pending_interruptsPregelLoop._pending_interruptsO  s     .0 %(E*.*H*H&GY&.3Ahkk"+v%##G, +I +!
*, ('* 	 !
 !3 9 9 ;(
 ;8  ; 	 (
 "!!
(
s   !	B!.B!
	B&B&c               	   U R                   R                  [        0 5      n[        U R                  S   5      =(       a    [        UR                  [
        U R                  S L =(       d    [        U R                  [        5      =(       dd    U R                  (       + =(       aL    U R                   R                  S0 5      R                  S5      U R                  R                  S[        5      :H  5      5      n[        U R                  [        5      (       Ga=  U R                  R                  =nb  U R                  (       d  [        S5      e[        U[        5      =(       a    [!        S U 5       5      =n(       a  XPR                   [           ["        '   O([%        U R'                  5       5      S:  a  [        S5      e[)        [*        5      n[-        U R                  S9 H-  u  pn
U	[.        :X  a	  W(       a  M  Xx   R1                  X45        M/     U(       d  W(       d  [3        S	5      eUR5                  5        H  u  pU R7                  X5        M     U R8                   Vs/ s H  oS
   [:        :X  d  M  USS  PM     sn=n(       a\  [=        U R                  U R>                  [A        S[B        U/ 5      /U RD                  U RF                  5      nUb  URI                  U5        U(       a  U R                  S   RK                  [L        0 5        U R>                   HB  nXR                  S   ;   d  M  U R                  S   U   nUU R                  S   [L           U'   MD     U RO                  S[P        U RR                  SU R>                  5        GO[U        [W        XR                  5      5      =n(       a  [Y        U R                  U R8                  U RZ                  U R>                  U R\                  U R                   U R^                  U R`                  SS S S US9n[=        U R                  U R>                  / URc                  5       Q[A        S[B        U/ 5      PU RD                  U RF                  5      nX l2        U Rg                  SS05        O[
        U;  a  [3        SU 35      eU R                  (       d!  [i        U R                   [
        U05      U l         SU l5        U$ s  snf )Nchannel_versionsmetadatarun_idz3Cannot use Command(resume=...) without checkpointerc              3  8   #    U  H  n[        U5      v   M     g 7fr   )r[   )r   r  s     rr   r   $PregelLoop._first.<locals>.<genexpr>  s     Ef1!44fr   rm   zWhen there are multiple pending interrupts, you must specify the interrupt id when resuming. Docs: https://docs.langchain.com/oss/python/langgraph/add-human-in-the-loop#resume-multiple-interrupts-with-one-invocation.)cmdzReceived empty Command inputr   r   versions_seenr   T)r   r   r   r   r   r  r   zReceived no input for pending)6r~   r   r%   r   r   r*   r   r   rc   r   r   r:   resumer   RuntimeErrordictr   r)   lenr'  r   r   rT   r6   r   r>   r   r   r   r4   rE   r   rD   r0   r   r   update
setdefaultr1   r   rW   r   r   rU   rH   r   r   r   r   r   r   r  r$   r   )r   r   r   configurableis_resumingr2  resume_is_mapr   r  r   r   wsr   null_writesnull_updated_channelsr  versioninput_writesdiscard_taskss                      rr   _firstPregelLoop._firstm  s&    {{tR04??+=>? 
D#

d" djj'2 & G
B7;;HE//33HgFG	E
 djj'****+++8((&M 
 vt, FEfEE=  @FKK%&;<43356:*Z 
 ?J$>OF(TZZ8	VK&&v. 9 -%&DEE!<<>( *  99
9aqT\=QEAabE9
 
; 
 %1!"e["=>22%%%!  + ''(=>OOO,77	2F]](:;;"oo.@A!DGELDOOO4Y?B #
 JJ+T-=-=tT]] #9Z#DEE\E...

				"!!1M   ,"))+$RbA 22%%	  %5!  (G!45 4!$::,"GHH~~,1;?DK  A
s   "S 6	S c                   XR                   L nU(       a  U R                  S   U R                  :X  a  g U(       d?  U R                  US'   U R                  [
           R                  [        0 5      US'   Xl         U R                  S L=(       a    U=(       d    U R                  S:g  n[        U R                  U(       a  U R                  OS U R                  U(       a  U R                  S   OS U R                  S9U l        [        U R                  S   ;   a  [        S U R                  R                  5        5       5      (       ae  U R                  S   [            Vs/ s H/  n[!        U["        5      (       a  [%        X@R                  5      OUPM1     nnXPR                  S   [        '   U(       Ga  U R                  Gb{  [&        U R(                  [
           ;   a+  U R(                  [
           [&           (       a  U R(                  OS U l        0 U R(                  E[
        0 U R(                  [
           E[,        U R                  [
           R                  [,        S5      0E0EU l        U R                  S	   R/                  5       n[1        U R2                  U5      nX`l        U R5                  U R                  [7        U S
S 5      U R(                  [9        U R                  5      U R                   U5      U l        0 U R(                  E[
        0 U R(                  [
           E[&        U R                  S   0E0EU l        U(       d  U =R                  S-  sl        g g s  snf )Nr   r   parentsr   )r   r   channel_valuesc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r   r   s     rr   r   -PregelLoop._put_checkpoint.<locals>.<genexpr>  s      >
?UGJw//?Ur   r   r*  _put_checkpoint_futrm   )r   r   r   r   r~   r%   r   r'   r   r   rO   r   r   r7   r   r   r   rg   rJ   r&   r   r   r(   copyrZ   r   r   getattrrN   rH  )r   r+  exitingdo_checkpointro   sanitized_tasksr*  new_versionss           rr   r  PregelLoop._put_checkpoint  s
   666tt,0H0HH#yyHV"&++d"3"7"78QSU"VHY'/$==TI 
0t&0 	 ,OO*DMMII(/tt$T!22
 DOO$455# >
?C}}?S?S?U>
 ;
 ;
 "__-=>uE	 FE eT** 2%G F	   8GOO,-e4TBBN ,t/E/Ed/KK**401IJ && 	 '&((& ,,T2,dkk$.?.C.C0"/&D"  $/ABGGI3113CL 1A-
 (,{{553T:&&0(((D$&((& ,,T2,dood.C&D" IINI cs   6Mc                  ^ U R                   S:X  a`  U R                  (       a$  Tc!  [        S U R                   5       5      (       a+  U R	                  U R
                  5        U R                  5         [        T[        5      =(       a    U R                  (       + nU(       Ga  [        U S5      (       GaG  U R                  (       Ga5  [        S U R                  R                  5        5       5      (       Ga  [        U R                  U R                   U R                  R                  5       U R"                  U R$                  5      nUR'                  [        U R(                  [*        5      (       a  U R(                  4OU R(                  5      (       dj  U R-                  S[.        U R(                  U R                  R                  5        VVs/ s H  ofR0                    H  owPM     M     snnU R                   5        Tb;  TR2                  (       a  TR2                  S   (       d  U R-                  SU4S j5        [5        U R                   U R(                  5      U l        g	Uc&  [5        U R                   U R(                  5      U l        g g s  snnf )
Nr   c              3  4   #    U  H  n[         U;  v   M     g 7fr   )r2   )r   parts     rr   r   1PregelLoop._suppress_interrupt.<locals>.<genexpr>>  s     E2D$6%2Ds   r   c              3  8   #    U  H  oR                   v   M     g 7fr   )r   )r   r   s     rr   r   rS  I  s     D0C0Cr   r   r   updatesc                 ^   > [        [        [        [        T 5      R                  S   0/5      $ )Nr   )iterr1   r   r?   args)	exc_values   rr   <lambda>0PregelLoop._suppress_interrupt.<locals>.<lambda>b  s'    D#T.)%D%I%I!%LMNru   T)r   r   r   r   r  r   r   r   r?   r   r   r   r   r   rE   r   r   r   r   r
  r   r   r   rW   r   rX  rX   r   )r   exc_typerY  	tracebacksuppressr   r  r   s     `     rr   _suppress_interruptPregelLoop._suppress_interrupt1  s    ??f$$E$2D2DEEE  !9!9:$$&i8O=O g&&222D

0A0A0CDDD#/OOMMJJ%%'66))$  (22!$"2"2C88 %%')) 
 JJ )(($(JJ$5$5$7J$7qA$7J $innINNSTDU

 (t7G7GHDK't7G7GHDK  Ks   
J	c           
     L   U R                   c  g US;   =(       a    SU R                   R                  ;   nXR                   R                  ;  a  U(       d  g U" U0 UD6 H  nXR                   R                  ;   a  U R                  U R                  X45        U(       d  MB  U R                  U R                  SUS:X  a  U R                  S-
  OU R                  [        R
                  " [        R                  5      R                  5       US:X  a  SO	SU;   a  SOSUS	.45        M     g )
N)r  r   debugr  rm   r   resulttask_resultr   )r   	timestamptypepayload)	rp   rn   r   r   r   nowr   utc	isoformat)r   ry   r   rX  kwargsdebug_remapr   s          rr   r   PregelLoop._emitn  s     ;;66W7dkkFWFW;W{{(((((A{{(((T//9:{**  $}4 %)IIM!%)1hll)C)M)M)O#}4 %1  (1} "/!''( )ru   Fr  c                 ^ U R                   R                  U5      =n(       GaM  UR                  b)  [        UR                  R                  S[        5      ;   a  g US   S   [
        :X  a  UR                  S   [        :X  a  UR                  S   SL a  g [
        [        S U 5       5      0/mU R                  (       a  U R                  R                  O/ nSU;   a  U R                  SU4S j5        ORSU;   a  U R                  SU4S	 j5        O5US   S   [        :w  a%  U R                  S[        U R                  XB4/U5        U(       d$  U R                  S
[        XB4U R                   5        g g g )Ntagsr   Tc              3     #    U  HA  nUS    [         :X  d  M  [        US   [        5      (       a  US   OUS   4  H  nUv   M	     MC     g7f)r   rm   N)r1   r   r	   )r   r   r   s      rr   r   +PregelLoop.output_writes.<locals>.<genexpr>  sZ      )%+ ty0  /91x.H.HadqQRtg&U  'V %+s
   A4ArU  c                    > [        T 5      $ r   rW  
interruptss   rr   rZ  *PregelLoop.output_writes.<locals>.<lambda>  s
    $z2Bru   r   c                    > [        T 5      $ r   rt  ru  s   rr   rZ  rw    s
    j1Aru   r   )r   r   r~   r=   r9   r1   r   r5   r   rp   rn   r   r/   rV   r   r]   r   )r   r   r   r  r   stream_modesrv  s         @rr   r   PregelLoop.output_writes  sN    ::>>'**4*{{&:	: , ay|y( 99Q<4'DIIbMT,A "5 )%+) $	
 59KKt{{00R,JJy*BC-JJx)AB1&

&$$^$ 

*N$$	 E +ru   )#r   rH  r   r   r   r   r   r   r   r   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   )(r   r   rp   r   r~   r   r   r   r   BaseCache | Noner   r   r   r   r   r   r   r   r   r   r   r   r   Mapping[str, Sequence[str]]r   rd   r   r   r   r   r   r   r   r   r   r   r   r   rv   rw   r   r   r   WritesTrv   rw   )rv   rw   r   r   re   r   r   r   zCall | Nonerv   zPregelExecutableTask | None)rv   r   rv   zSequence[PregelExecutableTask])r   z"Mapping[str, PregelExecutableTask]rv   rw   )rv   zset[str])r   r   r   r   rv   r   )r+  r   rv   rw   r\  ztype[BaseException] | NonerY  zBaseException | Noner]  zTracebackType | Nonerv   zbool | None)
ry   rh   r   zCallable[P, Iterator[Any]]rX  zP.argsrk  zP.kwargsrv   rw   )r   r   r   r~  r  r   rv   rw   )__name__
__module____qualname____firstlineno____annotations__r   r   r9   r   r   r   r   r  r  r  r  r   r'  rA  r  r_  r   r   __static_attributes__r   ru   rr   r|   r|      s   !!
I
I$$,,##77##$$$$O<<(())''$$#11QQ/33
	 =<N''  ""%%++11">>11  +**.F'.(,o,( 0909CGBF.0+/+_+_+ &	_+
 _+  _+  _+ 1_+ (_+ <_+ (_+ )_+ )_+ 6_+ _+  -!_+" .#_+$ A%_+& @'_+( ,)_+* )+_+, 
-_+BJ0X&R OS%(%58%@K%	$%NPd!9F""
+"<s 0s DSs 	s jM^;I,;I (;I (	;I
 
;Iz"" +" 	"
 " 
"J @E++$++8<+	+ +ru   r|   c            
        ^  \ rS rSrS\\\\\SSSS.	                                       SU 4S jjjr            SS jrSS jr S       SU 4S jjjrSU 4S	 jjr	SS
 jr
        SS jrSrU =r$ )SyncPregelLoopi  Nr   )	r   r   r   r   r   r   r   r   r   c               `  > [         TU ]  UUUUUUUUUUUUUUUU	UUU
S9  [        5       U l        U(       aX  UR                  U l        UR                  U l        [        UR                  5      R                  R                  S5      S LU l        g [        U l        S U l        S U l        SU l        g N)rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	task_pathF)superr   r   stackget_next_versionr   r   r   r   
parametersr   r   rG   r   )r   r   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	__class__s                       rr   r   SyncPregelLoop.__init__  s    . 	%!##+-1-%%!' 	 	
* [
1=1N1ND.+7+B+BD(,112==AA+N :
 2;D.48D1+/D(=BD:ru   c                     Ub  UR                  5         [        [        U R                  5      R	                  X#XE5        g ! [        [        U R                  5      R	                  X#XE5        f = fr   )rc  r   r   r   putr   prevr~   r   r+  rN  s         rr   r   /SyncPregelLoop._checkpointer_put_after_previous  sY    	$d&7&78<<HD$d&7&78<<Hs   A   ,A,c                   U R                   c  g/ nU R                  R                  5        Vs0 s HV  nUR                  (       d  M  UR                  (       a  M)  UR                  R
                  UR                  R                  4U_MX     sn=n(       ak  U R                   R                  [        U5      5      R                  5        H5  u  pEX4   nUR                  R                  U5        UR                  U5        M7     U$ s  snf )Nr   )r   r   r   	cache_keyr   nskeyr   r   r   r   r   r   matchedr  r  r  r   r   s          rr   r  "SyncPregelLoop.match_cached_writes  s    ::.0 ZZ&&(
({{ 1#$88 1Q[[^^Q[[__-q0(
 
6 

  $zz~~eFm<BBD{""6*t$  E 
s   DD1Dc                   > [         TU ]  XU5      =n(       a<  U R                  5        H(  nU R                  UR                  UR
                  SS9  M*     U$ NTr  )r  r   r  r   r   r   r   r   r   r   r   r  s        rr   r   SyncPregelLoop.accept_push  sQ     W($??6?002""477DKK"E 3ru   c                  > [         TU ]  X5        U(       a  U R                  b  [        U S5      (       d  gU R                  R                  U5      nUb  UR                  c  gU R                  U R                  R                  UR                  R                  UR                  R                  4UR                  UR                  R                  405        g)r   Nr   )r  r   r   r   r   r   r  r   r  r  r  r   ttlr   r   r   r   r  s       rr   r   SyncPregelLoop.put_writes"  s    7++743I3Izz~~g&<4>>1JJNN""DNN$6$67KKNN&&:	
ru   c                   U R                   (       a&  U R                   R                  U R                  5      nOS nUc$  [        U R                  [	        5       SS0S / 5      nO(U R
                  b  U R                  UR                  5        0 U R                  EUR                  E[        [        S0U R                  R                  [        0 5      EUR                  R                  [        0 5      E0EU l        UR                  U l        UR                  S   U l        UR                  U l        UR                  U l        UR                   b/  UR                    VVVs/ s H  u  p#n[#        U5      X44PM     snnnO/ U l        U R&                  R)                  [+        U R                  5      5      U l        [/        U R0                  U R                  5      u  U l        U l        U R&                  R7                  U R8                  5        SU l        U R                  S   S-   U l        U R<                  U R                  S   -   S-   U l        U R                  S   RA                  5       U l!        U RE                  U RF                  U R                  R                  S	5      (       a$  [I        U R                  R                  S	5      5      OS S
9U l%        U $ s  snnnf Nr   r   r   r   rm   recursion_limitr*  r   )r   r   )&r   	get_tupler   r   rP   r   r   r~   r%   r(   r   parent_configr   r   r+  r   r   r   r   r  enter_contextrR   r   rM   r   r   r   pushr_  r   r   r   rI  r   rA  r   r  r   r   savedr  r  r   s        rr   	__enter__SyncPregelLoop.__enter__6  sr   %%//0F0FGEE=#&&(8(:VRL$PRE %%1$$U%5%56"
$$"
ll"
 ("((,,T26 ,,""4,"
 ',&9&9##(#3#3D#9 **#(>>  ##/ 05/C/CD/C)#!c#h/CD 	& jj../A$++/NO&>JJ'
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V) $""#566 !!4!45G!HI	 !, !
 + Es   Kc                :    U R                   R                  XU5      $ r   )r  __exit__)r   r\  rY  r]  s       rr   r  SyncPregelLoop.__exit__f  s     zz""8	BBru   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   )(r   r   rp   r   r~   r   r   r   r   r{  r   r   r   r   r   r   r   r|  r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   rw   )r  z concurrent.futures.Future | Noner~   r   r   r   r+  r   rN  r   rv   r   r  r   r  r}  rv   r#   r  )r  r  r  r  r9   r   r   r  r   r   r  r  r  __classcell__r  s   @rr   r  r    s    DH/809*3+4+4BF.0+/+8C8C &	8C
 8C  8C  8C 18C (8C <8C 68C 8C A8C -8C .8C  (!8C" )#8C$ )%8C& @'8C( ,)8C* )+8C, 
-8C 8Ct.  	
 % & 
   OS(58@K	$ 
(.`C,C (C (	C
 
C Cru   r  c            
        ^  \ rS rSr\\S\\\SSSS.	                                       SU 4S jjjr            SS jrSS jr S       SU 4S jjjrSU 4S	 jjr	SS
 jr
        SS jrSrU =r$ )AsyncPregelLoopip  Nr   )	r   r   r   r   r   r   r   r   r   c               `  > [         TU ]  UUUUUUUUUUUUUUUU	UUU
S9  [        5       U l        U(       aX  UR                  U l        UR                  U l        [        UR                  5      R                  R                  S5      S LU l        g [        U l        S U l        S U l        SU l        g r  )r  r   r   r  r  r   aput_writesr   r   r  r   r   rG   r   )r   r   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  s                       rr   r   AsyncPregelLoop.__init__q  s    . 	%!##+-1-%%!' 	 	
* $%
1=1N1ND.+7+C+CD(,223>>BB;O :
 2;D.48D1+/D(=BD:ru   c                  #     Ub
  UI S h  vN   [        [        U R                  5      R                  X#XE5      I S h  vN   g  N7 N! [        [        U R                  5      R                  X#XE5      I S h  vN    f = f7fr   )r   r   r   aputr  s         rr   r   0AsyncPregelLoop._checkpointer_put_after_previous  sw     	

*D,=,=>CCH   $*D,=,=>CCH  sG   B A AA -B AB A B .A=6A97A==B c                *  #    U R                   c  / $ / nU R                  R                  5        Vs0 s HV  nUR                  (       d  M  UR                  (       a  M)  UR                  R
                  UR                  R                  4U_MX     sn=n(       as  U R                   R                  [        U5      5      I S h  vN R                  5        H5  u  pEX4   nUR                  R                  U5        UR                  U5        M7     U$ s  snf  NR7fr   )r   r   r   r  r   r  r  agetr   r   r   r   r  s          rr   r  $AsyncPregelLoop.amatch_cached_writes  s     ::I.0 ZZ&&(
({{ 1#$88 1Q[[^^Q[[__-q0(
 
6 

 '+jjooeFm&D DKKM{""6*t$  N 

 !Es)   .DD	D1D1D>D?ADc                   >#    [         TU ]  XU5      =n(       aD  U R                  5       I S h  vN  H(  nU R                  UR                  UR
                  SS9  M*     U$  N27fr  )r  r   r  r   r   r   r  s        rr   aaccept_pushAsyncPregelLoop.aaccept_push  s_      W($??6?"77999""477DKK"E : :s   +A#A!3A#c                  > [         TU ]  X5        U(       a  U R                  b  [        U S5      (       d  gU R                  R                  U5      nUb  UR                  c  gUS   S   [        [        4;   a  gU R                  U R                  R                  UR                  R                  UR                  R                  4UR                  UR                  R                  405        g)r   Nr   r   )r  r   r   r   r   r   r  r1   r/   r   asetr  r  r   r  r  s       rr   r   AsyncPregelLoop.put_writes  s    7++743I3Izz~~g&<4>>1!9Q<Iu--JJOO""DNN$6$67KKNN&&:	
ru   c                  #    U R                   (       a.  U R                   R                  U R                  5      I S h  vN nOS nUc$  [        U R                  [	        5       SS0S / 5      nO(U R
                  b  U R                  UR                  5        0 U R                  EUR                  E[        [        S0U R                  R                  [        0 5      EUR                  R                  [        0 5      E0EU l        UR                  U l        UR                  S   U l        UR                  U l        UR                  U l        UR                   b/  UR                    VVVs/ s H  u  p#n[#        U5      X44PM     snnnO/ U l        U R&                  R)                  [+        U R                  5      5      I S h  vN U l        [/        U R0                  U R                  5      u  U l        U l        U R&                  R7                  U R8                  5        SU l        U R                  S   S-   U l        U R<                  U R                  S   -   S-   U l        U R                  S   RA                  5       U l!        U RE                  U RF                  U R                  R                  S	5      (       a$  [I        U R                  R                  S	5      5      OS S
9U l%        U $  GNs  snnnf  GN/7fr  )&r   
aget_tupler   r   rP   r   r   r~   r%   r(   r   r  r   r   r+  r   r   r   r   r  enter_async_contextrQ   r   rM   r   r   r   r  r_  r   r   r   rI  r   rA  r   r  r   r  s        rr   
__aenter__AsyncPregelLoop.__aenter__  s    ++66t7M7MNNEE=#&&(8(:VRL$PRE %%1$$U%5%56"
$$"
ll"
 ("((,,T26 ,,""4,"
 ',&9&9##(#3#3D#9 **#(>>  ##/ 05/C/CD/C)#!c#h/CD 	& !JJ::#DKK0
 
 '?JJ'
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V) $""#566 !!4!45G!HI	 !, !
 ] O. E

s/   :K-K D'K-$K#>=K-;K*<D%K-#K-c                   #    [         R                  " U R                  R                  XU5      5      n UI S h  vN $  N! [         R                   a  n/ UR
                  QUP7Ul        e S nAff = f7fr   )asynciocreate_taskr  	__aexit__CancelledErrorrX  )r   r\  rY  r]  	exit_taskes         rr   r  AsyncPregelLoop.__aexit__  si      ''JJ  i@
		"?"?%% 	 *qvv)y)AF		s5   1A3A  >A  A3A   A0A++A00A3r  )(r   r   rp   r   r~   r   r   r   r   r{  r   r   r   r   r   r   r   r|  r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   rw   )r  zasyncio.Task | Noner~   r   r   r   r+  r   rN  r   rv   r   r  r   r  r}  r  r  )r  r  r  r  r9   r   r   r  r  r   r  r  r  r  r  s   @rr   r  r  p  s    0909CG*3+4+4BF.0+/+8C8C &	8C
 8C  8C  8C 18C (8C <8C 68C 8C -8C .8C A8C  (!8C" )#8C$ )%8C& @'8C( ,)8C* )+8C, 
-8C 8Ct!  	
 % & 
   OS(58@K	$ 
.0d, ( (	
 
 ru   r  )rq   r`   rv   r`   )
__future__r   r  r   concurrent.futures
concurrentcollectionsr   r   collections.abcr   r   r   r	   
contextlibr
   r   r   r   r   r   inspectr   typesr   typingr   r   r   r   langchain_core.callbacksr   r   langchain_core.runnablesr   langgraph.cache.baser   langgraph.checkpoint.baser   r   r   r   r   r   r    langgraph.store.baser!   typing_extensionsr"   r#   langgraph._internal._configr$   langgraph._internal._constantsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   langgraph._internal._scratchpadr8   langgraph._internal._typingr9   r:   langgraph.channels.baser;   "langgraph.channels.untracked_valuer<   langgraph.constantsr=   langgraph.errorsr>   r?   langgraph.managed.baser@   rA   langgraph.pregel._algorB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   langgraph.pregel._checkpointrM   rN   rO   rP   langgraph.pregel._executorrQ   rR   rS   langgraph.pregel._iorT   rU   rV   rW   rX   langgraph.pregel._readrY   langgraph.pregel._utilsrZ   r[   langgraph.pregel.debugr\   r]   r^   langgraph.pregel.protocolr_   r`   langgraph.typesra   rb   rc   rd   re   rf   rg   rh   ri   rj   r   r   r~  rz   r|   r  r  r   ru   rr   <module>r     sQ   "    * A A  (    M 3 *   + - :     * = : / = *     
  . S 
 B	 	 	 CLcN 5c?
#Qq qhmCZ!7 mC`{j"= {ru   