
    (Gg6                     :   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
 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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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ d dlKmLZLmMZMmNZNmOZO d dlPmQZQmRZRmSZS d dlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^ d dl_m`Z`maZa d dlbmcZcmdZdmeZemfZfmgZgmhZh d dlimjZjmkZkmlZl d dlmmnZnmoZompZpmqZqmrZrmsZs d dltmuZumvZv d dlwmxZx d dlymzZz d dl{m|Z| d dl}m~Z~mZmZmZmZmZmZ d dlmZ  ed      Z e&d      Z e       Z e       Z e       ZeAeCeIfZdedefdZ G d  d!e      Z G d" d#ee      Z G d$ d%ee      Zy)&    N)defaultdictdeque)AsyncExitStack	ExitStack)	signature)TracebackType)AnyAsyncContextManagerCallableContextManagerIteratorListLiteralMappingOptionalSequenceTypeTypeVarUnioncast)AsyncParentRunManagerParentRunManager)RunnableConfig)	BaseModel)	ParamSpecSelf)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_RESUMINGCONFIG_KEY_SCRATCHPADCONFIG_KEY_STREAMCONFIG_KEY_TASK_ID	EMPTY_SEQERRORINPUT	INTERRUPTMISSINGNS_SEPNULL_TASK_IDPUSHRESUME	SCHEDULED
TAG_HIDDEN)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)	BaseStore)AllCommandLoopProtocolPregelExecutableTaskPregelScratchpad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valuero   c                 H    D ]  }| d   |j                   v s ||         y )N   )modes)rq   streamrn   s     r/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/pregel/loop.py__call__zDuplexStream.<locals>.__call__   s)     	FQx6<<'u	    )ri   rj   rt   )rn   rw   smodes   `   rv   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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d<   eeeeee
ef      e
gef      ed<   eed<   eeeej2                  j4                     eeee
ef      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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ee   d(ee*   d)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eee
   f   ded
eef   deee      ded+eeegd
f      d,ee	e
ee
   f      ded-d
f$ fd.Z,d/e
d0eee
ef      d-d
fd1Z-	 dJd2e&d3e$d4ee.   d-ee&   fd5Z/d6ee
ee
   f   d-efd7Z0d"e	e
e&f   d-d
fd8Z1d6ee
ee
   f   d-ee2e
      fd9Z3d:ed-d
fd;Z4d<e
d=ee   d-d
fd>Z5d?eee6      d@ee6   dAee7   d-ee   fdBZ8dCe
d=ee9e:e   f   dDe9jv                  dEe9jx                  d-d
f
dFZ=d%dGd/e
d0eee
ef      dHed-d
fdIZ> xZ?S )K
PregelLoopinputinput_modelcheckpointernodesspecsoutput_keysstream_keysskip_done_tasks	is_nestedNmanagerinterrupt_afterinterrupt_beforecheckpoint_every_stepdebugcheckpointer_get_next_versioncheckpointer_put_writes)checkpointer_put_writes_accepts_task_path _checkpointer_put_after_previous_migrate_checkpointsubmitchannelsmanaged
checkpoint.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outputFT)r   r   r   r   r   migrate_checkpointtrigger_to_nodesr   ru   configstorer   r   ro   c          
         t         |   dd|||       || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        t        | j                  j                  t        i       v | _        t"        |t           vxs t$        |t           v | _        || _        || _        || _        || _        | j0                  8t2        |t           v r)t5        | j0                  |t           t2                 | _        |t           j                  t6              }| j                  t           j                  t8              sot;        |t<              r_|j?                         x}rMtA        | j                  tB        tE        jF                  |t           tB           tI        |      f      i      | _        | j                   sC|t           j                  tB              r'tA        | j                  tB        dt"        d i      | _        tJ        | j                  t           v r| j                  t           j                  tB              | j                  t           tJ           v rUtA        | j                  t"        | j                  t           tJ           | j                  t           tB              i      | _&        n| j                  | _&        | j                  t           j                  tB              rDtO        tQ        tH        | j                  t           tB                 jS                  tD                    nd| _*        d | _+        y )Nr   )stepstopr   ru   r     ),super__init__r~   r   r   r   r   r   r   r   r   r   r1   r   getr'   r   r(   r+   r   r   r   r   r   ru   r0   r{   r/   r,   
