
    *j                    `   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          ZdS )/    )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Pstreamsr`   returnc                 D     d fd}t          |d  D                       S )Nvaluer_   rl   Nonec                F    D ]}| d         |j         v r ||            d S )N   modes)rn   streamrk   s     `/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/langgraph/pregel/_loop.py__call__zDuplexStream.<locals>.__call__   s;     	 	FQx6<''u	 	    c                &    h | ]}|j         D ]}|S  rr   ).0smodes      ru   	<setcomp>zDuplexStream.<locals>.<setcomp>   s'    $O$O$Oaqw$O$OtT$O$O$O$Orw   )rn   r_   rl   ro   )r`   )rk   rv   s   ` ru   DuplexStreamr~      sB         
 ($O$O7$O$O$OPPPrw   c                  D   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ddUZddYZddZZ		 dddaZ
ddbZddcZddeZddfZddhZddjZddkZddmZdduZdd~ZddddZdHS )
PregelLoopr   configBaseStore | NonestoreStreamProtocol | Nonert   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_channelsry   )r   r   r   migrate_checkpointr   r   BaseCache | Nonetrigger_to_nodesMapping[str, Sequence[str]]r   rl   ro   c          
        || _         || _        || _        d| _        d| _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        || _        || _        t           | j                            t$          i           v | _        t(          |t$                   v| _        || _        || _        || _        || _        || _        | j         Dt6          |t$                   v r0t9          | j         |t$                   t6                             | _         |t$                                       t:                    }t=          |t>                    rn|                                 x}rXtC          | j        tD          tG          j$        |t$                   tD                   tK          |          f          i          | _        | j        sM|t$                                       tD                    r(tC          | j        tD          dt(          d i          | _        tL          | j        t$                   v r| j        t$                                       tD                    | j        t$                   tL                   v r^tC          | j        t(          | j        t$                   tL                   | j        t$                   tD                            i          | _'        n| j        | _'        | j'        t$                                       tP                    x}rCt=          |tJ                    s.tC          | j'        tP          tK          |          i          | _'        | j        t$                                       tD                    rUtS          tU          tJ          | j        t$                   tD                             +                    tF                              nd| _,        d | _-        d S )Nr    ry   ).rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   getr%   r   r&   r   r   r   r   r   r   r,   r~   r+   
isinstancer8   subgraph_counterr$   r(   r3   joinr   r'   r   r.   tupler   splitr   r   )selfr   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
scratchpadcnt	thread_ids                          ru   __init__zPregelLoop.__init__   s>   . 
		
(


$&&. 0+t{tR/H/HH7vd|K#5  0(($;"'8F4L'H'H&t{F4LAR4STTDK.4Tl.>.>?T.U.U
j"233 	 !11333s 0K0&+ &t-E F #C3 3
 
 ~ 	&,"2"23K"L"L 	,)2/GN DK
 &T):::D!%%&>??{4 !:;< < &8,dk$.?1/k$'(@A/C& &D"" &*[D".t4889MNNN9 	i-- );*)3y>>:* *& {4 $$%=>>E$sDK-.FGHHNNvVVWWW 	
 '+###rw   task_idwritesWritesTc           	     R    |sdS t          d |D                       r+t          d |D                                                       }t          k    r<fd j        D              _        fd j        D             t          |          z   }nfd j        D              _        |}t          d  j                                        D                       r fd|D             } j                            fd	|D                         j        d
k    r j	        t           j        t           j        t                                       t          d          t            j        d         i          } j        rbt'           d          r j                                      }nd}                      j	        |||rt-          |j                  nd           n                      j	        ||           t'           d          r                     |           dS dS )3Put writes for a task, to be read by the next tick.Nc              3  4   K   | ]}|d          t           v V  dS )r   Nr   rz   ws     ru   	<genexpr>z(PregelLoop.put_writes.<locals>.<genexpr>5  s+      66!qt~%666666rw   c                     i | ]}|d          |S r   ry   r   s     ru   
<dictcomp>z)PregelLoop.put_writes.<locals>.<dictcomp>6  s    333q1Q4333rw   c                J    g | ]}|d          k    s|d         t           v| S )r   rq   r   rz   r   r   s     ru   
<listcomp>z)PregelLoop.put_writes.<locals>.<listcomp>9  s>     . . .Q47??ad.&@&@ &@&@&@rw   c                <    g | ]}|d          k    |dd         S r   rq   Nry   r   s     ru   r   z)PregelLoop.put_writes.<locals>.<listcomp>>  s1     ' ' '1!""rw   c                ,    g | ]}|d          k    |S r   ry   r   s     ru   r   z)PregelLoop.put_writes.<locals>.<listcomp>C  s)     . . .QqTW_____rw   c              3  @   K   | ]}t          |t                    V  d S Nr   r<   rz   channels     ru   r   z(PregelLoop.put_writes.<locals>.<genexpr>I  s=       
 
4;Jw//
 
 
 
 
 
rw   c                    g | ]m\  }}t          j                            |          t                    2|t          k    r,t          |t
                    r|t          |j                  fn||fnS ry   )r   r   r   r<   r7   rg   rJ   r   )rz   cvr   s      ru   r   z)PregelLoop.put_writes.<locals>.<listcomp>M  s     
 
 
 Aq!$*.."3"3^DD
 EzzjD&9&9z 9!T]KKLLQ
 
 
rw   c              3  (   K   | ]\  }}||fV  d S r   ry   )rz   r   r   r   s      ru   r   z(PregelLoop.put_writes.<locals>.<genexpr>Z  s-      -Q-Q$!Qw1o-Q-Q-Q-Q-Q-Qrw   exitr   idr   )alllistvaluesr4   r   anyr   extendr   r   r$   r   r(   r   r%   r   r&   r   r   hasattrr   r   rL   pathoutput_writes)r   r   r   writes_to_saver   tasks   ``    ru   
put_writeszPregelLoop.put_writes0  s    	F66v66666 	>33F333::<<==Fl"". . . .7. . .D*
' ' ' '#=' ' 'V'NN
. . . .9. . .D* $N  
 
?C}?S?S?U?U
 
 
 
 
 	
 
 
 
 +
 
 
N 	&---Q-Q-Q-Q&-Q-Q-QQQQ?f$$)E)Q'&,dk$.?.C.C0"/ / -dod.C	 F = 4))  :>>'22DDD0"04<M$),,,"    0"	   4!! 	0w/////	0 	0rw   c           
        | j         d S | j        sd S t          | j        t          | j        t                                       t          d          t          | j	        d         i          }t          t                    }| j        D ]#\  }}}||                             ||f           $|                                D ]\  }}| j        r_t          | d          rO| j                            |          }|                     | j         ||||rt%          |j                  nd           k|                     | j         |||           d S )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   rn   r   r   s           ru   _put_pending_writeszPregelLoop._put_pending_writes|  s|   '/F- 	F#"($+d*;*?*?,b+ + )$/$*?	
 
 d##'+'E 	6 	6#GWeG##We$45555&}} 	 	OGV= 'gC C  z~~g..004<M$),,,"    0	   	 	rw   r   re   	write_idxcallCall | NonePregelExecutableTask | Nonec           
        t          j        | j        d                             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}rQ|                     dt0          |g           || j        |j
        <   | j        r|                     |j
        |i           |S dS )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   r   r   r   null_versionpusheds          ru   accept_pushzPregelLoop.accept_push  s    '01F1N1NsTV1W1WXX.t?? 4'ty)TWd;    ?? %8$7	
 )5  $== **   {{ YY YY #d jj "..  !" "..#$ "..%
 
 
6 	0 JJw&:::$*DJvy!# 8""FIv#6777M?	 	rw   c                <   | j         | j        k    r	d| _        dS t          | j        | j        | j        | j        | j        | j	        | j         | j        d| j
        | j        | j        | j        | j        | j        | j                  | _        | j        |                     dt(          i | j        t,          i | j        t,                   t.          | j        d         ii| j        | j        | j        | j                                        | j        | j        | j        
  
         | j        s	d| _        dS | j        r!| j        r|                     | j                   | j        rGtA          | j        | j        | j                                                  rd	| _        tC                      |                     d
tD          | j                                                   | j                                        D ]+}|j#        r"| $                    |j%        |j#        d           ,dS )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   N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     ru   tickzPregelLoop.tick  s:    9ty  (DK5 (O*JMLKIIL**!2!2**!
 
 

( 0<JJ$, 060$/$2G    (
!!##.+ !  ( z 	 DK5  	+D$B 	+tz***   	#%5OT2DJ4E4E4G4G&
 &
 	# -DK """ 	

7OTZ->->-@-@AAA J%%'' 	F 	FD{ F""47DK"EEEtrw   c                   d | j                                         D             }t          | j        | j        | j                                         | j        | j                  | _        | j                            t          | j
        t                    r| j
        fn| j
                  s(|                     dt          | j
        || j                   | j                                         d| _        |                     ddi           | j        rGt'          | j        | j        | j                                                   rd| _        t+                      | j        t.                                       t2          d            d S )Nc                &    g | ]}|j         D ]}|S ry   r   rz   tr   s      ru   r   z)PregelLoop.after_tick.<locals>.<listcomp>  s'    CCC!(CCQ!CCCCrw   r   Tsourceloopr   )r   r   rE   r   r   r   r   r   
isdisjointr   r   r   r  rW   r   clearr   _put_checkpointr   rK   r   r?   r   r%   popr*   )r   r   s     ru   
after_tickzPregelLoop.after_tick  sp   CCTZ..00CCC ,OMJ.!!
 !
 $//$*C00"T!
 
 	
 JJ+T-=vt}   	&,,...#h/000 	#$4OT14:3D3D3F3F%
 %
 	# ,DK """D1488888rw   Sequence[PregelExecutableTask]c                    t           r   NotImplementedErrorr   s    ru   match_cached_writeszPregelLoop.match_cached_writes=  s    !!rw   c                   K   t           r   r  r!  s    ru   amatch_cached_writeszPregelLoop.amatch_cached_writes@  s      !!rw   "Mapping[str, PregelExecutableTask]c                    | j         D ]P\  }}}|t          t          t          fv r|                    |          x}r|j                            ||f           Qd S r   )r   r/   r1   r6   r   r   r   )r   r   tidkr   r   s         ru   r  zPregelLoop._match_writesE  sk    7 	+ 	+ICAUIv...yy~~%t +""Aq6***		+ 	+rw   set[str]c                   i t                      }| j        D ]B\  }}}|t          k    r|d         j        |<   "|t          k    r|                    |           Cfd|D             fd                                D             }|S )zUReturn the set of interrupt ids that are pending without corresponding resume values.r   c                (    h | ]}|v |         S ry   ry   )rz   r   pending_interruptss     ru   r}   z1PregelLoop._pending_interrupts.<locals>.<setcomp>[  s4     !
 !
 !
,,, w',,,rw   c                    h | ]}|v|	S ry   ry   )rz   interrupt_idresumed_interrupt_idss     ru   r}   z1PregelLoop._pending_interrupts.<locals>.<setcomp>b  s/     (
 (
 (
#888 888rw   )setr   r1   r   r6   addr   )r   pending_resumesr   
write_typern   hanging_interruptsr,  r/  s         @@ru   _pending_interruptszPregelLoop._pending_interruptsL  s     .0 %(EE*.*H 	- 	-&GZY&&.3Ahk"7++v%%##G,,,!
 !
 !
 !
*!
 !
 !
(
 (
 (
 (
 2 9 9 ; ;(
 (
 (
 "!rw   c                  | j                             t          i           }t          | j        d                   ot          |                    t
          | j        d u pqt          | j        t                    pW| j	         oO| j                             di                               d          | j
                            dt                    k                        }t          | j        t                    r@| j        j        x}| j        st          d          t          |t                    ot!          d |D                       x}r|| j         t                   t"          <   n4t%          |                                           dk    rt          d          t)          t*                    }t-          | j                  D ]0\  }}	}
|	t.          k    r|s||                             |	|
f           1|s|st3          d	          |                                D ]\  }}|                     ||           d
 | j        D             x}rTt;          | j        | j        t?          dt@          |g           g| j!        | j"                  }||#                    |           |r| j        d         $                    tJ          i            | j        D ]?}|| j        d         v r.| j        d         |         }|| j        d         tJ                   |<   @| &                    dtN          | j(        d| j                   ntS          tU          || j                            x}rtW          | j        | j        | j,        | j        | j-        | j         | j.        | j/        dd d d |          }t;          | j        | j        g |0                                t?          dt@          |g           | j!        | j"                  }|| _1        | 2                    ddi           nt
          |vrt3          d|           | j	        s!tg          | j         t
          |i          | _         d| _4        |S )Nchannel_versionsmetadatarun_idz3Cannot use Command(resume=...) without checkpointerc              3  4   K   | ]}t          |          V  d S r   )r[   )rz   r(  s     ru   r   z$PregelLoop._first.<locals>.<genexpr>  s+      EE1!44EEEEEErw   rq   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 inputc                D    g | ]}|d          t           k    |dd         S r   )r4   r   s     ru   r   z%PregelLoop._first.<locals>.<listcomp>  s5     
 
 
QqT\=Q=QAabbE=Q=Q=Qrw   ry   versions_seenr   T)r  r   r   r   r   r  r   zReceived no input for pending)5r   r   r%   r   r   r*   r   r   rc   r   r   r:   resumer   RuntimeErrordictr   r)   lenr5  r   r   rT   r6   r   r>   r   r   r   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   wsnull_writesnull_updated_channelsr(  versioninput_writesdiscard_taskss                     ru   _firstzPregelLoop._firstj  s    {tR004?+=>?? 
D#
d" dj'22 & G
B77;;HEE/33HgFFG	 	E
 E
 dj'** 	)*++8( &M  
 vt,, FEEfEEEEE= 
 @FDK%&;<<4335566::*Z  
 ?J$>O>OF(TZ888 / /	QV3K&&1v... F- F%&DEEE!<<>> ) )RR((((
 
9
 
 
 
; 	? %1!"e["==>2%% %!  + ''(=>>> +	IOO,77	2FFF] M M(:;;;"o.@A!DGELDOO4Y?BJJ+T-=tT]    #9Z#D#DEEE\  	I..
		"!!1  M   ,"))++$RbAA 2%	  	  %5D!  (G!45555 44!"G:"G"GHHH~ 	,1;? DK  rw   r8  c                    | j         u }|r j        d          j        k    rd S |s? j        |d<    j        t
                                       t          i           |d<   | _          j        d uo|p
 j	        dk    }t           j        |r j        nd  j        |r j        d         nd  j                   _        t           j        d         v rit          d  j                                        D                       r9 fd j        d         t                   D             }| j        d         t          <   |rn j        ft            j        t
                   v r$ j        t
                   t                    r j        nd  _        i  j        t
          i  j        t
                   t&           j        t
                                       t&          d	          ii _         j        d
                                         }t+           j        |          }| _                              j        t1           dd            j        t3           j                   j         |           _        i  j        t
          i  j        t
                   t            j        d         ii _        |s xj        dz  c_        d S d S )Nr   r   parentsr   )r   r   channel_valuesc              3  @   K   | ]}t          |t                    V  d S r   r   r   s     ru   r   z-PregelLoop._put_checkpoint.<locals>.<genexpr>  s=       >
 >
4;Jw//>
 >
 >
 >
 >
 >
rw   c                h    g | ].}t          |t                    rt          |j                  n|/S ry   )r   rg   rJ   r   )rz   rn   r   s     ru   r   z.PregelLoop._put_checkpoint.<locals>.<listcomp>  sO         eT**1%GGG  rw   r   r7  _put_checkpoint_futrq   )r   r   r   r   r   r%   r   r'   r   r   rO   r   r   r7   r   r   r&   r   r   r(   copyrZ   r   r   getattrrN   rT  )r   r8  exitingdo_checkpointsanitized_tasksr7  new_versionss   `      ru   r  zPregelLoop._put_checkpoint  s-   d66 	tt,0HHHF 	0#yHV"&+d"3"7"78QSU"V"VHY'/D$=TI 
0t&0 	 ,O*4DMMI(/9tt$$T!2
 
 
 DO$4555# >
 >
?C}?S?S?U?U>
 >
 >
 ;
 ;
