
    }
iX                    p   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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlMmNZNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU d dlVmWZWmXZX d dlYmZZZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZg d dlhmiZimjZjmkZkmlZl d dlmmnZnmoZompZp d dlqmrZrmsZsmtZtmuZumvZv d dlwmxZx d dlymzZzm{Z{ d d l|m}Z}m~Z~mZ d d!lmZmZ 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 )0    )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_REPLAY_STATE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)ReplayState)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streamsrb   returnc                 D     d fd}t          |d  D                       S )Nvaluera   rn   Nonec                F    D ]}| d         |j         v r ||            d S )N   modes)rp   streamrm   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langgraph/pregel/_loop.py__call__zDuplexStream.<locals>.__call__   s;     	 	FQx6<''u	 	    c                &    h | ]}|j         D ]}|S  rt   ).0smodes      rw   	<setcomp>zDuplexStream.<locals>.<setcomp>   s'    $O$O$Oaqw$O$OtT$O$O$O$Ory   )rp   ra   rn   rq   )rb   )rm   rx   s   ` rw   DuplexStreamr      sB         
 ($O$O7$O$O$OPPPry   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 | Nonerv   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is_replaying	is_nested/None | AsyncParentRunManager | ParentRunManagermanagerAll | Sequence[str]interrupt_afterinterrupt_beforerf   
durabilitySequence[RetryPolicy]retry_policyCachePolicy | Nonecache_policyrE   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_checkpointrU   submitzMapping[str, BaseChannel]channelsrB   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_channelsr{   )r   r   r   migrate_checkpointr   r   BaseCache | Nonetrigger_to_nodesMapping[str, Sequence[str]]r   rn   rq   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    r{   ).rv   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,   
isinstancer:   subgraph_counterr$   r(   r4   joinr   r'   r   r/   tupler   splitr   r   )selfr   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
scratchpadcnt	thread_ids                          rw   __init__zPregelLoop.__init__   s>   . 
		
(


$&&. 0+t{tR/H/HH4tD#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 	
 '+###ry   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   r|   ws     rw   	<genexpr>z(PregelLoop.put_writes.<locals>.<genexpr>7  s+      66!qt~%666666ry   c                     i | ]}|d          |S r   r{   r   s     rw   
<dictcomp>z)PregelLoop.put_writes.<locals>.<dictcomp>8  s    333q1Q4333ry   c                J    g | ]}|d          k    s|d         t           v| S )r   rs   r   r|   r   r   s     rw   
<listcomp>z)PregelLoop.put_writes.<locals>.<listcomp>;  s>     . . .Q47??ad.&@&@ &@&@&@ry   c                <    g | ]}|d          k    |dd         S r   rs   Nr{   r   s     rw   r   z)PregelLoop.put_writes.<locals>.<listcomp>@  s1     ' ' '1!""ry   c                ,    g | ]}|d          k    |S r   r{   r   s     rw   r   z)PregelLoop.put_writes.<locals>.<listcomp>E  s)     . . .QqTW_____ry   c              3  @   K   | ]}t          |t                    V  d S Nr   r>   r|   channels     rw   r   z(PregelLoop.put_writes.<locals>.<genexpr>K  s=       
 
4;Jw//
 
 
 
 
 
ry   c                    g | ]m\  }}t          j                            |          t                    2|t          k    r,t          |t
                    r|t          |j                  fn||fnS r{   )r   r   r   r>   r8   ri   rL   r   )r|   cvr   s      rw   r   z)PregelLoop.put_writes.<locals>.<listcomp>O  s     
 
 
 Aq!$*.."3"3^DD
 EzzjD&9&9z 9!T]KKLLQ
 
 
