
    9i                    4   d dl mZ d dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZmZmZ d dl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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'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZI d dlJmKZKmLZL d dlMmNZN d dlOmPZP d dlQmRZR d dlSmTZTmUZU d dlVmWZWmXZX d dlYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd d dlemfZfmgZgmhZhmiZi d dljmkZkmlZlmmZm d dlnmoZompZpmqZqmrZrmsZs d dltmuZu d dlvmwZwmxZx d dlymzZzm{Z{m|Z| d d l}m~Z~mZ d d!lmZmZmZmZmZmZmZmZ  ed"      Z e0d#      Zeeeef      Zd+d$Z G d% d&      Z G d' d(ee      Z G d) d*ee      Zy),    )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            	     v     d fd}t        | D ch c]  }|j                  D ]  }|  c}}      S c c}}w )Nc                H    D ]  }| d   |j                   v s ||         y )N   )modes)valuestreamstreamss     `/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/pregel/_loop.py__call__zDuplexStream.<locals>.__call__   s)     	FQx6<<'u	    )ro   r_   returnNone)r`   rn   )rq   rs   smodes   `   rr   DuplexStreamry      s5    
 (7$Oaqww$OtT$OT$OPP$Os   5c                     e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   d"ed#<   d$ed%<   d&ed'<   d(ed)<   ded*<   d+ed,<   d-ed.<   d/ed0<   d1ed2<   d3ed4<   d5ed6<   d7ed8<   d9ed:<   ded;<   d<ed=<   d>ed?<   d@edA<   dBedC<   dDedE<   dFedG<   dHZdIedJ<   dHZdKedL<   eedHdHdMdHdN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`dOZdadPZdbdQZ		 dc	 	 	 	 	 	 	 dddRZ
dedSZdbdTZdfdUZdfdVZdgdWZdhdXZ	 	 	 	 	 	 didYZdjdZZ	 	 	 	 	 	 	 	 dkd[Z	 	 	 	 	 	 	 	 	 	 dld\Zd]d^	 	 	 	 	 	 	 dmd_ZyH)n
PregelLoopr   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          
        || _         || _        || _        d| _        d| _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        t         | j                  j#                  t$        i       v | _        t(        |t$           v| _        || _        || _        || _        || _        || _        | j                   8t6        |t$           v r)t9        | j                   |t$           t6                 | _         |t$           j#                  t:              }t=        |t>              r_|jA                         x}rMtC        | j                  tD        tG        jH                  |t$           tD           tK        |      f      i      | _        | j&                  sC|t$           j#                  tD              r'tC        | j                  tD        dt(        d i      | _        tL        | j                  t$           v r| j                  t$           j#                  tD              | j                  t$           tL           v rUtC        | j                  t(        | j                  t$           tL           | j                  t$           tD              i      | _'        n| j                  | _'        | jN                  t$           j#                  tP              x}r:t=        |tJ              s*tC        | jN                  tP        tK        |      i      | _'        | j                  t$           j#                  tD              rDtS        tU        tJ        | j                  t$           tD                 jW                  tF                    nd| _,        d | _-        y )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,   ry   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__zPregelLoop.__init__   s   . 
		