5    "_-=>uE	  O 8GDO,-e4  (	TBN ,t/Ed/KKK*401IJ L && 	 '&(& ,T2,dk$.?.C.C0"/ / & &D"  $/ABGGII313C L 1AD-
 (,{{53T::&00(( (D$&(& ,T2,dod.C & &D"  	IINIIII	 	rw   exc_typetype[BaseException] | None	exc_valueBaseException | None	tracebackTracebackType | Nonebool | Nonec                   | j         dk    rU| j        r t          d | j        D                       r.|                     | j                   |                                  t          t                    o| j         }|rZt          | d          r| j
        rt          d | j                                        D                       rt          | j        | j        | j                                        | j        | j                  }|                    t          | j        t*                    r| j        fn| j                  sI|                     dt.          | j        d | j                                        D             | j                   -j        rj        d         s|                     dfd	           t3          | j        | j                  | _        d
S |!t3          | j        | j                  | _        d S d S )Nr   c              3  (   K   | ]}t           |vV  d S r   )r2   )rz   parts     ru   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr><  s'      EE$6%EEEEEErw   r   c              3  $   K   | ]}|j         V  d S r   r  )rz   r   s     ru   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>G  s$      DDDDDDDDrw   r   c                &    g | ]}|j         D ]}|S ry   r  r  s      ru   r   z2PregelLoop._suppress_interrupt.<locals>.<listcomp>Y  s'    JJJqJJAJJJJrw   r   updatesc                 n    t          t          t          t                     j        d         ig          S )Nr   )iterr1   r   r?   args)r]  s   ru   <lambda>z0PregelLoop._suppress_interrupt.<locals>.<lambda>`  s.    D#T.)%D%D%I!%LMN  rw   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   rj  rX   r   )r   r[  r]  r_  suppressr   s     `   ru   _suppress_interruptzPregelLoop._suppress_interrupt/  s0    ?f$$ % $EE$2DEEEEE %   !9:::$$&&&i88O=O (	I g&&2 DD
0A0A0C0CDDDDD
 $0OMJ%%''6)$ $  (22!$"2C88*T%'')  
 JJ )(JJDJ$5$5$7$7JJJ   $in$INSTDU$

      (t7GHHDK4't7GHHDKKK rw   r|   rh   r   Callable[P, Iterator[Any]]rj  P.argskwargsP.kwargsc           
        | j         d S |dv od| j         j        v }|| j         j        vr|sd S  ||i |D ]}|| j         j        v r|                      | j        ||f           |rs|                      | j        d|dk    r
