
    A'h                     r   d dl 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 d dlmZmZ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mZ d d	l m!Z! d d
l"m#Z# d dl$m%Z%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZPmQZQmRZRmSZS d dlTmUZUmVZVmWZW d dlXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb d dlcmdZdmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZnmoZompZp d dlqmrZrmsZsmtZtmuZumvZvmwZw d dlxmyZymzZz d dl{m|Z| d dl}m~Z~mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ  ed      Z e%d      Z e       Z e       Z e       ZeDeFeLfZeeeef      Zded efd!Z G d" d#e      Z G d$ d%ee      Z G d& d'ee      Zy)(    N)defaultdictdeque)IteratorMappingSequence)AbstractAsyncContextManagerAbstractContextManagerAsyncExitStack	ExitStack)	signature)TracebackType)AnyCallableLiteralOptionalTypeVarUnioncast)AsyncParentRunManagerParentRunManager)RunnableConfig)	BaseModel)	ParamSpecSelf)	BaseCache)BaseChannel)	EXCLUDED_METADATA_KEYSWRITES_IDX_MAPBaseCheckpointSaverChannelVersions
CheckpointCheckpointMetadataCheckpointTuplePendingWritecopy_checkpoint)CONFCONFIG_KEY_CHECKPOINT_IDCONFIG_KEY_CHECKPOINT_MAPCONFIG_KEY_CHECKPOINT_NSCONFIG_KEY_DEDUPE_TASKSCONFIG_KEY_DELEGATECONFIG_KEY_ENSURE_LATESTCONFIG_KEY_RESUME_MAPCONFIG_KEY_RESUMINGCONFIG_KEY_SCRATCHPADCONFIG_KEY_STREAMCONFIG_KEY_TASK_IDCONFIG_KEY_THREAD_ID	EMPTY_SEQERRORINPUT	INTERRUPTMISSINGNS_SEPNULL_TASK_IDPUSHRESUME	SCHEDULED
TAG_HIDDENTASKS)CheckpointNotLatestEmptyInputErrorGraphDelegateGraphInterrupt)ManagedValueMappingManagedValueSpecWritableManagedValue)
CallGetNextVersionPregelTaskWritesapply_writescheckpoint_null_version	incrementprepare_next_tasksprepare_single_taskshould_interrupttask_path_str)create_checkpointempty_checkpoint)map_debug_checkpointmap_debug_task_resultsmap_debug_tasksprint_step_checkpointprint_step_tasksprint_step_writes)AsyncBackgroundExecutorBackgroundExecutorSubmit)map_command	map_inputmap_output_updatesmap_output_valuesread_channelssingle)AsyncChannelsManagerChannelsManager)
PregelNode)get_new_channel_versionsis_xxh3_128_hexdigest)	BaseStore)	AllCachePolicyCommandLoopProtocolPregelExecutableTaskPregelScratchpadRetryPolicyStreamChunkStreamProtocol)patch_configurableVPstreamsreturnc            	           dt         dd f fd}t        | D ch c]  }|j                  D ]  }|  c}}      S c c}}w )Nvaluert   c                 H    D ]  }| d   |j                   v s ||         y )N   )modes)rv   streamrs   s     \/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/langgraph/pregel/loop.py__call__zDuplexStream.<locals>.__call__   s)     	FQx6<<'u	    )rn   ro   ry   )rs   r|   smodes   `   r{   DuplexStreamr      sC      
 (7$Oaqww$OtT$OT$OPP$Os   =c            +           e Zd ZU ee   ed<   eee      ed<   eee	      ed<   ee
   ed<   eeef   ed<   eeeeef   f   ed<   eeee   f   ed<   eeee   f   ed<   eed	<   eed
<   edeef   ed<   eeee   f   ed<   eeee   f   ed<   eed<   eed<   ee   ed<   ee   ed<   eed<   eeee	egef      ed<   eed<   eeeej8                  j:                     eeeegef      ed<   eeegdf      ed<   e ed<   eeef   ed<   e!ed<   eed<   eed<   e"edf   ed<   eed<   e#ed <   e$e%   ed!<   e&eeee'e(f   f   ed"<   ee   ed#<   e)d$   ed%<   e&ee*f   ed&<   e$e*   ed'<   dZ+ede&eef   ef   ed(<   e,e,ddd)dd*dd+d,	dee   d-ee-   d.ed/ee.   dee   dee
   deeef   deeeeef   f   deeee   f   deeee   f   d0eeee   f   deeee   f   deeee   f   dedeef   deee      ded1eeegdf      dee   dee   ded2df* fd3Z/d4ed5e	d2dfd6Z0dRd7Z1	 dSd8e*d9e(d:ee2   d2ee*   fd;Z3d<eeee   f   d2efd=Z4d2ee*   fd>Z5d2ee*   fd?Z6d&eee*f   d2dfd@Z7d<eeee   f   d2ee8e      fdAZ9dBe#d2dfdCZ:dDedEee   d2dfdFZ;dGeee<      dHee<   dIee=   d2ee   fdJZ>dKedEee?e@e   f   dLe?j                  dMe?j                  d2df
dNZCd)dOd4ed5e	dPed2dfdQZD xZES )T
PregelLoopinputinput_modelcachecheckpointernodesspecsoutput_keysstream_keysskip_done_tasks	is_nestedNmanagerinterrupt_afterinterrupt_beforecheckpoint_duringdebugretry_policycache_policycheckpointer_get_next_versioncheckpointer_put_writes)checkpointer_put_writes_accepts_task_path _checkpointer_put_after_previous_migrate_checkpointsubmitchannelsmanaged
checkpointcheckpoint_id_saved.checkpoint_nscheckpoint_configcheckpoint_metadatacheckpoint_pending_writescheckpoint_previous_versionsprev_checkpoint_config)pendingdoner   r   out_of_stepsstatustasksto_interruptoutputF T)	r   r   r   r   r   migrate_checkpointr   r   r   rz   configstoretrigger_to_nodesr   rt   c          
      v   t         |   dd|||       || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        t        | j                  j                  t         i       v | _        t$        |t            vxs t&        |t            v | _        || _        || _        || _        || _        || _        || _        | j6                  8t8        |t            v r)t;        | j6                  |t            t8                 | _        |t            j                  t<              }| j                  t            j                  t>              sotA        |tB              r_|jE                         x}rMtG        | j                  tH        tK        jL                  |t            tH           tO        |      f      i      | _        | j"                  sC|t            j                  tH              r'tG        | j                  tH        dt$        d i      | _        tP        | j                  t            v r| j                  t            j                  tH              | j                  t            tP           v rUtG        | j                  t$        | j                  t            tP           | j                  t            tH              i      | _)        n| j                  | _)        | jR                  t            j                  tT              x}r:tA        |tN              s*tG        | jR                  tT        tO        |      i      | _)        | j                  t            j                  tH              rDtW        tY        tN        | j                  t            tH                 j[                  tJ                    nd| _.        d | _/        y )Nr   )stepstopr   rz   r    r   )0super__init__r   r   r   r   r   r   r   r   r   r   r   r1   r   getr&   r   r'   r*   r   r   r   r   r   r   r   rz   r0   r   r/   r+   