(


$&&. 0+t{{tR/HH7vd|K#5  0(($;;"'8F4L'H&t{{F4LAR4STDK.4Tl.>.>?T.U
j"23 !1133s30KK0&++ &t-E F #C3
 ~~&,"2"23K"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 	
 '+#rt   c           	        |syt        d |D              r+t        |D ci c]  }|d   |
 c}j                               }t        k(  re| j                  D cg c]  }|d   k7  s|d   t
        vr| c}| _        | j                  D cg c]  }|d   k(  s|dd  c}t        |      z   }n*| j                  D cg c]  }|d   k7  s| c}| _        |}t        d | j                  j                         D              rp|D cg c]c  \  }}t        | j                  j                  |      t              s5|t        k(  r(t        |t              r|t        || j                        fn||fe }}}| j                  j                  fd|D               | j                   dk7  r| j"                  t%        | j&                  t(        | j*                  t,           j                  t(        d      t.        | j0                  d	   i      }| j2                  rat5        | d
      r| j6                  j                        }nd}| j9                  | j"                  |||rt;        |j<                        nd       n| j9                  | j"                  ||       t5        | d
      r| j?                  |       yyc c}w c c}w c c}w c c}w c c}}w )3Put writes for a task, to be read by the next tick.Nc              3  2   K   | ]  }|d    t         v   yw)r   N)r   ).0ws     rr   	<genexpr>z(PregelLoop.put_writes.<locals>.<genexpr>5  s     6!qt~%6   r   rm   c              3  <   K   | ]  }t        |t                y wNr   r<   r   channels     rr   r   z(PregelLoop.put_writes.<locals>.<genexpr>I  s      
4;Jw/
   c              3  .   K   | ]  \  }}||f  y wr   r   )r   cvtask_ids      rr   r   z(PregelLoop.put_writes.<locals>.<genexpr>Z  s     -Q$!Qw1o-Qs   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_writeszPregelLoop.put_writes0  s   6v66F3q1Q473::<=Fl" 77.Q47?ad.&@ .D*  $=='1!"'V'N  99.QqTW_.D* $N  
?C}}?S?S?U
 
 +
 Aq!$**.."3^D EzjD&9 9!T]]KLQ 
N 
 	&&---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.
'
.
s*   J2J7J<J<>KK	A(Kc           
        | j                   y | j                  sy t        | j                  t        | j
                  t           j                  t        d      t        | j                  d   i      }t        t              }| j                  D ]  \  }}}||   j                  ||f        |j                         D ]  \  }}| j                  r^t        | d      rR| j                   j                  |      }| j#                  | j                   ||||rt%        |j&                        nd       p| j#                  | j                   |||        y )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_writeszPregelLoop._put_pending_writes|  s6   ''/--#""($++d*;*?*?,b+ )$//$*?	
 d#'+'E'E 	6#GWeG##We$45	6  '}} 	OGV=='gC zz~~g.0004M$))," 00		rt   c           
     $   t        j                  | j                  d   j                  dd            }t	        | j                        }t        t        dz  t        t        |j                  ||j                  |fdfi d| j                  d|d|d| j                  d	| j                  d