| j        dz
  n| j        t	          j        t          j                                                  |dk    rdnd|v rdnd|d	f           d S )
N)r  r   debugr  rq   r   resulttask_resultr   )r   	timestamptypepayload)	rt   rs   r   r   r   nowr   utc	isoformat)r   r|   r   rj  rp  debug_remapr   s          ru   r  zPregelLoop._emitl  s4    ;F66W7dkFW;Wt{((((F((( 	 	At{(((T/q9::: *  $}44 %)IMM!%)1hl)C)C)M)M)O)O#}44 %1L  (1}} "/!''(   	 	rw   Fr  r  c                  | j                             |          x}r|j        )t          |j                            dt                    v rd S |d         d         t
          k    r|j        d         t          k    r|j        d         du rd S t
          t          d |D                       ig| j	        r| j	        j
        ng }d|v r|                     dfd           d|v r}t          | j        | j                  t          t                     r5d         t
                   t
          <   |                     dfd	           nW|                     dfd
           n=|d         d         t"          k    r&|                     dt$          | j        ||fg|           |s(|                     dt&          ||f| j                   d S d S d S )Ntagsr   Tc              3     K   | ]F}|d          t           k    t          |d         t                    r|d         n|d         fD ]}|V  GdS r   )r1   r   r	   )rz   r   r   s      ru   r   z+PregelLoop.output_writes.<locals>.<genexpr>  sp       ) ) ! ty00.81x.H.H&UaddqQRtg  10 ! 00000) )rw   rg  c                 "    t                     S r   ri  
interruptss   ru   rk  z*PregelLoop.output_writes.<locals>.<lambda>  s    $z2B2B rw   r   c                 $    t           g          S r   r  )current_valuess   ru   rk  z*PregelLoop.output_writes.<locals>.<lambda>  s    T>:J5K5K rw   c                 "    t                     S r   r  r  s   ru   rk  z*PregelLoop.output_writes.<locals>.<lambda>  s    T*5E5E rw   r   )r   r   r   r=   r9   r1   r   r5   r   rt   rs   r  rX   r   r   r   rA  r/   rV   r]   r   )r   r   r   r  r   stream_modesr  r  s         @@ru   r   zPregelLoop.output_writes  s$    :>>'***4 /	{&:	: : , , ay|y(( 9Q<4''DIbMT,A,AF "5 ) )%+) ) ) $ $	
 59KGt{00R,,JJy*B*B*B*BCCC|++%24=$BR%S%SN!.$77 G4>qM)4Ly1