isinstancerh   subgraph_counterrk   r*   r7   joinstrr)   r   tupler   splitr   r   )selfr~   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
scratchpadcnt	__class__s                       rv   r   zPregelLoop.__init__   s   * 	 	 	
 
&(

&&. 0+t{{tR/HH$F4L8 7&&,6 	 $6  0%:"
;;"'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" {{4 $$%=> $sDKK-.FGHNNvVW 	
 '+#rx   task_idwritesc           	         |syt        d |D              r+t        |D ci c]  }|d   |
 c}j                               }|D ]j  \  }t        v r?t	        fdt        | j                        D        d      x}	 |f| j                  |<   M| j                  j                  |f       l | 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 )z3Put 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     rv   	<genexpr>z(PregelLoop.put_writes.<locals>.<genexpr>*  s     6!qt~%6s   r   c              3   H   K   | ]  \  }}|d    k(  r|d   k(  r|  ywr   rs   Nr   )r   ir   cr   s      rv   r   z(PregelLoop.put_writes.<locals>.<genexpr>2  s2       $1 tw1Q419 s   "r   idr   )alllistvaluesr   next	enumerater   appendr   rk   r   r*   r   r'   r   r(   r   r   hasattrr   r   rM   path_output_writes)	r   r   r   r   vidxr   taskr   s	    `      @rv   
put_writeszPregelLoop.put_writes%  s   6v66F3q1Q473::<=F 	GDAq^#(1$2P2P(Q
  C 
 8?1o..s3..55w1oF#	G$ ''3'&&,dkk$.?.C.C0"/ -dood.C	F ==4)::>>'2DD0004M$))," 00	 4!0 "e 4s   F=r   	write_idxcallc                 2   | 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| j                  ||| j                   | j"                  | j$                  | j&                  |j(                  | j*                  d| j,                  | j.                  | j0                              x}r| j2                  r>t        | j                  | j2                  |g      r| j                  j	                  |       y| j5                  dt6        | j*                  |g       | j8                  rt;        | j*                  |g       || j<                  |j                  <   | j>                  r| jA                  |j                  |i       |S y)zEAccept a PUSH from a task, potentially returning a new task to start.Nr   -r   T)r   checkpoint_id_bytesrH   pending_writes	processesr   r   r   r   for_executionr   r   r   r   )!r   rL   r   r   r   binascii	unhexlifyreplacerH   r   r   rg   rK   r9   r   r   r   r   r   r   r   r   r   r   r   r   _emitrR   r   rT   r   r   _match_writes)r   r   r   r   r   null_versionpusheds          rv   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MK
rx   
input_keysc                &   | 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/                         D ]  \  }}| j1                  ||        | j                  t
        u rPt        | _         t3        t4        t6           | j8                        di t;        | j*                  | j"                         | j=                  dt>        | j@                  || j*                         | jB                  jE                          d| _#        | jI                  d	tK        tM        | j@                  | j                  j                         D cg c]  }||j                  f c}            d
       | jN                  rJtQ        | j(                  | jN                  | j                  j                               rd| _         t               | jR                  tT           jW                  tX        d       ny| j                  | jZ                  kD  rd| _         yt]        | j(                  | jB                  | j^                  | j*                  | j`                  | jR                  | j                  d| jb                  | jd                  | jf                  | jh                  |      | _
        g | _        | jj                  | j=                  dtl        | j                  dz
  | jn                  | j*                  | j"                  | jp                  | j(                  | j                  j                         | jB                  | jr                  | j@                         | j                  sd| _         y| jR                  tT           ju                  tv              r<| j                  t        u sJ ty        t{        | jR                  tv        di      dd      | jF                  r'| jB                  r| j}                  | j                         t        d | j                  j                         D              r| j                  |      S | j                  rJtQ        | 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Nr   r   r   s     rv   r   z"PregelLoop.tick.<locals>.<genexpr>  s     ==   r   Tloopsourcer   r   Fr   )r   r   r   r   r   updated_channelsr   rs   r   r   r~   c              3   4   K   | ]  }|j                     y wr   r   r   s     rv   r   z"PregelLoop.tick.<locals>.<genexpr>(  s     ;tt{{;r   cachedr   )Fr   RuntimeErrorr~   
INPUT_DONEINPUT_RESUMINGINPUT_SHOULD_VALIDATE_firstr   r@   r   r   r   r   r   rU   r   r   r   r   rG   r   r   r   items
_update_mvr   r   r   r   r]   r   r\   r   r   clearr   _put_checkpointr^   r[   r   rL   r   r'   popr.   r   rJ   r   r   r   r   r   r   r   rP   r   r   r   r   r,   r?   rk   r   tickr   rR   rT   r   r   r   )
r   r   r   tr   r   	mv_writeskeyr   r   s
             rv   r   zPregelLoop.tick  sB    ;;)#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%%' 	GD{{##DGGT[[#F	G c HX Is   3ZZ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   r3   r5   r:   r   r;   maxr   r   dataclassesr   r   r   r   )r   r   tidkr   r   s         rv   r   zPregelLoop._match_writesB  s    77 	/ICAUIv..yy~%t%	>C8<<YKRRT $  +6*=*=dd*S

3KK&&1v.	/rx   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                  | j                  st        d      t        t               }t#        | j                  | j$                        D ]  \  }}}||   j'                  ||f        |st)        d      |j+                         D ]  \  }}	| j-                  ||	        | j$                  D 
cg c]  }
|
d   t.        k(  s|
dd   c}
x}rjt1        | j                  | j2                  t5        dt6        |g       g| j8                        \  }}|j+                         D ]  \  }}| j;                  ||        |r| j                  d	   j=                  t>        i        | j2                  D ]?  }|| j                  d   v s| j                  d   |   }|| j                  d	   t>           |<   A | jA                  d
tB        | jD                  d| j2                         tF        | _        ntI        tK        || j                              x}r| j                   t           j                  tL              r2tO        tQ        | j                   tL        di      | j                  d      tS        | j                  | j$                  | jT                  | j2                  | jV                  | j                   | jX                  dd d d       }t1        | j                  | j2                  g |j[                         t5        dt6        |g       | j8                        \  }}|rJ d       | j]                  dt_        |      d       | j`                  Ft        | j                  | j`                        s&t        | jb                  td              stf        | _        n-th        | _        n!t
        |vrt)        d|       th        | _        | j                  s!tQ        | j                   t
        |i      | _         |S c c}
w )Nchannel_versionsmetadatarun_idz3Cannot use Command(resume=...) without checkpointerzReceived empty Command inputr   rs   r   r   r   TFr   )r   r   r   r   z*Can't write to SharedValues in graph inputr~   r   zReceived no input for )5r   r   r'   boolr   r.   r~   r   re   r   r   r6   resumer   r   r   r   rY   r   r   r>   r   r   r8   rG   r   rF   r4   r   r   
setdefaultr5   r   r\   r   r   r   rZ   r,   r?   rk   rJ   r   r   r   r   r   dictr   r   r   r   r   )r   r   configurableis_resumingr   r   r  r   r   wsr   null_writesr   _r   r   r  versioninput_writesdiscard_taskss                       rv   r   zPregelLoop._firstP  sp    {{tR04??+=>? 
D#

d" djj'2 & G
B7;;HE//33HgFG	E
 04 djj'*zz  ,T5F5F"I  ?J$>OF(T5S5ST +	Qs""Aq6*+%&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  e
s   ;S+S+r  c                 :   | j                   |d<   | j                  t           j                  t        i       |d<   | j
                  rHt        || j                  t        | j                  t              r| j                  gn| j                         | j                  | j                  d   j                         D ]   \  }}|t        v r|j                  ||       " t        | j                   | j                  | j                         | _        || _        t$        | 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-                         }t/        | j0                  |      }|| _        | j3                  | j                  t5        | dd       | j&                  t7        | j                         | j"                  |      | _        i | j&                  t        i | j&                  t           t$        | j                   d   ii| _        | xj                   dz  c_         y )	Nr   parentsr  r   r  _put_checkpoint_futr   rs   )r   r   r'   r   r)   r   rS   r   r   r   r   r   r   r   r  rN   r   r   r(   r   r   r*   copyrb   r   r   getattrr&   r  )r   r  r  r   r  new_versionss         rv   r   zPregelLoop._put_checkpoint  si   99"kk$/334MrR::! "$"2"2C8 %%&)) 00<J/557 *1..##Aq)* 0		DO (0D$ ,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" 			Q	rx   r   r   c                     t         r   )NotImplementedError)r   r   r   s      rv   r   zPregelLoop._update_mv  s    !!rx   exc_type	exc_value	tracebackc                    t        t              xr | j                   }|rst        | d      r| j                  rt        d | j                  j                         D              rt        | 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       t'        | j                  | j                         | _        y|&t'        | j                  | j                         | _        y y c c}
}	w )Nr   c              3   4   K   | ]  }|j                     y wr   r   r   s     rv   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>  s     DDr   r   r   updatesc                  ^    t        t        t        t               j                  d   ig      S )Nr   )iterr5   r   r@   args)r  s   rv   <lambda>z0PregelLoop._suppress_interrupt.<locals>.<lambda>4  s)    D#T.)%D%I%I!%LMN rx   T)r   r@   r   r   r   anyr   r   rG   r   r   r   r   r   r   r\   r   r   r&  r]   r   )r   r  r  r   suppressr   r  r   r   r   r   s     `        rv   _suppress_interruptzPregelLoop._suppress_interrupt  sp    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   G rz   r&  kwargsc                     | j                   y || j                   j                  vry  ||i |D ]   }| j                  | j                  ||f       " y r   )ru   rt   r   )r   rz   r   r&  r+  r   s         rv   r   zPregelLoop._emit@  sX     ;;t{{((((( 	7AKK++T156	7rx   r   r   c                   | j                   j                  |      x}r|j                  't        |j                  j                  dt              v ry d   d   t
        k(  r| 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   r#  c                  H    t        t        t        d  D              ig      S )Nc              3   ~   K   | ]5  }|d    t         k(  r't        |d   t              r|d   n|d   fD ]  }|  7 ywr   )r5   r   r   )r   r   r   s      rv   r   z>PregelLoop._output_writes.<locals>.<lambda>.<locals>.<genexpr>\  sV      1"()'(ty'80:1Q40J!QRSTQUPW1" )* %&1"$%1"s   ;=)r%  r5   r   r   s   rv   r'  z+PregelLoop._output_writes.<locals>.<lambda>Y  s/    D !*5 1"-31" ,"	 rx   r   )r   r   r   r<   r2   r5   r   r3   r[   r   rQ   r   r   )r   r   r   r   r   s     `  rv   r   zPregelLoop._output_writesN  s     ::>>'**4*{{&:	: , ay|y(

" 1&

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

*II6N$$ ? +rx   r   )@__name__
__module____qualname__r   r	   __annotations__r   r   r    r   r   ra   r   r   rB   r   r
  r   r   rd   rE   r   r   r   