| j                  d| j                  d|j                  d| j                   d| j"                  ddd| j$                  d| j&                  d| j(                  d| j*                  d| j,                        x}r\| j/                  dt0        |g       || j2                  |j                  <   | j4                  r| j7                  |j                  |i       |S y)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_pushzPregelLoop.accept_push  s    '001F1N1NsTV1WX.t? 4'tyy)TWWd;  ?? %8	
 )5  $== **   {{ YY YY # jj "..  !" "..#$ "..%
 
6 
0 JJw&:$*DJJvyy!##""FIIv#67M?
rt   c                f   | j                   | j                  kD  rd| _        yt        | j                  | j
                  | j                  | j                  | j                  | j                  | j                   | j                  d| j                  | j                  | j                  | j                  | j                  | j                  | j                         | _        | j$                  | j'                  dt(        i | j*                  t,        i | j*                  t,           t.        | j                  d   ii| j                  | j0                  | j2                  | j"                  j5                         | j
                  | j6                  | j8                  
       | j"                  sd| _        y| j:                  r'| j
                  r| j=                  | j"                         | j>                  rJtA        | j                  | j>                  | j"                  j5                               rd| _        tC               | j'                  d	tD        | j"                  j5                                | j"                  j5                         D ]7  }|jF                  s| jI                  |jJ                  |jF                  d
       9 y)zyExecute a single iteration of the Pregel loop.

        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   tickz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%%' 	FD{{""477DKK"E	F rt   c                   | j                   j                         D cg c]  }|j                  D ]  }|  }}}t        | j                  | j
                  | j                   j                         | j                  | j                        | _        | j                  j                  t        | j                  t              r| j                  fn| j                        s-| j                  dt        | j                  || j
                         | j                  j!                          d| _        | j%                  ddi       | j&                  rJt)        | j                  | j&                  | j                   j                               rd| _        t-               | j.                  t0           j3                  t4        d        y c c}}w )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_tickzPregelLoop.after_tick  s`   !ZZ..0C!((CQ!C!CC ,OOMMJJ..!!!
 $$//$**C0 !!

 JJ+T-=-=vt}} 	&&,,.#h/0$4OOT114::3D3D3F%
 ,DK ""D148? Ds   F:c                    t         r   NotImplementedErrorr   s    rr   match_cached_writeszPregelLoop.match_cached_writes=  s    !!rt   c                   K   t         wr   r	  r  s    rr   amatch_cached_writeszPregelLoop.amatch_cached_writes@  s     !!s   	c                    | j                   D ]K  \  }}}|t        t        t        fv r|j	                  |      x}s/|j
                  j                  ||f       M y r   )r   r/   r1   r6   r   r   r   )r   r   tidkr   r   s         rr   r   zPregelLoop._match_writesE  sX    77 	+ICAUIv..yy~%t%""Aq6*		+rt   c                8   i }t               }| j                  D ]=  \  }}}|t        k(  r|d   j                  ||<   #|t        k(  s-|j                  |       ? |D ch c]  }||v r||    }}|j                         D ch c]  }||vr|
 }}|S c c}w c c}w )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_interruptszPregelLoop._pending_interruptsL  s     .0 %(E*.*H*H 	-&GZY&.3Ahkk"7+v%##G,	- +!
,, w'!
 !
 !3 9 9 ;(
#88 (
 (
 "!!
(
s   BBc               "	   | j                   j                  t        i       }t        | j                  d         xr t        |j                  t
        | j                  d u xsw t        | j                  t              xs[ | j                   xrL | j                   j                  di       j                  d      | j                  j                  dt              k(              }t        | j                  t              r | j                  j                  x}| j                  st        d      t        |t              xr t!        d |D              x}r|| j                   t           t"        <   n't%        | j'                               dkD  rt        d      t)        t*              }t-        | j                        D ](  \  }}	}
|	t.        k(  rr||   j1                  |	|
f       * |sst3        d	      |j5                         D ]  \  }}| j7                  ||        | j8                  D cg c]  }|d
   t:        k(  s|dd   c}x}r[t=        | j                  | j>                  tA        dtB        |g       g| jD                  | jF                        }||jI                  |       |r| j                  d   jK                  tL        i        | j>                  D ]?  }|| j                  d   v s| j                  d   |   }|| j                  d   tL           |<   A | jO                  dtP        | jR                  d| j>                         ntU        tW        || j                              x}rtY        | j                  | j8                  | jZ                  | j>                  | j\                  | j                   | j^                  | j`                  dd d d |      }t=        | j                  | j>                  g |jc                         tA        dtB        |g       | jD                  | jF                        }|| _2        | jg                  ddi       nt
        |vrt3        d|       | j                  s!ti        | j                   t
        |i      | _         d| _5        |S c c}w )Nchannel_versionsmetadatarun_idz3Cannot use Command(resume=...) without checkpointerc              3  2   K   | ]  }t        |        y wr   )r[   )r   r  s     rr   r   z$PregelLoop._first.<locals>.<genexpr>  s     E1!4Er   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_resumingr$  resume_is_mapr   r  r   r   wsr   null_writesnull_updated_channelsr  versioninput_writesdiscard_taskss                      rr   _firstzPregelLoop._firstj  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DKK%&;<43356:*Z 
 ?J$>OF(TZZ8 /	QV3K&&1v./ -%&DEE!<<> )RR()  99
QqT\=QAabE
 