isinstancerl   subgraph_counterrp   r)   r8   joinstrr(   r   r2   tupler   splitr   r   )selfr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
scratchpadcnt	thread_id	__class__s                           r{   r   zPregelLoop.__init__   s)   0 	 	 	
 
&(


&&. 0+t{{tR/HH$F4L8 7&&,6 	 $6  0((!2
;;"'8F4L'H&t{{F4LAR4STDK171A1ABW1X
{{4 $$%89j(?

 !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 	
 '+#r}   task_idwritesc           	         |sy| j                   xs t        d |D              }t        d |D              r+t        |D ci c]  }|d   |
 c}j	                               }| j
                  D cg c]  }|d   k7  s| c}| _        | j
                  j                  fd|D               |r| j                  t        | j                  t        | j                  t           j                  t        d      t        | j                  d   i      }| j                   rat#        | d      r| j$                  j                        }nd}| j'                  | j                  |||rt)        |j*                        nd       n| j'                  | j                  ||       t#        | d      r| j-                  |       yyc c}w c c}w )	3Put writes for a task, to be read by the next tick.Nc              3   4   K   | ]  }|d    t         k(    ywr   N)r>   .0ws     r{   	<genexpr>z(PregelLoop.put_writes.<locals>.<genexpr>?  s     9XA!A$%-9X   c              3   2   K   | ]  }|d    t         v   ywr   )r   r   s     r{   r   z(PregelLoop.put_writes.<locals>.<genexpr>A  s     6!qt~%6   r   c              3   .   K   | ]  \  }}||f  y wNr   )r   cvr   s      r{   r   z(PregelLoop.put_writes.<locals>.<genexpr>H  s     -Q$!Qw1o-Qs   r   idr   )r   anyalllistvaluesr   extendr   rp   r   r)   r   r&   r   r'   r   r   hasattrr   r   rO   pathoutput_writes)r   r   r   r   r   r   tasks    `     r{   
put_writeszPregelLoop.put_writes9  s    !22Xc9XQW9X6X6v66F3q1Q473::<=F 55*
1A*
& 	&&---Q&-QQ!=!=!I'&&,dkk$.?.C.C0"/ -dood.C	F ==4)::>>'2DD0004M$))," 00	 4!w/ "K 4*
s    F;0G >G 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   rp   r   r)   r   r&   r   r'   r   r   r   appenditemsr   r   r   r   rO   r   )r   r   by_taskr   channelrv   r   r   s           r{   _put_pending_writeszPregelLoop._put_pending_writesj  s6   ''/--#""($++d*;*?*?,b+ )$//$*?	
 d#'+'E'E 	6#GWeG##We$45	6  '}} 	OGV=='gC zz~~g.0004M$))," 00		r}   r   	write_idxcallc                 \   | j                   r>t        | j                  | j                   |g      r| j                  j	                  |       yt        j                  | j                  d   j                  dd            }t        | j                        }t        t        t           t        t        |j                  ||j                  |fdf| j                  ||| j                   | j"                  | j$                  | j&                  |j(                  | j*                  d| j,                  | j.                  | j0                  | j2                  | j4                  d      x}r| j6                  r>t        | j                  | j6                  |g      r| j                  j	                  |       y| j9                  dt:        | j*                  |g       | j<                  rt?        | j*                  |g       || j@                  |j                  <   | jB                  r| jE                  |j                  |i       |S y)zEAccept a PUSH from a task, potentially returning a new task to start.Nr   -r   T)r   checkpoint_id_bytesrJ   pending_writes	processesr   r   r   r   for_executionr   r   r   r   r   r   )#r   rN   r   r   r   binascii	unhexlifyreplacerJ   r   r   rk   rM   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _emitrT   r   rV   r   r   _match_writes)r   r   r   r   r   null_versionpusheds          r{   accept_pushzPregelLoop.accept_push  s   
 $4OOT11D6%
 $$T*&001F1N1NsTV1WX.t?)*tyy)TWWd;  ??$7(4#==**{{YY"jj!..!..!..#
 
6 
. $$)9!6!6* !!((0JJwVHEzz VH5$*DJJvyy!##""FIIv#67MO
r}   
input_keysc                h   | j                   dk7  rt        d      d}| j                  t        t        t
        fvr| j                  |      }n| j                  rd| _         t               t        d | j                  j                         D              r| j                  j                         D cg c]  }|j                  D ]  }|  }}}| j                  rHt        | j                  |t!        | j"                  t$              r| j"                  gn| j"                         t'        | j(                  | j*                  | j                  j                         | j,                  | j.                        \  }}|j1                         D ]  \  }}| j3                  ||        | j                  t
        u rPt        | _         t5        t6        t8           | j:                        di t=        | j*                  | j"                         | j?                  dt@        | jB                  || j*                         | jD                  jG                          d| _$        | jK                  d	tM        tO        | jB                  | j                  j                         D cg c]  }||j                  f c}            d
       | jP                  rJtS        | j(                  | jP                  | j                  j                               rd| _         t               | jT                  tV           jY                  tZ        d       ny| j                  | j\                  kD  rd| _         yt_        | j(                  | jD                  | j`                  | j*                  | jb                  | jT                  | j                  d| jd                  | jf                  | jh                  | j.                  || jj                  | jl                        | _
        g | _        | jn                  | j?                  dtp        | j                  dz
  | jr                  | j*                  | j"                  | jt                  | j(                  | j                  j                         | jD                  | jv                  | jB                         | j                  sd| _         y| jT                  tV           jy                  tz              r<| j                  t        u sJ t}        t        | jT                  tz        di      dd      | jH                  r'| jD                  r| j                  | j                         t        d | j                  j                         D              r| j                  |      S | j                  rJtS        | j(                  | j                  | j                  j                               rd| _         t               | j?                  dt        | j                  | j                  j                                | j                  r7t        | j                  t        | j                  j                                      | j                  j                         D ]7  }	|	j                  s| j                  |	j                  |	j                  d       9 yc c}}w c c}w )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.
        r   z.Cannot tick when status is no longer 'pending'N)r   r   c              3   4   K   | ]  }|j                     y wr   r   r   r   s     r{   r   z"PregelLoop.tick.<locals>.<genexpr>  s     ==r   r   Tloopsourcer   r   Fr   )r   r   r   r   r   updated_channelsr   r   r   rx   r   r   r   c              3   4   K   | ]  }|j                     y wr   r   r   s     r{   r   z"PregelLoop.tick.<locals>.<genexpr>_  s     ;tt{{;r   cachedr   )Hr   RuntimeErrorr   
INPUT_DONEINPUT_RESUMINGINPUT_SHOULD_VALIDATE_firstr   rB   r   r   r   r   r   rW   r   r   r   r   rI   r   r   r   r   r   
_update_mvr   typer   r   r_   r   r^   r   r   clearr   _put_checkpointr`   r]   r   rN   r   r&   popr.   r   rL   r   r   r   r   r   r   r   r   rR   r   r   r   r   r+   rA   rp   r   tickr   rT   rV   r   r   r   )
r   r   r   tr   r   	mv_writeskeyr   r   s
             r{   r  zPregelLoop.tick  s]    ;;)#OPP,0::j.:OPP#{{j{A,DK ""=):):)<==!%!2!2!4GAahhGaGaGFGzz!II &d&6&6< ))*!-- +7