ry   c              3  (   K   | ]\  }}||fV  d S r   r{   )r|   r   r   r   s      rw   r   z(PregelLoop.put_writes.<locals>.<genexpr>\  s-      -Q-Q$!Qw1o-Q-Q-Q-Q-Q-Qry   exitr   idr   )alllistvaluesr5   r   anyr   extendr   r   r$   r   r(   r   r%   r   r&   r   r   hasattrr   r   rN   pathoutput_writes)r   r   r   writes_to_saver   tasks   ``    rw   
put_writeszPregelLoop.put_writes2  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 	0ry   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   rN   r   )r   r   by_taskr   r   rp   r   r   s           rw   _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	   	 	ry   r   rg   	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        s|                     |j
        |i           |S dS )zEAccept a PUSH from a task, potentially returning a new task to start.r   -r   Nr   checkpoint_id_bytesrH   pending_writes	processesr   r   r   r   r   for_executionTr   r   r   r   r   r   )binascii	unhexlifyr   replacerH   r   rg   rK   r6   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          rw   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?	 	ry   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        s!| 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   rJ   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   rM   rA   r`   r   r   r   )r   r   s     rw   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   	+T%C 	+tz***   	#%5OT2DJ4E4E4G4G&
 &
 	# -DK """ 	

7OTZ->->-@-@AAA J%%'' 	F 	FD{ F""47DK"EEEtry   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 r{   r   r|   tr   s      rw   r   z)PregelLoop.after_tick.<locals>.<listcomp>  s'    CCC!(CCQ!CCCCry   r   Fsourceloopr   )r   r   rG   r   r   r   r   r   
isdisjointr   r   r   r  rY   r   clearr   _put_checkpointr   rM   r   rA   r   r%   popr+   )r   r   s     rw   
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8ry   Sequence[PregelExecutableTask]c                    t           r   NotImplementedErrorr   s    rw   match_cached_writeszPregelLoop.match_cached_writes?  s    !!ry   c                   K   t           r   r!  r#  s    rw   amatch_cached_writeszPregelLoop.amatch_cached_writesB  s      !!ry   "Mapping[str, PregelExecutableTask]c                    | j         D ]P\  }}}|t          t          t          fv r|                    |          x}r|j                            ||f           Qd S r   )r   r0   r2   r7   r   r   r   )r   r   tidkr   r   s         rw   r  zPregelLoop._match_writesG  sk    7 	+ 	+ICAUIv...yy~~%t +""Aq6***		+ 	+ry   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 r{   r{   )r|   r   pending_interruptss     rw   r   z1PregelLoop._pending_interrupts.<locals>.<setcomp>]  s4     !
 !
 !
,,, w',,,ry   c                    h | ]}|v|	S r{   r{   )r|   interrupt_idresumed_interrupt_idss     rw   r   z1PregelLoop._pending_interrupts.<locals>.<setcomp>d  s/     (
 (
 (
#888 888ry   )setr   r2   r   r7   addr   )r   pending_resumesr   
write_typerp   hanging_interruptsr.  r1  s         @@rw   _pending_interruptszPregelLoop._pending_interruptsN  s     .0 %(EE*.*H 	- 	-&GZY&&.3Ahk"7++v%%##G,,,!
 !
 !
 !
*!
 !
 !
(
 (
 (
 (
 2 9 9 ; ;(
 (
 (
 "!ry   c               
   | j                             t          i           }t          | j        t
                    }t          | j        d                   ot          |                    t          | j        d u pY|pW| j	         oO| j                             di                               d          | j
                            dt                    k                        }| j        r| j	        r6|                    t          d          |                    t          i           v s<|rt          t
          | j                  j        1|                    t          d          sd | j        D             | _        |rft          t
          | j                  j        x}| j        st'          d          t          |t(                    ot+          d |D                       x}r|| j         t                   t,          <   n4t/          |                                           d	k    rt'          d
          t3          t4                    }t7          t          t
          | j                            D ]0\  }	}
}|
t8          k    r|s||	                             |
|f           1|s|st=          d          |                                D ]\  }	}|                      |	|           d | j        D             x}rTtC          | j        | j"        tG          dtH          |g           g| j%        | j&                  }||'                    |           |r| j        d         (                    tR          i            | j"        D ]?}|| j        d         v r.| j        d         |         }|| j        d         tR                   |<   @| *                    dtV          | j,        d| j"                   nt[          t]          || j                            x}rt_          | j        | j        | j0        | j"        | j1        | j         | j2        | j3        dd d d |          }tC          | j        | j"        g |4                                tG          dtH          |g           | j%        | j&                  }|| _5        | 6                    ddi           nt          |vrt=          d|           | j	        sd }| j        rl| j        d         }| j
                            d          dk    r2| j7        r+| j7        t                                       tp          |          }ts          |          }tu          | j         t          |tv          |i          | _         d| _<        |S )Nchannel_versionsmetadatarun_idr   Fc                4    g | ]}|d          t           k    |S )rs   )r7   r   s     rw   r   z%PregelLoop._first.<locals>.<listcomp>  s(     . . .QqTV^^^^^ry   z3Cannot use Command(resume=...) without checkpointerc              3  4   K   | ]}t          |          V  d S r   )r]   )r|   r*  s     rw   r   z$PregelLoop._first.<locals>.<genexpr>  s+      EE1!44EEEEEEry   rs   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   )r5   r   s     rw   r   z%PregelLoop._first.<locals>.<listcomp>  s5     
 
 
QqT\=Q=QAabbE=Q=Q=Qry   r{   versions_seenr   T)r  r   r   r   r   r  r   zReceived no input for r   updatepending)=r   r   r%   r   r   re   r   r   r+   r   r   r<   r   r(   r'   r   resumer   r   RuntimeErrordictr   r*   lenr7  r   r   rV   r7   r   r@   r   r   rG   r   rF   r1   r   r   rA  
setdefaultr2   r  rY   r   r   rW   rJ   r   r   r   r   r   r   r  r   r&   r9   r$   r)   r   )r   r   r   configurableinput_is_commandis_resumingrC  resume_is_mapr   r)  r   r   wsnull_writesnull_updated_channelsr*  versioninput_writesdiscard_tasksreplay_statereplay_checkpoint_ids                        rw   _firstzPregelLoop._firstl  s    {tR00%dj'::4?+=>?? 
D#
d" # & G
B77;;HEE/33HgFFG	 	E
 E
"  	 	 !$$%=rBB##$=rBBC C
 "C
 '+7DJ&?&?&F&R  ##$7?? 'S. .9. . .D*
  	)w
33::G( &M  
 vt,, FEEfEEEEE= 
 @FDK%&;<<4335566::*Z  
 ?J$>O>OF(T'4:-F-FGGG / /	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~ 	 04L  	A'+t'<$,00::hFF3 G ,0+Ft+L+P+P02F, ,(  ++?@@,'+\ DK  ry   r:  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     rw   r   z-PregelLoop._put_checkpoint.<locals>.<genexpr>-  s=       >
 >
4;Jw//>
 >
 >
 >
 >
 >
ry   c                h    g | ].}t          |t                    rt          |j                  n|/S r{   )r   ri   rL   r   )r|   rp   r   s     rw   r   z.PregelLoop._put_checkpoint.<locals>.<listcomp>0  sO         eT**1%GGG  ry   r   r9  _put_checkpoint_futrs   )r   r   r   r   r   r%   r   r'   r   r   rQ   r   r   r8   r   r   r&   r   r   r(   copyr\   r   r   getattrrP   rZ  )r   r:  exitingdo_checkpointsanitized_tasksr9  new_versionss   `      rw   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	 	ry   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   )r3   )r|   parts     rw   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>s  s'      EE$6%EEEEEEry   r   c              3  $   K   | ]}|j         V  d S r   r  )r|   r   s     rw   r   z1PregelLoop._suppress_interrupt.<locals>.<genexpr>~  s$      DDDDDDDDry   r   c                &    g | ]}|j         D ]}|S r{   r  r  s      rw   r   z2PregelLoop._suppress_interrupt.<locals>.<listcomp>  s'    JJJqJJAJJJJry   r   updatesc                 n    t          t          t          t                     j        d         ig          S )Nr   )iterr2   r   rA   args)rc  s   rw   <lambda>z0PregelLoop._suppress_interrupt.<locals>.<lambda>  s.    D#T.)%D%D%I!%LMN  ry   T)r   r   r   r   r  r   r   r   rA   r   r   r   r   r   rG   r   r   r   r   r  r   r   r  rY   rp  rZ   r   )r   ra  rc  re  suppressr   s     `   rw   _suppress_interruptzPregelLoop._suppress_interruptf  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 ry   r~   rj   r   Callable[P, Iterator[Any]]rp  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  rs   r   resulttask_resultr   )r   	timestamptypepayload)	rv   ru   r   r   r   nowr   utc	isoformat)r   r~   r   rp  rv  debug_remapr   s          rw   r  zPregelLoop._emit  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}} "/!''(   	 	ry   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   )r2   r   r	   )r|   r   r   s      rw   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) )ry   rm  c                 "    t                     S r   ro  
interruptss   rw   rq  z*PregelLoop.output_writes.<locals>.<lambda>  s    $z2B2B ry   r   c                 $    t           g          S r   r  )current_valuess   rw   rq  z*PregelLoop.output_writes.<locals>.<lambda>  s    T>:J5K5K ry   c                 "    t                     S r   r  r  s   rw   rq  z*PregelLoop.output_writes.<locals>.<lambda>  s    T*5E5E ry   r   )r   r   r   r?   r;   r2   r   r6   r   rv   ru   r  rZ   r   r   r   rE  r0   rX   r_   r   )r   r   r   r  r   stream_modesr  r  s         @@rw   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 ry   )(r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   rn   rq   r   r   r   r   rn   rq   )rn   rq   r   r   rg   r   r   r   r   rn   r   )rn   r   rn   r  )r   r'  rn   rq   )rn   r+  )r   r   r   r   rn   r   )r:  r   rn   rq   ra  rb  rc  rd  re  rf  rn   rg  )
r~   rj   r   rt  rp  ru  rv  rw  rn   rq   )r   r   r   r   r  r   rn   rq   )__name__
__module____qualname____annotations__r   r   r;   r   r   r   r  r  r  r$  r&  r  r7  rT  r  rs  r  r   r{   ry   rw   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" " " "" " " "
+ + + +" " " "<h  h  h  h TN N N N`;I ;I ;I ;Iz" " " "J @E2 2 2 2 2 2 2 2ry   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SyncPregelLoopNr{   )	r   r   r   r   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rq   c               v   t                                          ||||||||||||||||	|||
           t                      | _        |rM|j        | _        |j        | _        t          |j                  j	        
                    d          d u| _        d S t          | _        d | _        d | _        d| _        d S N)rv   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   rI   r   )r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	__class__s                       rw   r   zSyncPregelLoop.__init__  s    . 	%!##+-1-%%!' 	 	
 	
 	
* [[
 	C1=1ND.+7+BD(,122=AA+NN :::
 2;D.48D1+/D(=BD:::ry   prev concurrent.futures.Future | Noner   r   r:  r   r`  r   c                    	 ||                                  t          t          | j                                      ||||           d S # t          t          | j                                      ||||           w xY wr   )rz  r   r   r   putr   r  r   r   r:  r`  s         rw   r   z/SyncPregelLoop._checkpointer_put_after_previous7  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 )Nr{   c                \    i | ])}|j         	|j        |j         j        |j         j        f|*S r{   	cache_keyr   nskeyr|   r  s     rw   r   z6SyncPregelLoop.match_cached_writes.<locals>.<dictcomp>K  K     
 
 
{
 $%8
[^Q[_-q
 
 
ry   )	r   r   r   r   r   r   r   r   r   r   matchedr  r  r   r   s         rw   r$  z"SyncPregelLoop.match_cached_writesG  s    :2.0
 
Z&&((
 
 
 
6 	%
  $z~~eFmm<<BBDD % %Vc{""6***t$$$$ry   r   rg   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        rw   r  zSyncPregelLoop.accept_pushV  sm     WW((y$???6 	F0022 F F""47DK"EEEEry   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   r2  r  r  r   ttlr   r   r   r   r  s       rw   r   zSyncPregelLoop.put_writes^  s    7F+++ 	+743I3I+Fz~~g&&<4>1FJN"DN$67KN&:	
 	
 	
 	
 	
ry   r#   c                   | j         sd }n| j        t                                       t                    r | j                             | j                  }n| j        t                                       t                    x}rv|                    | j        t                                       t          d          | j         | j                  }| j        t                   
                    t          d            n| j                             | j                  }|'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                            t3          | j                            | _        t7          | j        | j                  \  | _        | _        | j                            | j                    d| _!        | j        d         dz   | _"        | j"        | j        d         z   dz   | _#        | j        d	         $                                | _%        | &                    | j'        | j                            d
          r'tQ          | j                            d
                    nd           | _)        | S )Nr   r   r   c                :    g | ]\  }}}t          |          ||fS r{   r   r|   r)  r*  r   s       rw   r   z,SyncPregelLoop.__enter__.<locals>.<listcomp>  +    DDD)#q!c#hh1DDDry   r   rs   recursion_limitr9  r   r   r   )*r   r   r%   r   r&   	get_tupler   r)   get_checkpointr(   r  r+   r   rR   r   r   parent_configr   r   r:  r   r  r   r  enter_contextrT   r   rO   r   r   r   pushrs  r   r   r   r[  r   rT  r   r2  r   r   savedrR  s      rw   	__enter__zSyncPregelLoop.__enter__r  s%     	HEE#D)--.FGG 	H %//0FGGEE![.223JKKK\ 	H !//D!%%&>CC!& E K!!"5t<<<< %//0FGGE=#&(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	 !, !
 !
 ry   ra  rb  rc  rd  re  rf  rg  c                :    | j                             |||          S r   )r  __exit__)r   ra  rc  re  s       rw   r  zSyncPregelLoop.__exit__  s     z""8Y	BBBry   )(r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rq   )r  r  r   r   r   r   r:  r   r`  r   rn   r   r  r   r  r  rn   r#   r  )r  r  r  r;   r   r   r$  r  r   r  r  __classcell__r  s   @rw   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      
 
 
 
 
 
(B B B BHC C C C C C C Cry   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AsyncPregelLoopNr{   )	r   r   r   r   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rq   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   rI   r   )r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  s                       rw   r   zAsyncPregelLoop.__init__  s    . 	%!##+-1-%%!' 	 	
 	
 	
* $%%
 	C1=1ND.+7+CD(,233>BB;OO :::
 2;D.48D1+/D(=BD:::ry   r  asyncio.Task | Noner   r   r:  r   r`  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         rw   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 r{   r  r  s     rw   r   z8AsyncPregelLoop.amatch_cached_writes.<locals>.<dictcomp>  r  ry   )	r   r   r   agetr   r   r   r   r   r  s         rw   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$$$$ry   r   rg   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        rw   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ry   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  r2   r0   r   asetr  r  r   r  r  s       rw   r   zAsyncPregelLoop.put_writes"  s    7F+++ 	+743I3I+Fz~~g&&<4>1F!9Q<Iu---FJO"DN$67KN&:	
 	
 	
 	
 	