8-K-K-K-KLLLL 

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

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

*6N$	    U/	 /	R rw   )(r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   rl   ro   r   r   r   r   rl   ro   )rl   ro   r   r   re   r   r   r   r   rl   r   )rl   r   rl   r  )r   r%  rl   ro   )rl   r)  )r   r   r   r   rl   r   )r8  r   rl   ro   r[  r\  r]  r^  r_  r`  rl   ra  )
r|   rh   r   rn  rj  ro  rp  rq  rl   ro   )r   r   r   r   r  r   rl   ro   )__name__
__module____qualname____annotations__r   r   r9   r   r   r   r	  r  r  r"  r$  r  r5  rN  r  rm  r  r   ry   rw   ru   r   r      s        !!!!IIIIII$$$$,,,,####7777####$$$$$$$$OOO<<<<(((())))''''$$$$1111QQQQ3333    =<<<NNN''''    """"%%%%++++1111>>>>1111    +****.F....(,,,,,( 0909CGBF.0+/+_+ _+ _+ _+ _+ _+BJ0 J0 J0 J0X& & & &R OS% % % % %NM M M M^!9 !9 !9 !9F" " " "" " " "
+ + + +" " " "<s  s  s  s jN N N N`;I ;I ;I ;Iz" " " "J @E2 2 2 2 2 2 2 2rw   r   c            
      r     e Zd Zdeeeeedddd	dL fd)ZdMd2ZdNd4Z	 dOdP fd<ZdQ fdAZdRdCZ	dSdKZ
 xZS )TSyncPregelLoopNry   )	r   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   ro   c               v   t                                          ||||||||||||||||	|||
           t                      | _        |rM|j        | _        |j        | _        t          |j                  j	        
                    d          d u| _        d S t          | _        d | _        d | _        d| _        d S N)rt   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   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	__class__s                       ru   r   zSyncPregelLoop.__init__  s    . 	%!##+-1-%%!' 	 	
 	
 	