concurrentfuturesFuturer!   r"   rX   rA   r#   r   r%   r  floatintr   rg   r   r   r2   rj   rc   r   r   rD   r   r   r   setr   r   r   BaseExceptionr   r*  rm   r   r&  r+  r   r   __classcell__r   s   @rv   r}   r}      s   C=$y/**.//3
?##3k+;;<<==sHSM)**sHSM)**O4.0@@AA3-..C#.//K#11%.(5c?";SA3FG  043&.++223sCx) 		
'  "(J<+=">??Nc;&''  c?"%%++#L11"&sE#uc/,B'B"CC$^44P  ))**+,,/3FE$S#X+,3  6?6?HL15EIBF&*'\+}\+ (	\+
 \+ 	"\+ 23\+ sJ'\+ sE+/?"?@@A\+ 3-.\+ 3-.\+ sHSM12\+  Xc] 23\+ t24DDE\+ d9o.\+  !\+" %XzlD.@%AB#\+$ #73+=#>?%\+&  $'\+( 
)\+|91# 91xc3h/H 91T 91x RV1(1581@H1	&	'1fk #x},-k 
	k^/730D+D#E /$ /v E#x}*<$= v (3s8BT v pE(: Et EN"c "8C= "T ",I4./,I M*,I M*	,I
 