ry   r#   c                  K   | j         sd }n| j        t                                       t                    r&| j                             | j                   d {V }n| j        t                                       t                    x}r||                    | j        t                                       t          d          | j         | j                   d {V }| j        t                   
                    t          d            n%| j                             | j                   d {V }|'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                            t3          | j                             d {V | _        t7          | j        | j                  \  | _        | _        | j                            | j                    d| _!        | j        d         dz   | _"        | j"        | j        d         z   dz   | _#        | j        d	         $                                | _%        | &                    | j'        | j                            d
          r'tQ          | j                            d
                    nd           | _)        | S )Nr   r   r  r   c                :    g | ]\  }}}t          |          ||fS r{   r  r  s       rw   r   z.AsyncPregelLoop.__aenter__.<locals>.<listcomp>g  r  ry   r   rs   r  r9  r   r  )*r   r   r%   r   r&   
aget_tupler   r)   aget_checkpointr(   r  r+   r   rR   r   r   r  r   r   r:  r   r  r   r  enter_async_contextrS   r   rO   r   r   r   r  rs  r   r   r   r[  r   rT  r   r2  r   r  s      rw   
__aenter__zAsyncPregelLoop.__aenter__9  s       	OEE#D)--.FGG 	O +66t7MNNNNNNNNEE![.223JKKK\ 	O '66D!%%&>CC!&       E K!!"5t<<<< +66t7MNNNNNNNNE=#&(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	 !, !
 !
 ry   ra  rb  rc  rd  re  rf  rg  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__CancelledErrorrp  )r   ra  rc  re  	exit_taskes         rw   r  zAsyncPregelLoop.__aexit__  s       'J  9i@@
 
		"??????"% 	 	 	 *qv)y))AF		s   : A 	AA )(r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   rq   )r  r  r   r   r   r   r:  r   r`  r   rn   r   r  r   r  r  r  r  )r  r  r  r;   r   r   r&  r  r   r  r  r  r  s   @rw   r  r    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      
 
 
 
 
 
.D D D DL       ry   r  )rm   rb   rn   rb   )
__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   r8   langgraph._internal._replayr9   langgraph._internal._scratchpadr:   langgraph._internal._typingr;   r<   langgraph.channels.baser=   "langgraph.channels.untracked_valuer>   langgraph.constantsr?   langgraph.errorsr@   rA   langgraph.managed.baserB   rC   langgraph.pregel._algorD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   langgraph.pregel._checkpointrO   rP   rQ   rR   langgraph.pregel._executorrS   rT   rU   langgraph.pregel._iorV   rW   rX   rY   rZ   langgraph.pregel._readr[   langgraph.pregel._utilsr\   r]   langgraph.pregel.debugr^   r_   r`   langgraph.pregel.protocolra   rb   langgraph.typesrc   rd   re   rf   rg   rh   ri   rj   rk   rl   r   r   r   r   r   r  r  r{   ry   rw   <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 * * * * * *                  + * * * * * - - - - - - - - : : : : : :                                           , 4 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k k k k k k k k\AC AC AC AC ACZ!7 AC AC ACHO O O O Oj"= O O O O Ory   