* [[
 	C1=1ND.+7+BD(,122=AA+NN :::
 2;D.48D1+/D(=BD:::rw   prev concurrent.futures.Future | Noner   r   r8  r   rZ  r   c                    	 ||                                  t          t          | j                                      ||||           d S # t          t          | j                                      ||||           w xY wr   )rt  r   r   r   putr   r  r   r   r8  rZ  s         ru   r   z/SyncPregelLoop._checkpointer_put_after_previous   s    	$d&788<<
Hl    D$d&788<<
Hl   s   A
 
2A<r  c                R   | j         dS g }d | j                                        D             x}rv| j                             t	          |                                                    D ]<\  }}||         }|j                            |           |                    |           =|S )Nry   c                \    i | ])}|j         	|j        |j         j        |j         j        f|*S ry   	cache_keyr   nskeyrz   r  s     ru   r   z6SyncPregelLoop.match_cached_writes.<locals>.<dictcomp>  K     
 
 
{
 $%8
[^Q[_-q
 
 
rw   )	r   r   r   r   r   r   r   r   r   r   matchedr  r  r   r   s         ru   r"  z"SyncPregelLoop.match_cached_writes  s    :2.0
 
Z&&((
 
 
 
6 	%
  $z~~eFmm<<BBDD % %Vc{""6***t$$$$rw   r   re   r   r   r   r   r   c                    t                                          |||          x}r9|                                 D ]$}|                     |j        |j        d           %|S NTr  )r  r	  r"  r   r   r   r   r   r   r   r  r  s        ru   r	  zSyncPregelLoop.accept_push  sm     WW((y$???6 	F0022 F F""47DK"EEEErw   r   r   r   r   c                ^   t                                          ||           |r| j        t          | d          sdS | j                            |          }||j        dS |                     | j        j        |j        j	        |j        j
        f|j        |j        j        fi           dS )r   Nr   )r  r   r   r   r   r   r  r   r0  r  r  r   ttlr   r   r   r   r  s       ru   r   zSyncPregelLoop.put_writes'  s    7F+++ 	+743I3I+Fz~~g&&<4>1FJN"DN$67KN&:	
 	
 	
 	
 	