$,I\77 HSM)*7 vv	7
 ((7 
7 RW))$,U38_$=)JN)	)rx   r}   c            %           e Zd Zdeeeeddddd	dee   dee   dedee   dee	   d	e
eef   d
e
eeeef   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
eee   f      ddf" fdZdeej6                  j8                     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!fdZ"deee#      d ee#   d!ee$   dee   fd"Z% xZ&S )#SyncPregelLoopNF)	r   r   r   r   r   r   r   r   r   r~   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   c                V   t         |   |||||||||||	|
||||       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y N)r   ru   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   rI   r   )r   r~   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                    rv   r   zSyncPregelLoop.__init__{  s    ( 	#%##+-1-! 	 	
$ [
1=1N1ND.+7+B+BD(,112==AA+N :
 2;D.48D1+/D(=BD:rx   prevr   r  r  c                     	 ||j                          t        t        | j                        j	                  ||||       y # t        t        | j                        j	                  ||||       w xY wr   )resultr   r    r   putr   rF  r   r   r  r  s         rv   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   rC   updater   r   r   managed_values       rv   r   zSyncPregelLoop._update_mv  s>    ((- {{4 4mDKKVTTrx   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                  | _
        |j$                  | _        |j(                  .|j(                  D cg c]  \  }}}t+        |      ||f c}}}ng | _        | j.                  j1                  t3        | j                               | _        | j.                  j1                  t7        | j8                  | j                  |             \  | _        | _        | j.                  j?                  | j@                         d| _!        | j&                  d   dz   | _"        | jD                  | j                   d   z   dz   | _#        | j                  d	   jI                         | _%        | S c c}}}w 