!!#22%%+'I'  )0 -VV,- zz22'
7T)_d&6&67 #DMM43C3CD JJ+T-=-=vt}} **002#'D   $$* ,,48JJ4E4E4GHqa]H
 ##(8!5!5tzz7H7H7J) 0$&& KK!!"5t< 99tyy (DK (OO**JJMMLLKKIILL****!22-****

"  00<JJ$		A&&  ((

!!#..++    zz DK ;;t  !45::///0&95%A "	  D$B$Btzz* ;tzz'8'8':;;99
933   %5OOT22DJJ4E4E4G&
 -DK "" 	

7OTYY

8I8I8KL ::TYYTZZ->->-@(AB JJ%%' 	FD{{""477DKK"E	F i HZ Is   3Z)Z/c                     t         r   NotImplementedErrorr   s    r{   match_cached_writeszPregelLoop.match_cached_writesw      !!r}   c                    K   t         wr   r  r  s    r{   amatch_cached_writeszPregelLoop.amatch_cached_writesz  s     !!s   	c                    | j                   D ]  \  }}}|t        t        t        fv r|j	                  |      x}s/|t
        k(  re|t        | j                  d   j	                  t        i       j                         d       k(  sxt        j                  |d      | j                  |<   |j                  j                  ||f        y )Nversions_seen)defaultT)	scheduled)r   r4   r6   r;   r   r<   maxr   r   dataclassesr   r   r   r   )r   r   tidkr   r   s         r{   r   zPregelLoop._match_writes  s    77 	/ICAUIv..yy~%t%	>C8<<YKRRT $  +6*=*=dd*S

3KK&&1v.	/r}   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(              }d }t        | j                  t              r| j                  j                  x}d uxr$ t        |t              xr t        d |D              x}r.| j                  j                  | j                   t           t        <   || j                   st#        d      t%        t&              }t)        | j                        D ](  \  }}	}
|	t*        k(  r|r||   j-                  |	|
f       * |s|st/        d      |j1                         D ]  \  }}| j3                  ||        | j4                  D cg c]  }|d   t6        k(  s|d	d   c}x}rut9        | j                  | j:                  t=        d
t>        |g       g| j@                  | jB                        \  }}|j1                         D ]  \  }}| jE                  ||        |r| j                  d   jG                  tH        i        | j:                  D ]?  }|| j                  d   v s| j                  d   |   }|| j                  d   tH           |<   A | jK                  dtL        | jN                  d| j:                         tP        | _        ntS        tU        || j                              x}r| j                   t           j                  tV              r2tY        t[        | j                   tV        di      | j                  d      t]        | j                  | j4                  | j^                  | j:                  | j`                  | j                   | jb                  dd d d       }t9        | j                  | j:                  g |je                         t=        d
t>        |g       | j@                  | jB                        \  }}|rJ d       | jg                  dt        |      d       | jh                  Ft        | j                  | jh                        s&t        | jj                  tl              stn        | _        n-tp        | _        n!t
        |vrt/        d|       tp        | _        | j                  s!t[        | j                   t
        |i      | _         |S c c}w )Nchannel_versionsmetadatarun_idc              3   2   K   | ]  }t        |        y wr   )re   )r   r  s     r{   r   z$PregelLoop._first.<locals>.<genexpr>  s     AQ-a0Ar   z3Cannot use Command(resume=...) without checkpointer)cmdzReceived empty Command inputr   rx   r   r  r   TFr   )r   r   r   r   z*Can't write to SharedValues in graph inputr   r   zReceived no input for )9r   r   r&   boolr   r.   r   r   ri   r   r   r7   resumedictr   r-   r   r  r   r   r[   r;   r   r@   r   r   r   r9   rI   r   rH   r5   r   r   r  
setdefaultr6   r   r^   r   r  r   r\   r+   rA   rp   rL   r   r   r   r   r	  r   r   r   r  r  )r   r   configurableis_resumingr   r&  resume_is_mapr   r  r   r   wsr   null_writesr  _r  r   r  versioninput_writesdiscard_taskss                         r{   r  zPregelLoop._first  s    {{tR04??+=>? 
D#

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

		"!M +7"))+$RbA 22%%	+'I' !N"NN=  GtL?Q!RS   ,"4::t/?/?@"4#3#3S92
'
 4!$::,"GHH#DJ~~,1;?DK  i
s   U".U"r!  c           
      |   || j                   u }|r| j                  d   | j                  k(  ry |s| j                  |d<   | j                  t
           j                  t        i       |d<   || _         | j                  rHt        || j                  t        | j                  t              r| j                  gn| j                         | j                  dkD  r| j                  d   nd | _        | j                  d uxr |xs | j                   }t#        | j                  |r| j                  nd | j                  |r| j                  d   nd       | _        |r| j                  | j                  d   j%                         D ]   \  }}|t&        v r|j)                  ||       " t*        | j,                  t
           v r&| j,                  t
           t*           r| j,                  nd | _        i | j,                  t
        i | j,                  t
           t*        | j                  t0        | j                  t
           j                  t0        d      ii| _        | j                  d   j3                         }t5        | j6                  |      }|| _        | j9                  | j                  t;        | d	d       | j,                  t=        | j                        | j                   |      | _        i | j,                  t
        i | j,                  t
           t*        | j                  d   ii| _        |s| xj                  d
z  c_        y y )Nr   r   parents)r   r!  r   r   _put_checkpoint_futrx   ) r   r   r   r   r   r&   r   r(   r   rU   r   r   r   r   checkpoint_id_prevr   r   rP   r   r   r(  r'   r   r   r)   copyrd   r   r   getattrr%   r5  )r   r!  exitingdo_checkpointr  r   r   new_versionss           r{   r	  zPregelLoop._put_checkpoint  s   d666tt,0H0HH#yyHV"&++d"3"7"78QSU"VHY'/D$zz%MM &d&6&6< ))*!-- @Dyy2~dood&;SWD#==TI 
-t-- 	 ,OO*DMMII(/tt$T	
 TBBNJ/557 *1..##Aq)* ,t/E/Ed/KK**401IJ && 	 '
&((
& ,,T2 -d.E.E,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 r}   r  r   c                     t         r   r  )r   r  r   s      r{   r  zPregelLoop._update_mvd  r  r}   exc_type	exc_value	tracebackc                    | j                   s+| j                  | j                         | j                          t	        t
              xr | j                   }|r~t        | d      r| j                  rt        d | j                  j                         D              rt        | j                  | j                  | j                  j                         | j                  | j                         \  }}|j#                         D ]  \  }}| j%                  ||        | j'                  dt(        | j*                  | j                  j                         D 	
cg c]  }	|	j,                  D ]  }
|
  c}
}	| j                         0j.                  rj.                  d   s| j'                  dfd       t1        | j                  | j*                        | _        y|&t1        | j                  | j*                        | _        y y c c}
}	w )Nr   c              3   4   K   | ]  }|j                     y wr   r   r   s     r{   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>x  s     DDr   r   r   updatesc                  ^    t        t        t        t               j                  d   ig      S )Nr   )iterr6   r   rB   args)r>  s   r{   <lambda>z0PregelLoop._suppress_interrupt.<locals>.<lambda>  s)    D#T.)%D%I%I!%LMN r}   T)r   r	  r   r   r   rB   r   r   r   r   r   r   rI   r   r   r   r   r   r  r   r^   r   r   rE  r_   r   )r   r=  r>  r?  suppressr  r.  r  r   r  r   s     `        r{   _suppress_interruptzPregelLoop._suppress_interruptg  s    %%  !9!9:$$&i8O=O g&22D

0A0A0CDD+OOMMJJ%%'66)) 	1 $-??#4 1KCOOC01

%$$ $

 1 1 3F1QXXFQFQFMM $innINNSTDU

 (t7G7GHDK't7G7GHDK  Gs   Hr   rE  kwargsc                     | j                   y || j                   j                  vry  ||i |D ]   }| j                  | j                  ||f       " y r   )rz   ry   r   )r   r   r   rE  rI  r   s         r{   r   zPregelLoop._emit  sX     ;;t{{((((( 	7AKK++T156	7r}   r   r   c                   | j                   j                  |      x}rC|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       nOd|v rK| j                  dfd	       n5|d   d   t        k7  r&| j                  dt        | j                  ||fg|       |s0| j                  d
t        | j                   ||f| j"                         y y y )Ntagsr   r4  Tc              3   ~   K   | ]5  }|d    t         k(  r't        |d   t              r|d   n|d   fD ]  }|  7 yw)r   rx   N)r6   r   r   )r   r   r   s      r{   r   z+PregelLoop.output_writes.<locals>.<genexpr>  sS      ) ! ty0.81x.HadqQRtg	) !" ))s   ;=rB  c                      t               S r   rD  
interruptss   r{   rF  z*PregelLoop.output_writes.<locals>.<lambda>  s    $z2B r}   r   c                      t               S r   rO  rP  s   r{   rF  z*PregelLoop.output_writes.<locals>.<lambda>  s    j1A r}   r   )r   r   r   r=   r3   r6   r   r:   r   rz   ry   r   r4   r]   r   rS   r   r   )r   r   r   r   r   stream_modesrQ  s         @r{   r   zPregelLoop.output_writes  sX    ::>>'**4*{{&:	: , ay|y( 99Q<4'DIIbMT,A "5 )%+) $	
 59KKt{{00R,JJy*BC-JJx)AB1&

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

*II6N$$ E +r}   )rt   Nr   )F__name__
__module____qualname__r   r   __annotations__r  r   r   WritesTr   r   r   rc   r   r   rD   r   r%  r   r   rg   rm   rh   rG   r   r   
concurrentfuturesFuturer!   r    rZ   rC   r   r"   r   r$   r'  floatintr   rk   r   r3   ro   rf   r   r   r   rF   r   r  r  r  r   setr  r	  r  BaseExceptionr   rH  rr   r   rE  rI  r   r   __classcell__r   s   @r{   r   r      s   C=$y/**Ig&''.//3
?##3k+;;<<==sHSM)**sHSM)**O4.0@@AA3-..C#.//K;'';''#11%h/Ms/R&STT/33&.++223 		
'  "(J<+=">??Nc;&''  c?"%%++#L11"&sE#uc/,B'B"CC$^44P  ))**+,,/3FE$S#X+,3$ 6?6?HL15EI.0.2"&-h+}h+ (	h+
 h+ 	"h+ 	"h+ 23h+ sJ'h+ sE+/?"?@@Ah+ 3-.h+ 3-.h+ "#x}"45h+ sHSM12h+  Xc] 23h+  t24DDE!h+" d9o.#h+$ %h+& %XzlD.@%AB'h+( {+)h+* {++h+,  -h+. 
/h+T/0# /0w /04 /0b&R RV3(3583@H3	&	'3jn #x},-n 
	n`"X.B%C ""H5I,J "
/730D+D#E /$ / E#x}*<$=  (3s8BT  BT(: Tt Tl"c "8C= "T "1I4./1I M*1I M*	1I
 
$1If77 HSM)*7 vv	7
 ((7 
7 @E,,$+,8<,	,r}   r   c            +       P    e Zd Zdeeeeddddddddee   dee   ded	ee   d
ee	   dee
   deeef   deeeeef   f   deeee   f   dedeef   deeee   f   deeee   f   deeee   f   deeee   f   deee      dedeeegdf      dee   dee   deddf* fdZdeej<                  j>                     dedede de!defd Z"d!ed"ee   ddfd#Z#dee$   fd$Z%	 d1d%e$d&e&d'ee'   dee$   f fd(Z(d)ed*e)ddf fd+Z*de+fd,Z,d-eee-      d.ee-   d/ee.   dee   fd0Z/ xZ0S )2SyncPregelLoopNFr   T)r   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   c                ^   t         |   ||||||||||||||
|||	|||       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y N)r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	task_pathF)r   r   r   stackget_next_versionr   r   r   r   
parametersr   r   rK   r   )r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                        r{   r   zSyncPregelLoop.__init__  s    0 	#%##+-1-%%/) 	 	
, [
1=1N1ND.+7+B+BD(,112==AA+N :
 2;D.48D1+/D(=BD:r}   prevr   r!  r;  c                     	 ||j                          t        t        | j                        j	                  ||||       y # t        t        | j                        j	                  ||||       w xY wr   )resultr   r   r   putr   rj  r   r   r!  r;  s         r{   r   z/SyncPregelLoop._checkpointer_put_after_previous  sa    	$d&7&78<<
HlD$d&7&78<<
Hls   A .A/r  r   c                     | j                   j                  |      }|y | j                  t        t        |      j
                  |      S r   )r   r   r   r   rE   updater   r  r   managed_values       r{   r  zSyncPregelLoop._update_mv$  s>    ((- {{4 4mDKKVTTr}   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   nsr  r   r   r   r   r   r   matchedr  r   r  r   r   s          r{   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*r   r   r   c                 N    t         |   |||      x}r| j                          |S r   )r   r   r  r   r   r   r   r   r   s        r{   r   zSyncPregelLoop.accept_push:  s/     W(y$??6?$$&r}   r   r   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   )r   r   r   r   r   r   rt  r   r^  ru  r  r   ttlr   r   r   r   r   s       r{   r   zSyncPregelLoop.put_writesA  s    7F++743Izz~~g&<4>>1JJNN""DNN$6$67KKNN&&:	
r}   c                    | j                   j                  t        i       j                  t              r| j                  t           j                  t
              r~| j                  t        d      | j                  j                  t        | j                  t
        d i            }|*|j                  d   | j                  t           t
           k7  r:t        | 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 | _        | j0                  j3                  t5        | j                               | _        | j0                  j3                  t9        | j:                  | j                  |             \  | _        | _        | j0                  jA                  | jB                         d| _"        | j(                  d   dz   | _#        | jF                  | j                   d   z   dz   | _$        | j                  d	   jK                         | _&        | S c c}}}w 
Nz4Cannot ensure latest checkpoint without checkpointerr   r   r   r   rx   recursion_limitr   )'r   r   r&   r,   r   r'   r   r  	get_tuplerp   r   r?   r#   rQ   r   r)   parent_configr   r   r!  r   r   r   r   rg  enter_contextrY   r   rb   r   r   r   pushrH  r   r   r   r7  r   r   savedr  r  r   s        r{   	__enter__zSyncPregelLoop.__enter__U  s   ;;??4$(($
$$T*../GH  ("J  %%//"**-Et,LE ##D)))$/0HIJ *)%%//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&>&>DJJ>'
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V) Es   )Mr=  r>  r?  c                 <    | j                   j                  |||      S r   )rg  __exit__)r   r=  r>  r?  s       r{   r  zSyncPregelLoop.__exit__  s     zz""8Y	BBr}   r   )1rT  rU  rV  r3   r   r   ro   r   rf   r   r   r   r   rc   r   r   rD   r   r   r   rg   r  r   r%  r   r!   rm   rh   r   rY  rZ  r[  r"   r    r   r  rk   r  r]  rF   r   rX  r   r   r  r_  r   r  r`  ra  s   @r{   rc  rc    s    IM5>6?1:1:15EI.0.2"&-:C}:C (	:C
 :C 	":C 	":C 23:C sJ':C sE+/?"?@@A:C "#x}"45:C t24DDE:C sHSM12:C  Xc] 23:C 3-.:C  3-.!:C" d9o.#:C$ %:C& %XzlD.@%AB':C( {+):C* {++:C,  -:C. 
/:Cxz))001  	
 % & 
 Uc U8C= UT UX.B%C   RV(58@H	&	'
# 
w 
4 
(:4 :xC4./C M*C M*	C
 
$Cr}   rc  c            +       <    e Zd Zeedeeddddddddee   dee   ded	ee   d
ee	   dee
   deeef   deeeeef   f   deeee   f   deeee   f   deeee   f   dedeef   deeee   f   deeee   f   deee      dedeeegdf      dee   dee   deddf* fdZdeej<                     dededede defd Z!d!ed"ee   ddfd#Z"dee#   fd$Z$	 d1d%e#d&e%d'ee&   dee#   f fd(Z'd)ed*e(ddf fd+Z)de*fd,Z+d-eee,      d.ee,   d/ee-   dee   fd0Z. xZ/S )2AsyncPregelLoopNFr   T)r   r   r   r   r   r   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   c                ^   t         |   ||||||||||||
|||||	|||       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y re  )r   r   r
   rg  rh  r   aput_writesr   r   ri  r   r   rK   r   )r   r   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                        r{   r   zAsyncPregelLoop.__init__  s    0 	#%##+-1-%%/) 	 	
, $%
1=1N1ND.+7+C+CD(,223>>BB;O :
 2;D.48D1+/D(=BD:r}   rj  r   r!  r;  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   aputrn  s         r{   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r  r   c                     | j                   j                  |      }|y | j                  t        t        |      j
                  |      S r   )r   r   r   r   rE   aupdaterq  s       r{   r  zAsyncPregelLoop._update_mv  s>    ((- {{4 4mDLLfUUr}   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   rt  r   ru  r  agetr   r   r   r   rv  s          r{   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<r   r   r   c                 j   K   t         |   |||      x}r| j                          d {    |S 7 wr   )r   r   r  ry  s        r{   aaccept_pushzAsyncPregelLoop.aaccept_push  s>      W(y$??6?++--- .s   '313r   r   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   )r   r   r   r   r   r   rt  r6   r4   r   asetru  r  r   r{  r|  s       r{   r   zAsyncPregelLoop.put_writes  s    7F++743Izz~~g&<4>>1!9Q<Iu--JJOO""DNN$6$67KKNN&&:	
r}   c                   K   | j                   j                  t        i       j                  t              r| j                  t           j                  t
              r| j                  t        d      | j                  j                  t        | j                  t
        d i             d {   }|*|j                  d   | j                  t           t
           k7  rBt        | 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 | _        | j0                  j3                  t5        | j                                d {   | _        | j0                  j3                  t9        | j:                  | j                  |              d {   \  | _        | _        | j0                  jA                  | jB                         d| _"        | j(                  d   dz   | _#        | jF                  | j                   d   z   dz   | _$        | j                  d	   jK                         | _&        | S 7 7 bc c}}}w 7 7 wr~  )'r   r   r&   r,   r   r'   r   r  
aget_tuplerp   r   r?   r#   rQ   r   r)   r  r   r   r!  r   r   r   r   rg  enter_async_contextrX   r   ra   r   r   r   r  rH  r   r   r   r7  r   r  s        r{   
__aenter__zAsyncPregelLoop.__aenter__  s"    ;;??4$(($
$$T*../GH  ("J  ++66"**-Et,L E ##D)))$/0HIJ *)++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
 
 -1JJ,J,J T__dC-
 '
#t| 	

001,,V4q8	II,= >>B	,0OO<N,O,T,T,V)k O. E

'
sX   B)N+M5,A*NM8D$N;M;=NNANNBN8N;NNr=  r>  r?  c                    K   t        j                  | j                  j                  |||            }	 | d {   S 7 # t         j                  $ r}g |j
                  ||_         d }~ww xY wwr   )asynciocreate_taskrg  	__aexit__CancelledErrorrE  )r   r=  r>  r?  	exit_taskes         r{   r  zAsyncPregelLoop.__aexit__[  sl      ''JJ  9i@
		"?"?%% 	 *qvv)y)AF		s5   1A2A  >A  A2A   A/A**A//A2r   )0rT  rU  rV  r3   r   r   ro   r   rf   r   r   r   r   rc   r   r   rD   r   rg   r   r   r  r   r%  r   r!   rm   rh   r   r  Taskr"   r    r   r  rk   r  r]  rF   r  rX  r   r   r  r_  r   r  r`  ra  s   @r{   r  r    s    6?6?HL1:1:15EI.0.2"&-:C}:C (	:C
 :C 	":C 	":C 23:C sJ':C sE+/?"?@@A:C "#x}"45:C sHSM12:C  Xc] 23:C t24DDE:C 3-.:C  3-.!:C" d9o.#:C$ %:C& %XzlD.@%AB':C( {+):C* {++:C,  -:C. 
/:Cxw||$  	
 % & 
 Vc V8C= VT VH5I,J   RV(58@H	&	'
# 
w 
4 
.=$ =~4./ M* M*	
 
$r}   r  )r  r   concurrent.futuresrY  r  collectionsr   r   collections.abcr   r   r   
contextlibr   r	   r
   r   inspectr   typesr   typingr   r   r   r   r   r   r   langchain_core.callbacksr   r   langchain_core.runnablesr   pydanticr   typing_extensionsr   r   langgraph.cache.baser   langgraph.channels.baser   langgraph.checkpoint.baser   r   r   r    r!   r"   r#   r$   r%   langgraph.constantsr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   langgraph.errorsr?   r@   rA   rB   langgraph.managed.baserC   rD   rE   langgraph.pregel.algorF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   langgraph.pregel.checkpointrP   rQ   langgraph.pregel.debugrR   rS   rT   rU   rV   rW   langgraph.pregel.executorrX   rY   rZ   langgraph.pregel.ior[   r\   r]   r^   r_   r`   langgraph.pregel.managerra   rb   langgraph.pregel.readrc   langgraph.pregel.utilsrd   re   langgraph.store.baserf   langgraph.typesrg   rh   ri   rj   rk   rl   rm   rn   ro   langgraph.utils.configrp   rq   rr   objectr  r  r  SPECIAL_CHANNELSr   r   rX  r   r   rc  r  r   r}   r{   <module>r     s}       * 7 7      M 3  - * /
 
 
      6  
   L  
  K , R *
 
 
 6CLcNX
 9i0 
5c?
#Q> Qn Q} }@ACZ!7 ACHPj"= Pr}   