; 
 %1!"e["=>22%%%!  + ''(=>OOO,77	2F]] M(:;;"oo.@A!DGELDOOO4Y?BM
 JJ+T-=-=tT]] #9Z#DEE\E...

				"!!1M   ,"))+$RbA 22%%	  %5D!  (G!45 4!$::,"GHH~~,1;?DK  A
s   (R:Rc                L   || j                   u }|r| j                  d   | j                  k(  ry |s@| j                  |d<   | j                  t
           j                  t        i       |d<   || _         | j                  d uxr |xs | j                  dk7  }t        | j                  |r| j                  nd | j                  |r| j                  d   nd | j                        | _        t        | j                  d   v rt        d | j                  j                         D              r_| j                  d   t           D cg c]*  }t!        |t"              rt%        || j                        n|, }}|| j                  d   t        <   |r| j                  ut&        | j(                  t
           v r&| j(                  t
           t&           r| j(                  nd | _        i | j(                  t
        i | j(                  t
           t,        | j                  t
           j                  t,        d      ii| _        | j                  d	   j/                         }t1        | j2                  |      }|| _        | j5                  | j                  t7        | d
d       | j(                  t9        | j                        | j                   |      | _        i | j(                  t
        i | j(                  t
           t&        | j                  d   ii| _        |s| xj                  dz  c_        y y c c}w )Nr   r   parentsr   )r   r   channel_valuesc              3  <   K   | ]  }t        |t                y wr   r   r   s     rr   r   z-PregelLoop._put_checkpoint.<locals>.<genexpr>  s      >