Nz4Cannot ensure latest checkpoint without checkpointerr   r   r   r   rs   recursion_limitr  )&r   r   r'   r-   r   r(   r   r   	get_tuplerk   r   r=   r$   rO   r   r*   parent_configr   r  r   r   r   r   rC  enter_contextrW   r   r`   r   r   r   pushr*  r   r   r   r  r   r   savedr  r  r   s        rv   	__enter__zSyncPregelLoop.__enter__  s   ;;??4$(($
$$T*../GH  ("J  %%//"**-Et,LE ##D)))$/0HIJ *)%%//0F0FGEE=#-/&"tRE %%1$$U%5%56"
kk"
ll"
 ("++//$+ ,,""4,"
 ',&9&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   L?r  r  r   c                 <    | j                   j                  |||      S r   )rC  __exit__)r   r  r  r   s       rv   r[  zSyncPregelLoop.__exit__  s     zz""8Y	BBrx   )'r1  r2  r3  r2   r   r	   rj   r   rc   r    r   r   ra   r   r   rB   r   r   rd   r   r   r   r
  r   r"   r   r5  r6  r7  r#   r!   r   r   r   rY  r;  r   r[  r<  r=  s   @rv   r?  r?  z  sN    IM5>6?1:1:15EIBF%2C}2C (	2C
 2C 	"2C 232C sJ'2C sE+/?"?@@A2C t24DDE2C sHSM122C  Xc] 232C 3-.2C 3-.2C d9o.2C  !2C" %XzlD.@%AB#2C$ #73+=#>?%2C& 
'2Chz))001  	
 % & 
 Uc U8C= UT U94 9vC4./C M*C M*	C
 
$Crx   r?  c            %           e Zd Zeedeeddddd	dee   dee   d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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
eee   f      ddf" fdZdeej6                     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 fdZ!deee"      d ee"   d!ee#   dee   fd"Z$ xZ%S )#AsyncPregelLoopNF)	r   r   r   r   r   r   r   r   r   r~   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   c                V   t         |   ||||||||||||	|
|||       t               | _        |rX|j                  | _        |j                  | _        t        |j                        j                  j                  d      d u| _        y t        | _        d | _        d | _        d| _        y rA  )r   r   r   rC  rD  r   aput_writesr   r   rE  r   r   rI   r   )r   r~   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                    rv   r   zAsyncPregelLoop.__init__  s    ( 	#%##+-1-! 	 	
$ $%
1=1N1ND.+7+C+CD(,223>>BB;O :
 2;D.48D1+/D(=BD:rx   rF  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   aputrJ  s         rv   r   z0AsyncPregelLoop._checkpointer_put_after_previousB  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   rC   aupdaterM  s       rv   r   zAsyncPregelLoop._update_mvR  s>    ((- {{4 4mDLLfUUrx   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                  | _
        |j$                  | _        |j(                  .|j(                  D cg c]  \  }}}t+        |      ||f c}}}ng | _        | j.                  j1                  t3        | j                                d {   | _        | j.                  j1                  t7        | j8                  | j                  |              d {   \  | _        | _        | j.                  j?                  | j@                         d| _!        | j&                  d   dz   | _"        | jD                  | j                   d   z   dz   | _#        | j                  d	   jI                         | _%        | S 7 7 Nc c}}}w 7 7 wrP  )&r   r   r'   r-   r   r(   r   r   
aget_tuplerk   r   r=   r$   rO   r   r*   rT  r   r  r   r   r   r   rC  enter_async_contextrV   r   r_   r   r   r   rV  r*  r   r   r   r  r   rW  s        rv   
__aenter__zAsyncPregelLoop.__aenter__[  s    ;;??4$(($
$$T*../GH  ("J  ++66"**-Et,L E ##D)))$/0HIJ *)++66t7M7MNNEE=#-/&"tRE %%1$$U%5%56"
kk"
ll"
 ("++//$+ ,,""4,"
 ',&9&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)i O, E

'
sX   B)M2+M!,A*M2M$DM2'M' =M2=M.>AM2M0BM2$M2'M20M2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_taskrC  	__aexit__CancelledErrorr&  )r   r  r  r   	exit_taskes         rv   rk  zAsyncPregelLoop.__aexit__  sl      ''JJ  9i@
		"?"?%% 	 *qvv)y)AF		s5   1A2A  >A  A2A   A/A**A//A2)&r1  r2  r3  r2   r   r	   rj   r   rc   r    r   r   ra   r   r   rB   rd   r   r   r   r   r   r
  r   r"   r   ri  Taskr#   r!   r   r   r   rg  r;  r   rk  r<  r=  s   @rv   r]  r]    s?    6?6?HL1:1:15EIBF%2C}2C (	2C
 2C 	"2C 232C sJ'2C sE+/?"?@@A2C sHSM122C  Xc] 232C t24DDE2C 3-.2C 3-.2C d9o.2C  !2C" %XzlD.@%AB#2C$ #73+=#>?%2C& 
'2Chw||$  	
 % & 
 Vc V8C= VT V<$ <|4./ M* M*	
 
$rx   r]  )ri  r   concurrent.futuresr5  r  collectionsr   r   
contextlibr   r   inspectr   typesr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   langchain_core.callbacksr   r   langchain_core.runnablesr   pydanticr   typing_extensionsr   r   langgraph.channels.baser   langgraph.checkpoint.baser   r   r    r!   r"   r#   r$   r%   r&   langgraph.constantsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   langgraph.errorsr=   r>   r?   r@   langgraph.managed.baserA   rB   rC   langgraph.pregel.algorD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   langgraph.pregel.checkpointrN   rO   langgraph.pregel.debugrP   rQ   rR   rS   rT   rU   langgraph.pregel.executorrV   rW   rX   langgraph.pregel.iorY   rZ   r[   r\   r]   r^   langgraph.pregel.managerr_   r`   langgraph.pregel.readra   langgraph.pregel.utilsrb   langgraph.store.baserc   langgraph.typesrd   re   rf   rg   rh   ri   rj   langgraph.utils.configrk   rl   rm   objectr   r   r   SPECIAL_CHANNELSr{   r}   r?  r]  r   rx   rv   <module>r     sX       * 0     " M 3  - /
 
 
     0  
   L  
  K , ; *   6CLcNX
 9i0 Q> Qn Qf fRPCZ PCf\j"5 \rx   