rw   r#   c                   | j         r | j                             | j                  }nd }|'t          | j        t	                      ddid g           }n!| j        |                     |j                   i | j        |j        t          t          di| j        
                    t          i           |j        
                    t          i           i| _        |j        | _        |j        d         | _        |j        | _        |j        | _        |j        d |j        D             ng | _        | j                            t)          | j                            | _        t-          | j        | j                  \  | _        | _        | j                            | j                   d| _        | j        d         dz   | _        | j        | j        d         z   dz   | _        | j        d	                                         | _         | !                    | j"        | j        
                    d
          r'tG          | j        
                    d
                    nd           | _$        | S )Nr   r   r   c                :    g | ]\  }}}t          |          ||fS ry   r   rz   r'  r(  r   s       ru   r   z,SyncPregelLoop.__enter__.<locals>.<listcomp>T  +    DDD)#q!c#hh1DDDrw   r   rq   recursion_limitr7  r   r   r   )%r   	get_tupler   r   rP   r   r   r   r%   r(   r   parent_configr   r   r8  r   r   r   r  enter_contextrR   r   rM   r   r   r   pushrm  r   r   r   rU  r   rN  r   r0  r   r   saveds     ru   	__enter__zSyncPregelLoop.__enter__;  s`    	%//0FGGEEE=#&(8(:(:VRL$PR EE %1$$U%5666"