4;Jw/>
r   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   r8  )r   r  exitingdo_checkpointro   sanitized_tasksr  new_versionss           rr   r  zPregelLoop._put_checkpoint  s   d666tt,0H0HH#yyHV"&++d"3"7"78QSU"VHY'/D$==TI 
0t&0 	 ,OO*DMMII(/tt$T!22
 DOO$455# >
?C}}?S?S?U>
 ;
 "__-=>uE	  eT* 2%GO  8GDOO,-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D-
 (,{{553T:&&0(((D$&((& ,,T2,dood.C&D" IINI es   </L!c                   | j                   dk(  rU| j                  rt        d | j                  D              r+| j	                  | j
                         | j                          t        t              xr | j                   }|rt        | d      r.| j                  r!t        d | j                  j                         D              rt        | j                  | j                   | j                  j                         | j"                  | j$                        }|j'                  t        | j(                  t*              r| j(                  fn| j(                        sf| j-                  dt.        | j(                  | j                  j                         D cg c]  }|j0                  D ]  }|  c}}| j                          0j2                  rj2                  d   s| j-                  dfd       t5        | j                   | j(                        | _        y	|&t5        | j                   | j(                        | _        y y c c}}w )
Nr   c              3  ,   K   | ]  }t         |v  y wr   )r2   )r   parts     rr   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr><  s     E$6%Es   r   c              3  4   K   | ]  }|j                     y wr   )r   )r   r   s     rr   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>G  s     DDs   r   r   updatesc                 ^    t        t        t        t               j                  d   ig      S )Nr   )iterr1   r   r?   args)	exc_values   rr   <lambda>z0PregelLoop._suppress_interrupt.<locals>.<lambda>`  s)    D#T.)%D%I%I!%LMN rt   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   rF  rX   r   )r   exc_typerG  	tracebacksuppressr   r  r   s     `     rr   _suppress_interruptzPregelLoop._suppress_interrupt/  s    ??f$$E$2D2DEE  !9!9:$$&i8O=O g&22D

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

 (t7G7GHDK't7G7GHDK  Ks   Ic           
        | j                   y |dv xr d| j                   j                  v }|| j                   j                  vr|sy  ||i |D ]  }|| j                   j                  v r| j                  | j                  ||f       |s<| j                  | j                  d|dk(  r| j                  dz
  n| j                  t	        j
                  t        j                        j                         |dk(  rdnd|v rdnd|d	f        y )
N)r   r   debugr   rm   r   resulttask_resultr   )r   	timestamptypepayload)	rp   rn   r   r   r   nowr   utc	isoformat)r   rx   r   rF  kwargsdebug_remapr   s          rr   r   zPregelLoop._emitl  s    ;;66W7dkkFWFW;Wt{{((((( 	At{{(((T//q9:**  $}4 %)IIM!%)1hll)C)M)M)O#}4 %1  (1} "/!''(	rt   Fr   c               d   | j                   j                  |      x}r|j                  't        |j                  j                  dt              v ry |d   d   t
        k(  r|j                  d   t        k(  r|j                  d   du ry t
        t        d |D              ig| j                  r| j                  j                  ng }d|v r| j                  dfd       d|v rt        | j                  | j                        t        t               r)d   t
           t
        <   | j                  dfd	       nK| j                  dfd
       n5|d   d   t"        k7  r&| j                  dt$        | j                  ||fg|       |s%| j                  dt&        ||f| j(                         y y y )Ntagsr   Tc              3  ~   K   | ]5  }|d    t         k(  r't        |d   t              r|d   n|d   fD ]  }|  7 yw)r   rm   N)r1   r   r	   )r   r   r   s      rr   r   z+PregelLoop.output_writes.<locals>.<genexpr>  sS      ) ! ty0.81x.HadqQRtg	) !" ))s   ;=rC  c                     t               S r   rE  
interruptss   rr   rH  z*PregelLoop.output_writes.<locals>.<lambda>  s    $z2B rt   r   c                     t         g      S r   r^  )current_valuess   rr   rH  z*PregelLoop.output_writes.<locals>.<lambda>  s    T>:J5K rt   c                     t               S r   r^  r_  s   rr   rH  z*PregelLoop.output_writes.<locals>.<lambda>  s    T*5E rt   r   )r   r   r|   r=   r9   r1   r   r5   r   rp   rn   r   rX   r   r   r   r&  r/   rV   r]   r   )r   r   r   r   r   stream_modesrb  r`  s         @@rr   r   zPregelLoop.output_writes  s    ::>>'**4*{{&:	: , ay|y( 99Q<4'DIIbMT,A "5 )%+) $	
 59KKt{{00R,JJy*BC|+%24==$BRBR%SN!.$74>qM)4Ly1

8-KL 

8-EF1&

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

*6N$$	 S +rt   )(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   ru   rv   r   r   r   WritesTru   rv   )ru   rv   r   r   re   r   r   r   zCall | Noneru   zPregelExecutableTask | None)ru   r   ru   zSequence[PregelExecutableTask])r   z"Mapping[str, PregelExecutableTask]ru   rv   )ru   zset[str])r   r   r   r   ru   r   )r  r   ru   rv   rI  ztype[BaseException] | NonerG  zBaseException | NonerJ  zTracebackType | Noneru   zbool | None)
rx   rh   r   zCallable[P, Iterator[Any]]rF  zP.argsrW  zP.kwargsru   rv   )r   r   r   rh  r   r   ru   rv   )__name__
__module____qualname____annotations__r   r   r9   r   r   r   r   r   r  r  r  r   r  r3  r  rL  r   r   r   rt   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M^!9F""
+"<s 0s DSs 	s jN`;I,;I (;I (	;I
 
;Iz"" +" 	"
 " 
"J @E22$+28<2	2rt   r{   c            
           e Zd Zdeeeeedddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 	 	 	 	 ddZddZ	 d	 	 	 	 	 	 	 d fdZd fdZdd	Z		 	 	 	 	 	 	 	 dd
Z
 xZS )SyncPregelLoopNr   )	r   r   r   r   r   r   r   r   r   c               \   t         |   ||||||||||||||||	|||
       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y 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   zSyncPregelLoop.__init__  s    . 	%!##+-1-%%!' 	 	
* [
1=1N1ND.+7+B+BD(,112==AA+N :
 2;D.48D1+/D(=BD:rt   c                    	 ||j                          t        t        | j                        j	                  ||||       y # t        t        | j                        j	                  ||||       w xY wr   )rO  r   r   r   putr   prevr|   r   r  r>  s         rr   r   z/SyncPregelLoop._checkpointer_put_after_previous   sa    	$d&7&78<<
HlD$d&7&78<<
Hls   A .A/c                   | j                   yg }| j                  j                         D ci c]G  }|j                  r9|j                  s-|j                  j
                  |j                  j                  f|I c}x}rk| j                   j                  t        |            j                         D ]6  \  }}||   }|j                  j                  |       |j                  |       8 |S c c}w )Nr   )r   r   r   	cache_keyr   nskeyr   r   r   r   r   r   matchedr  r   r  r   r   s          rr   r  z"SyncPregelLoop.match_cached_writes  s    ::.0 ZZ&&(
{{188 [[^^Q[[__-q0
 
6 

  $zz~~eFm<BBD %Vc{""6*t$% 
s   AC*c                    t         |   |||      x}r=| j                         D ]*  }| j                  |j                  |j
                  d       , |S NTr   )ru  r   r  r   r   r   r   r   r   r   r   ry  s        rr   r   zSyncPregelLoop.accept_push  sZ     W(y$??6?002 F""477DKK"EFrt   c                   t         |   ||       |r| j                  t        | d      sy| j                  j                  |      }||j                  y| j                  | j                  j                  |j                  j                  |j                  j                  f|j                  |j                  j                  fi       y)r   Nr   )ru  r   r   r   r   r   r  r   r  r  r  r   ttlr   r   r   r   ry  s       rr   r   zSyncPregelLoop.put_writes'  s    7F++743Izz~~g&<4>>1JJNN""DNN$6$67KKNN&&:	
rt   c                   | j                   r&| j                   j                  | j                        }nd }|$t        | j                  t	               ddid g       }n'| j
                  | j                  |j                         i | j                  |j                  t        t        di| j                  j                  t        i       |j                  j                  t        i       i| _        |j                  | _        |j                  d   | _        |j                  | _        |j                  | _        |j                   .|j                   D cg c]  \  }}}t#        |      ||f c}}}ng | _        | j&                  j)                  t+        | j                              | _        t/        | j0                  | j                        \  | _        | _        | j&                  j7                  | j8                         d| _        | j                  d   dz   | _        | j<                  | j                  d   z   dz   | _        | j                  d   jA                         | _!        | jE                  | jF                  | j                  j                  d	      r$tI        | j                  j                  d	            nd 
      | _%        | S c c}}}w 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   rv  enter_contextrR   r   rM   r   r   r   pushrL  r   r   r   r9  r   r3  r   r  r   r   savedr  r  r   s        rr   	__enter__zSyncPregelLoop.__enter__;  sp   %%//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D)#q!c#h1D 	& jj../A$++/NO&>JJ'
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V) $""#56 !!4!45G!HI	 !, !
 + Es   Kc                <    | j                   j                  |||      S r   )rv  __exit__)r   rI  rG  rJ  s       rr   r  zSyncPregelLoop.__exit__k  s     zz""8Y	BBrt   )(r   r   rp   r   r|   r   r~   r}   r   re  r   r   r   r   r   r   r   rf  r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   rv   )r}  z concurrent.futures.Future | Noner|   r   r   r   r  r   r>  r   ru   r   rj  r   ri  rg  ru   r#   rk  )rl  rm  rn  r9   r   r   r  r   r   r  r  __classcell__ry  s   @rr   rq  rq    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t.  	
 % & 
   OS(58@K	$
(.`C,C (C (	C
 
Crt   rq  c            
           e Zd Zeedeeedddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 	 	 	 	 ddZddZ	 d	 	 	 	 	 	 	 d fdZd fdZdd	Z		 	 	 	 	 	 	 	 dd
Z
 xZS )AsyncPregelLoopNr   )	r   r   r   r   r   r   r   r   r   c               \   t         |   ||||||||||||||||	|||
       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y rs  )ru  r   r   rv  rw  r   aput_writesr   r   rx  r   r   rG   r   )r   r   rp   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ry  s                       rr   r   zAsyncPregelLoop.__init__v  s    . 	%!##+-1-%%!' 	 	
* $%
1=1N1ND.+7+C+CD(,223>>BB;O :
 2;D.48D1+/D(=BD:rt   c                
  K   	 |
| d {    t        t        | j                        j                  ||||       d {    y 7 97 # t        t        | j                        j                  ||||       d {  7   w xY wwr   )r   r   r   aputr|  s         rr   r   z0AsyncPregelLoop._checkpointer_put_after_previous  s     	

*D,=,=>CC
Hl   $*D,=,=>CC
Hl  sH   BA	 AA	 /BA BA	 B	0B 9A<:B  Bc                  K   | j                   g S g }| j                  j                         D ci c]G  }|j                  r9|j                  s-|j                  j
                  |j                  j                  f|I c}x}rs| j                   j                  t        |             d {   j                         D ]6  \  }}||   }|j                  j                  |       |j                  |       8 |S c c}w 7 Rwr   )r   r   r   r  r   r  r  agetr   r   r   r   r  s          rr   r  z$AsyncPregelLoop.amatch_cached_writes  s     ::I.0 ZZ&&(
{{188 [[^^Q[[__-q0
 
6 

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

 !Es   -C<AC5;,C<'C:(AC<c                   K   t         |   |||      x}rE| j                          d {   D ]*  }| j                  |j                  |j
                  d       , |S 7 3wr  )ru  r   r  r   r   r   r  s        rr   aaccept_pushzAsyncPregelLoop.aaccept_push  sf      W(y$??6?"7799 F""477DKK"EF :s   'A A4A c                   t         |   ||       |r| j                  t        | d      sy| j                  j                  |      }||j                  y|d   d   t        t        fv ry| j                  | j                  j                  |j                  j                  |j                  j                  f|j                  |j                  j                  fi       y)r   Nr   r   )ru  r   r   r   r   r   r  r1   r/   r   asetr  r  r   r  r  s       rr   r   zAsyncPregelLoop.put_writes  s    7F++743Izz~~g&<4>>1!9Q<Iu--JJOO""DNN$6$67KKNN&&:	
rt   c                  K   | j                   r.| j                   j                  | j                         d {   }nd }|$t        | j                  t	               ddid g       }n'| j
                  | j                  |j                         i | j                  |j                  t        t        di| j                  j                  t        i       |j                  j                  t        i       i| _        |j                  | _        |j                  d   | _        |j                  | _        |j                  | _        |j                   .|j                   D cg c]  \  }}}t#        |      ||f c}}}ng | _        | j&                  j)                  t+        | j                               d {   | _        t/        | j0                  | j                        \  | _        | _        | j&                  j7                  | j8                         d| _        | j                  d   dz   | _        | j<                  | j                  d   z   dz   | _        | j                  d   jA                         | _!        | jE                  | jF                  | j                  j                  d	      r$tI        | j                  j                  d	            nd 
      | _%        | S 7 c c}}}w 7 -wr  )&r   
aget_tupler   r   rP   r   r   r|   r%   r(   r   r  r   r   r  r   r   r   r   rv  enter_async_contextrQ   r   rM   r   r   r   r  rL  r   r   r   r9  r   r3  r   r  r   r  s        rr   
__aenter__z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D)#q!c#h1D 	& !JJ::#DKK0
 
 '?JJ'
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V) $""#56 !!4!45G!HI	 !, !
 ] O. E

s/   5K"KD$K"K5=K"2K3D#K"K"c                   K   t        j                  | j                  j                  |||            }	 | d {   S 7 # t         j                  $ r}g |j
                  ||_         d }~ww xY wwr   )asynciocreate_taskrv  	__aexit__CancelledErrorrF  )r   rI  rG  rJ  	exit_taskes         rr   r  zAsyncPregelLoop.__aexit__   sl      ''JJ  9i@
		"?"?%% 	 *qvv)y)AF		s5   1A2A  >A  A2A   A/A**A//A2)(r   r   rp   r   r|   r   r~   r}   r   re  r   r   r   r   r   r   r   rf  r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   rv   )r}  zasyncio.Task | Noner|   r   r   r   r  r   r>  r   ru   r   rj  r   ri  rg  r  rk  )rl  rm  rn  r9   r   r   r  r  r   r  r  r  r  s   @rr   r  r  u  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t!  	
 % & 
   OS(58@K	$
.0d, ( (	
 
rt   r  )rq   r`   ru   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   rh  ry   r{   rq  r  r   rt   rr   <module>r     sQ   "    * A A  (    M 3 *   + - :     * = : / = *     
  . S 
 B	 	 	 CLcN 5c?
#Qv vrmCZ!7 mC`{j"= {rt   