$"
l"
 ("(,,T266 ,""4,,"
 "
 ',&9##(#3D#9 *#(>  #/ EDu/CDDDD 	& j../A$+/N/NOO&>J'
 '
#t| 	
0111,V4q8	I,= >>B	,0O<N,O,T,T,V,V) $""#566S!4!45G!H!HIII	 !, !
 !
 rw   r[  r\  r]  r^  r_  r`  ra  c                :    | j                             |||          S r   )r  __exit__)r   r[  r]  r_  s       ru   r  zSyncPregelLoop.__exit__k  s     z""8Y	BBBrw   )(r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   ro   )r  r  r   r   r   r   r8  r   rZ  r   rl   r   r  r   r  r  rl   r#   r  )r  r  r  r9   r   r   r"  r	  r   r  r  __classcell__r  s   @ru   r  r    s        DH/809*3+4+4BF.0+/+8C 8C 8C 8C 8C 8C 8C 8Ct         OS      
 
 
 
 
 
(. . . .`C C C C C C C Crw   r  c            
      r     e Zd Zeedeeedddd	dL fd)ZdMd2ZdNd4Z	 dOdP fd<ZdQ fdAZdRdCZ	dSdKZ
 xZS )TAsyncPregelLoopNry   )	r   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   ro   c               v   t                                          ||||||||||||||||	|||
           t                      | _        |rM|j        | _        |j        | _        t          |j                  j	        
                    d          d u| _        d S t          | _        d | _        d | _        d| _        d S r  )r  r   r   r  r  r   aput_writesr   r   r  r   r   rG   r   )r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  s                       ru   r   zAsyncPregelLoop.__init__v  s    . 	%!##+-1-%%!' 	 	
 	
 	
* $%%
 	C1=1ND.+7+CD(,233>BB;OO :::
 2;D.48D1+/D(=BD:::rw   r  asyncio.Task | Noner   r   r8  r   rZ  r   c                  K   	 || d {V  t          t          | j                                      ||||           d {V  d S # t          t          | j                                      ||||           d {V  w xY wr   )r   r   r   aputr  s         ru   r   z0AsyncPregelLoop._checkpointer_put_after_previous  s      	






*D,=>>CC
Hl          $*D,=>>CC
Hl         s   
A 8A>r  c                b  K   | j         g S g }d | j                                        D             x}r|| j                             t	          |                     d {V                                 D ]<\  }}||         }|j                            |           |                    |           =|S )Nc                \    i | ])}|j         	|j        |j         j        |j         j        f|*S ry   r  r  s     ru   r   z8AsyncPregelLoop.amatch_cached_writes.<locals>.<dictcomp>  r  rw   )	r   r   r   agetr   r   r   r   r   r  s         ru   r$  z$AsyncPregelLoop.amatch_cached_writes  s      :I.0
 
Z&&((
 
 
 
6 	%
 '+jooeFmm&D&D D D D D D DKKMM % %Vc{""6***t$$$$rw   r   re   r   r   r   r   r   c                   K   t                                          |||          x}r?|                                  d {V D ]$}|                     |j        |j        d           %|S r  )r  r	  r$  r   r   r   r  s        ru   aaccept_pushzAsyncPregelLoop.aaccept_push  s       WW((y$???6 	F"7799999999 F F""47DK"EEEErw   r   r   r   r   c                   t                                          ||           |r| j        t          | d          sdS | j                            |          }||j        dS |d         d         t          t          fv rdS | 	                    | j        j
        |j        j        |j        j        f|j        |j        j        fi           dS )r   Nr   r   )r  r   r   r   r   r   r  r1   r/   r   asetr  r  r   r  r  s       ru   r   zAsyncPregelLoop.put_writes  s    7F+++ 	+743I3I+Fz~~g&&<4>1F!9Q<Iu---FJO"DN$67KN&:	
 	
 	
 	
 	
rw   r#   c                  K   | j         r&| j                             | j                   d {V }nd }|'t          | j        t	                      ddid g           }n!| j        |                     |j                   i | j        |j        t          t          di| j        
                    t          i           |j        
                    t          i           i| _        |j        | _        |j        d         | _        |j        | _        |j        | _        |j        d |j        D             ng | _        | j                            t)          | j                             d {V | _        t-          | j        | j                  \  | _        | _        | j                            | j                   d| _        | j        d         dz   | _        | j        | j        d         z   dz   | _        | j        d	                                         | _         | !                    | j"        | j        
                    d
          r'tG          | j        
                    d
                    nd           | _$        | S )Nr   r  r   r   c                :    g | ]\  }}}t          |          ||fS ry   r  r  s       ru   r   z.AsyncPregelLoop.__aenter__.<locals>.<listcomp>  r  rw   r   rq   r  r7  r   r  )%r   
aget_tupler   r   rP   r   r   r   r%   r(   r   r  r   r   r8  r   r   r   r  enter_async_contextrQ   r   rM   r   r   r   r  rm  r   r   r   rU  r   rN  r   r0  r   r  s     ru   
__aenter__zAsyncPregelLoop.__aenter__  s      	+66t7MNNNNNNNNEEE=#&(8(:(:VRL$PR EE %1$$U%5666"
$"
l"
 ("(,,T266 ,""4,,"
 "
 ',&9##(#3D#9 *#(>  #/ EDu/CDDDD 	& !J::#DK00
 
 
 
 
 
 
 
 '?J'
 '
#t| 	
0111,V4q8	I,= >>B	,0O<N,O,T,T,V,V) $""#566S!4!45G!H!HIII	 !, !
 !
 rw   r[  r\  r]  r^  r_  r`  ra  c                   K   t          j        | j                            |||                    }	 | d {V S # t           j        $ r}g |j        |R |_         d }~ww xY wr   )asynciocreate_taskr  	__aexit__CancelledErrorrj  )r   r[  r]  r_  	exit_taskes         ru   r  zAsyncPregelLoop.__aexit__   s       'J  9i@@
 
		"??????"% 	 	 	 *qv)y))AF		s   : A 	AA )(r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   ro   )r  r  r   r   r   r   r8  r   rZ  r   rl   r   r  r   r  r  r  r  )r  r  r  r9   r   r   r$  r  r   r  r  r  r  s   @ru   r  r  u  s        0909CG*3+4+4BF.0+/+8C 8C 8C 8C 8C 8C 8C 8Ct         OS      
 
 
 
 
 
.0 0 0 0d       rw   r  )rk   r`   rl   r`   )
__future__r   r  r  concurrent.futures
concurrentcollectionsr   r   collections.abcr   r   r   r	   
contextlibr
   r   r   r   r   r   inspectr   typesr   typingr   r   r   r   langchain_core.callbacksr   r   langchain_core.runnablesr   langgraph.cache.baser   langgraph.checkpoint.baser   r   r   r   r   r   r    langgraph.store.baser!   typing_extensionsr"   r#   langgraph._internal._configr$   langgraph._internal._constantsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   langgraph._internal._scratchpadr8   langgraph._internal._typingr9   r:   langgraph.channels.baser;   "langgraph.channels.untracked_valuer<   langgraph.constantsr=   langgraph.errorsr>   r?   langgraph.managed.baser@   rA   langgraph.pregel._algorB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   langgraph.pregel._checkpointrM   rN   rO   rP   langgraph.pregel._executorrQ   rR   rS   langgraph.pregel._iorT   rU   rV   rW   rX   langgraph.pregel._readrY   langgraph.pregel._utilsrZ   r[   langgraph.pregel.debugr\   r]   r^   langgraph.pregel.protocolr_   r`   langgraph.typesra   rb   rc   rd   re   rf   rg   rh   ri   rj   r   r   r   r~   r   r  r  ry   rw   ru   <module>r     s   " " " " " "       * * * * * * * * A A A A A A A A A A A A            ( ' ' ' ' ' ' '                        M L L L L L L L 3 3 3 3 3 3 * * * * * *                  + * * * * * - - - - - - - - : : : : : :                                         * = < < < < < : : : : : : : : / / / / / / = = = = = = * * * * * *                                                           
              . - - - - - S S S S S S S S         
 B A A A A A A A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 GCLLIcNN 5c?
#Q Q Q Qv v v v v v v vrmC mC mC mC mCZ!7 mC mC mC`{ { { { {j"= { { { { {rw   