
    MKi\              	         S SK Jr  S SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
JrJrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJr  S S	KJr  S S
KJrJr  S SKJ r   S SK!J"r"J#r#J$r$J%r%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,J-r-  S SK.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrG  S SKHJIrI  S SKJJKrKJLrL  S SKMJNrN  S SKOJPrP  S SKQJRrR  S SKSJTrT  S SKUJVrV  S SKWJXrXJYrY  S SKZJ[r[  S SK\J]r]  S SK^J_r_J`r`  S SKaJbrbJcrc  S SKdJereJfrfJgrgJhrhJiriJjrjJkrk  \
\&S-  S/\&4   rl\R                  S:  rn " S S \5      ro " S! S"\5      rp " S# S$5      rq        S@S% jrr SA             SBS& jjrsSCS' jrt            SDS( jru\SSSSSS)SS*.                                 SES+ jj5       rv\SSS)SS,.                                 SFS- jj5       rvSSSSSS)SS*.                                 SGS. jjrv\C4rw " S/ S0\5      rxSSSSSS)S1.                                       SHS2 jjrySSSSS)S3.                                     SIS4 jjrzSSSSS)S3.                                       SJS5 jjr{    SKS6 jr|            SLS7 jr}                SMS8 jr~              SNS9 jrSOS: jrSOS; jrSPS< jr\GR                  " 5       r " S= S>5      r      SQS? jrg)R    )annotationsN)defaultdictdeque)CallableIterableMappingSequence)copy)partial)sha1)AnyLiteral
NamedTupleProtocolcastoverload)	Callbacks)AsyncParentRunManagerParentRunManager)RunnableConfig)BaseCheckpointSaverChannelVersions
CheckpointPendingWriteV)	BaseStore)xxh3_128_hexdigest)merge_configspatch_config)CACHE_NS_WRITESCONFCONFIG_KEY_CHECKPOINT_IDCONFIG_KEY_CHECKPOINT_MAPCONFIG_KEY_CHECKPOINT_NSCONFIG_KEY_CHECKPOINTERCONFIG_KEY_READCONFIG_KEY_RESUME_MAPCONFIG_KEY_RUNTIMECONFIG_KEY_SCRATCHPADCONFIG_KEY_SENDCONFIG_KEY_TASK_IDERROR	INTERRUPT	NO_WRITESNS_ENDNS_SEPNULL_TASK_IDPREVIOUSPULLPUSHRESERVEDRESUMERETURNTASKS)PregelScratchpad)	EMPTY_SEQMISSING)BaseChannel)Topic)UntrackedValue)
TAG_HIDDEN)ManagedValueMapping)get_runnable_for_task
identifier)read_channels)logger)INPUT_CACHE_KEY_TYPE
PregelNode)DEFAULT_RUNTIMERuntime)AllCacheKeyCachePolicyPregelExecutableTask
PregelTaskRetryPolicySend)      c                  h    \ rS rSrSr\S	S j5       r\S
S j5       r\SS j5       r\SS j5       r	Sr
g)WritesProtocolX   z}Protocol for objects containing writes to be applied to checkpoint.
Implemented by PregelTaskWrites and PregelExecutableTask.c                    g N selfs    X/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langgraph/pregel/_algo.pypathWritesProtocol.path\   s    58    c                    g rV   rW   rX   s    rZ   nameWritesProtocol.name_   s    r]   c                    g rV   rW   rX   s    rZ   writesWritesProtocol.writesb   s    36r]   c                    g rV   rW   rX   s    rZ   triggersWritesProtocol.triggerse   s    ),r]   rW   N)returntuple[str | int | tuple, ...])rg   str)rg   Sequence[tuple[str, Any]])rg   Sequence[str])__name__
__module____qualname____firstlineno____doc__propertyr[   r_   rb   re   __static_attributes__rW   r]   rZ   rS   rS   X   sB    A 8 8 6 6, ,r]   rS   c                  B    \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   Srg)PregelTaskWritesi   zSimplest implementation of WritesProtocol, for usage with writes that
don't originate from a runnable task, eg. graph input, update_state, etc.rh   r[   ri   r_   rj   rb   rk   re   rW   N)rl   rm   rn   ro   rp   __annotations__rr   rW   r]   rZ   rt   rt   i   s!    Q ('
I%%r]   rt   c                  n    \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'               SS jrSrg)Calls   funcinputretry_policycache_policy	callbacksr   r{   &tuple[tuple[Any, ...], dict[str, Any]]r|   Sequence[RetryPolicy] | Noner}   CachePolicy | Noner~   r   r   c               @    Xl         X l        X0l        X@l        XPl        g rV   rz   )rY   r{   r|   r}   r~   r   s         rZ   __init__Call.__init__|   s     	
(("r]   )r~   r   r{   r|   r}   N)r{   r   r|   r   r}   r   r~   r   r   r   rg   None)rl   rm   rn   ro   	__slots__rv   r   rr   rW   r]   rZ   rx   rx   s   sc    NI
N11..$$## 6#
 3# )# # 
#r]   rx   c                  ^^ [        [        [        U S   R                  5       5      S5      5      nU" 5       mU S   R	                  [
        0 5      m[        UU4S jU S   R                  5        5       5      nU(       ag  U Vs/ s HY  nUS:X  a<  UR                  (       a*  [        UR                  R	                  S[        5      ;  d  MD  OUR                  U;   d  MW  UPM[     sn$ / $ s  snf )z@Check if the graph should be interrupted based on current state.channel_versionsNversions_seenc              3  R   >#    U  H  u  pUTR                  UT5      :  v   M     g 7frV   )get).0chanversionnull_versionseens      rZ   	<genexpr>#should_interrupt.<locals>.<genexpr>   s*      +CMD 	$((4..Cs   $'*tags)typenextitervaluesr   r-   anyitemsconfigr?   r:   r_   )
checkpointinterrupt_nodestasksversion_type any_updates_since_prev_interrupttaskr   r   s         @@rZ   should_interruptr      s     T*-?"@"G"G"IJDQRL>Lo&**9b9D'* +'(:;AAC+ ($$ , 	
 #c) !)KK  YY/1 	
 	
s   AC)C)C)c           	        [        [        5      n[        U[        5      (       a2  / nUR                   H  u  pX:X  d  M  Xh   R                  U	5        M!     OaU V
s/ s H  oU;   d  M
  U
PM     nn
U V
s/ s H  oU;  d  M
  U
PM     nn
UR                   H  u  pX;   d  M  Xh   R                  U	5        M!     U(       a@  0 nU H,  n
X   R                  5       nUR                  Xj   5        XU
'   M.     [        X5      nO[        X5      nU(       a3  UR                  U V
s0 s H  oX*   R                  U 5      _M     sn
5        U$ s  sn
f s  sn
f s  sn
f )zFunction injected under CONFIG_KEY_READ in task config, to read current state.
Used by conditional edges to read a copy of the state with reflecting the writes
from that node only.)
r   list
isinstanceri   rb   appendr
   updaterC   r   )
scratchpadchannelsmanagedr   selectfreshupdatedmanaged_keyscvklocal_channelsccr   s                 rZ   
local_readr      s,    %0$5G&#KKDA{
!!!$   $*:6a'\6:#8V'7!V8KKDA{
!!!$   13A!!#BIIgj! "1 
 ~6x0lKl'*..44lKLM% ;8  Ls   	E(E4	EE Ec                    U b  U S-   $ S$ )zHDefault channel versioning function, increments the current int version.   rW   )currentchannels     rZ   	incrementr      s    !-7Q;414r]   c                |   [        US S9n[        S U 5       5      nU H\  nU S   R                  UR                  0 5      R	                  UR
                   Vs0 s H  nXpS   ;   d  M  XpS   U   _M     sn5        M^     Uc  SnO/U" U S   (       a  [        U S   R                  5       5      OSS5      nU VVs1 s H,  nUR
                    H  nU[        ;  d  M  Xq;   d  M  UiM     M.     snn H(  nX   R                  5       (       d  M  Uc  M!  XS   U'   M*     [        [        5      n	U H  nUR                   Hy  u  pzU[        [        [        [         ["        [$        4;   a  M+  Xq;   a  X   R'                  U
5        ME  [(        R*                  " SUR                   SUR,                   S	U S
35        M{     M     [/        5       nU	R1                  5        H\  u  p|Xq;   d  M  X   R	                  U5      (       d  M&  Uc  M+  XS   U'   X   R3                  5       (       d  MK  UR5                  U5        M^     U(       a}  U Hw  nX   R3                  5       (       d  M  X{;  d  M#  X   R	                  [6        5      (       d  MA  Uc  MF  XS   U'   X   R3                  5       (       d  Mf  UR5                  U5        My     U(       an  UR9                  U5      (       aX  U HR  nX   R;                  5       (       d  M  Uc  M!  XS   U'   X   R3                  5       (       d  MA  UR5                  U5        MT     U$ s  snf s  snnf )a,  Apply writes from a set of tasks (usually the tasks from a Pregel step)
to the checkpoint and channels, and return managed values writes to be applied
externally.

Args:
    checkpoint: The checkpoint to update.
    channels: The channels to update.
    tasks: The tasks to apply writes from.
    get_next_version: Optional function to determine the next version of a channel.
    trigger_to_nodes: Mapping of channel names to the set of nodes that can be triggered by updates to that channel.

Returns:
    Set of channels that were updated in this step.
c                2    [        U R                  S S 5      $ )NrP   )task_path_strr[   )ts    rZ   <lambda>apply_writes.<locals>.<lambda>   s    affRaj(Ar]   )keyc              3  8   #    U  H  oR                   v   M     g 7frV   )re   )r   r   s     rZ   r   apply_writes.<locals>.<genexpr>   s     .1JJ   r   r   NzTask z with path z wrote to unknown channel z, ignoring it.)sortedr   
setdefaultr_   r   re   maxr   r5   consumer   r   rb   r.   r4   r6   r-   r7   r,   r   rD   warningr[   setr   is_availableaddr:   
isdisjointfinish)r   r   r   get_next_versiontrigger_to_nodes	bump_stepr   r   next_versionpending_writes_by_channelvalupdated_channelsvalss                rZ   apply_writesr      s   0 5ABE ...I ?#..tyy"=DD !MM)D&899 ;!34T::)	
  ' 01 J1299;<
 DMMDx 	 %)$4 	! 	 >!!##(@3?)*40 7B$6GID	4FEJJ!)/66s;DII;k$))<VW[V\\jk %  "%/557
~$$T**|/G7C-.t4>..00$((. 8 D~**,,1M>((338P;G1248~2244(,,T2  %001ABBD~$$&&<+C7C-.t4>..00$((.  S*s   L3
)L3
:L8L8#
L8rW   )storecheckpointermanagerr   r   r}   r~   c                   g rV   rW   r   pending_writes	processesr   r   r   stepstopfor_executionr   r   r   r   r   r}   r~   s                   rZ   prepare_next_tasksr   E  s    &  r]   )r   r   r}   r~   c                   g rV   rW   r   s                   rZ   r   r   [  s    & '*r]   c                  0 n[         R                  " U S   R                  SS5      5      n[        U 5      n/ n[	        [
        [           S-  UR                  [        5      5      nU(       a  UR                  5       (       a  [        UR                  5       5       Hd  u  nn[        [        U4S40 SU _SU_SU_SU_S	U_S
U_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_6=n(       d  MS  UR                  U5        Mf     U(       aQ  U(       aJ  [        5       nU H.  nUR                  U5      =n(       d  M  UR                  U5        M0     [!        U5      nOU S   (       d  SnOUR#                  5       nU Ha  n[        [$        U4S40 SU _SU_SU_SU_S	U_S
U_SU_SU_SU_SU_SU_SU	_SU
_SU_SU_SU_SU_6=n(       d  MP  UR                  U5        Mc     U Vs0 s H  nUR&                  U_M     sn$ s  snf )a  Prepare the set of tasks that will make up the next Pregel step.

Args:
    checkpoint: The current checkpoint.
    pending_writes: The list of pending writes.
    processes: The mapping of process names to PregelNode instances.
    channels: The mapping of channel names to BaseChannel instances.
    managed: The mapping of managed value names to functions.
    config: The `Runnable` configuration.
    step: The current step.
    for_execution: Whether the tasks are being prepared for execution.
    store: An instance of BaseStore to make it available for usage within tasks.
    checkpointer: `Checkpointer` instance used for saving checkpoints.
    manager: The parent run manager to use for the tasks.
    trigger_to_nodes: Optional: Mapping of channel names to the set of nodes
        that are can be triggered by that channel.
    updated_channels: Optional. Set of channel names that have been updated during
        the previous step. Using in conjunction with trigger_to_nodes to speed
        up the process of determining which nodes should be triggered in the next
        step.

Returns:
    A dictionary of tasks to be executed. The keys are the task ids and the values
    are the tasks themselves. This is the union of all PUSH tasks (Sends)
    and PULL tasks (nodes triggered by edges).
id- Nr   checkpoint_id_bytescheckpoint_null_versionr   r   r   r   r   r   r   r   r   r   r   input_cacher~   r}   r   rW   )binascii	unhexlifyreplacer   r   r=   rO   r   r8   r   	enumerateprepare_single_taskr4   r   r   r   r   keysr3   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r~   r   r   r   r   tasks_channelidx_r   triggered_nodesr   node_idscandidate_nodesr_   r   s                                 rZ   r   r   q  s   Z 46K",,Z-=-E-Ec2-NO*:6L57Ett+X\\%-@AM3355 1 1 34FC*s & %8	
 )5  . $ "      ,  *   !" (#$ *%& *' t * T"- 5> ,$'E'G+//88x8&&x0 ( *0)@*+#..*  &4L
 "
 !4	

 %1
 *
  
 
 
 
 
 
 (
 
 &
  !
" $#
$ &%
& &'
 
4 
* LL-  . ##UADD!GU###s   #G=c                      \ rS rSrSS jrSrg)	_TaskIDFni  c                    g rV   rW   )rY   	namespacepartss      rZ   __call___TaskIDFn.__call__  s    r]   rW   Nr   bytesr   zstr | bytesrg   ri   )rl   rm   rn   ro   r   rr   rW   r]   rZ   r   r     s    r]   r   )r   r   r   r   r~   r}   c               4
   U	R                  [        0 5      nUR                  [        S5      nUS   S:  a  [        O[        nU S   [
        :X  a}  [        U S   [        5      (       ae  [        [        [        [        [        [        [        [        4   U 5      U40 SU_SU_SU_S	U_S
U_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_SU_6$ U S   [
        :X  aY  [        [        [        [        [        4   U 5      U40 SU_SU_SU_S	U_S
U_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU_SU_SU_6$ U S   [        :X  Ga  [        [        U S   5      nUU;  a  gUU   nUc  g[        UUS   US   R                  U5      UU5      (       GaR  [        [!        UR"                  5      5      nU(       a  U [$         U 3OUnU" UU[        U
5      U[        /UQ76 nU [&         U 3n[)        U	[           R                  [*        5      UU[-        UR/                  5       5      U	[           R                  [0        5      U
U5      n [3        UUUUUUS9nU[4        L a  g U
UUU SS US.nUb  UU:X  d   U S U 35       eU(       GaK  UR<                  =n (       Ga6  UR>                  (       a  URA                  UR>                  5        [C        5       n!URD                  =(       d    UnU(       ap  URG                  U5      n"[I        [J        [M        U5      =(       d    S!U4[-        [        U"[        5      (       a  U"R/                  5       OU"5      URN                  5      n#OSn#[        [P        UR                  [R        [T        5      5      n$U$RW                  US"   R                  [X        S5      US#9n$UURZ                  S$.n%[]        UUU U![_        [a        U	[        [b        U%5      5      UU(       a  URe                  S%U
 35      OS[f        U[h        U!Rj                  [l        [o        [p        UUU[s        U SS UU!U5      5      [t        U=(       d    UR                  [t        5      [v        0 UR                  [v        0 5      EUUS&   0E[x        S[        U[*        U[R        U$0	S'9UURz                  =(       d    UU#UU SS UR|                  UR~                  S(9$ g[        UUU SS 5      $ gg! [6         a,  n[8        (       a  UR;                  SU SU SS  S35        e SnAff = f))zPrepares a single task for the next Pregel step, given a task path, which
uniquely identifies a PUSH or PULL task within the graph.r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r}   	parent_nstask_id_funcr   Nr   r   )r   r   r   zBefore task with name 'z' and path 'rP   'langgraph_steplanggraph_nodelanggraph_triggerslanggraph_pathlanggraph_checkpoint_ns != __dynamic__channel_values)previousr   metadatar   graph:step:r   run_namer   configurablewriters	subgraphs)Ar   r!   r$   _xxhash_str
_uuid5_strr4   r   rx   prepare_push_task_functionalr   tupleri   intprepare_push_task_sendr3   	_triggersr   re   r0   r/   _scratchpadr)   r   encoder'   _proc_inputr;   	ExceptionSUPPORTS_EXC_NOTESadd_notenoder  r   r   r~   key_funcrJ   r    rB   ttlrH   r(   rG   overrider2   r   rL   r   r   r   	get_childr+   r*   extendr&   r   r   rt   r%   r#   r"   r}   flat_writersr  rM   )&	task_pathtask_id_checksumr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r}   r  r  r  r_   procre   checkpoint_nstask_idtask_checkpoint_nsr   r   excr  r%  rb   args_key	cache_keyruntimeadditional_configs&                                         rZ   r   r     sH   0 ::dB'L  !92>I",S/A"5;:L|t
9R=$ ? ?+sE3T12I>
 "
 !4	

 *
 
 
 
 
 
 (
 
 &
 
 &
  &!
"  #
$ &%
 	
* 
1	%sEz"I.
 "
 !4	

 *
 
 
 
 
  
 
 (
 
 &
 
  &!
" &#
$  %
& &'
 	
, 
1	C1&y "*)*'++D1#
 
 VDMM23H<Eyk&$84M"#D	 G %2?6(7)!D$t  !67"#5#<#<#>?t  !67J!"/ +) '> " #'"&&."+BQ-+=H  +"22VwitDTCU4VV299$4$}} 65:WF#'#4#4#DL##/#8#8#=$, /!+D!1!B] $
 / (2(C'@'@ %-OO$5)1	 ),,%	  %)	"!1!12Do!VG &..!+,<!=!A!A(D!Q# / G
 %- $		)% 0$) &^=N(O &* $+ !( 1 1Kv2F G%) !3G / /$.$.$,$+$4(1"1(,(.(0	%&2" !8$0 %Q'3'7'78O'P 9 <"&2&6&67PRT&U<"$-z$/?<" !9$ 8:L 5z 2G7*'P !))9\!!"1 $ 1 1"&..g4 4G %r "'42A??g
 
d  %%LL1$|IbqM?RST s   S! !
T+'TT)r   r   r   r~   r}   c               P   UR                  [        0 5      nU S   n[        UR                  5      nUR                  nUc  [        S5      e[        nU(       a  U [         U 3OUnU" UU[        U5      U[        [        U S   5      [        U S   5      5      nU SU 3n/ U SS QSP7nUUUUUS	.nUb  UU:X  d   U S
U 35       eU
(       GaL  [        5       nUR                  =(       d    UnU(       a  UR                  " UR                  S   0 UR                  S   D6n[        [         [#        UR                  5      =(       d    S4[%        ['        U[        5      (       a  UR)                  5       OU5      UR*                  5      nOSn[-        UR                  [.        5      UU[%        UR)                  5       5      UR                  [0        5      UU	5      n[3        [4        UR                  [6        [8        5      5      n U R;                  US9n [=        UUR                  UU[?        [A        USU05      UURB                  =(       d    U(       a  URE                  SU 35      OS[F        U[H        URJ                  [L        [O        [P        UUU[S        UUUU5      5      [T        U=(       d    UR                  [T        5      [V        0 UR                  [V        0 5      EUUS   0E[X        S[Z        U[.        U[6        U 0	S9UUR\                  =(       d    UUUU5
      $ [_        UUU5      $ )zIPrepare a push task with an attached caller. Used for the functional API.r  Nz1`call` functions must have a `__name__` attributer      :rP   Tr  r  r   r  )r   r  r  r   r  )0r   r!   rA   r{   r_   
ValueErrorPUSH_TRIGGERr0   ri   r4   r   r   r~   r&  r|   rJ   r    rB   r   r   r   r'  r  r)   r'   r   rH   r(   rG   r(  rL   r   r   r   r)  r+   r*   r*  r&   r   r   rt   r%   r#   r"   r$   r}   rM   )!r,  r-  r   r   r   r   r   r   r   r   r   r   r   r   r~   r}   r  r  r  callproc_r_   re   r/  r0  r1  in_progress_task_pathr  rb   r3  r4  r   r5  s!                                    rZ   r  r    s/   0 ::dB'LR=D!$)),E::D|LMM*H4=yk&$04MD	il#IaLG *?!G95 3im2T2&/#5H #**Nwit<L;M,NN*).((8L#,,djjmMtzz!}MH)1#		*;m #)3Hc)B)BHOO%   	*I I 23188:;23

 w 0 01C_ UV"""/#JJfz8&<=.. R?FG%%D6&:;D&#V]]#W"" ()>fhW& ,$Q(8(89P(Q- 0&**+DbI0!:d#30 -d,.@):&+: -!M'
 '	
R '4)>??r]   c               :	   [        U 5      S:X  GaL  [        [        U S   5      nU[           R	                  5       (       d  g U[           R                  5       nUS:  d  U[        U5      :  a  g UU   n[        U[        5      (       d$  [        R                  " S[        U5       S35        g UR                  U;  a%  [        R                  " SUR                   S35        g UUR                     nUR                  nUc  g [        nU(       a  U [         UR                   3OUR                  nU" UU[        U5      UR                  [        [        U5      5      nO[        R                  " SU  35        g UR                  [         0 5      nU SU 3n/ U S S	 QS
P7nUUR                  UUUS.nUb  UU:X  d   U SU 35       eU
(       Ga  UR"                  (       a  UR%                  UR"                  5        ['        5       nUR(                  =(       d    UnU(       a  UR+                  UR,                  5      n [/        [0        [3        U5      =(       d    SUR                  4[5        [        U [        5      (       a  U R7                  5       OU 5      UR8                  5      n!OS n![;        U[            R                  [<        5      UU[5        UR7                  5       5      U[            R                  [>        5      UU	5      n"[        [@        UR                  [B        [D        5      5      n#U#RG                  XS   R                  [H        S 5      S9n#UURJ                  S.n$[M        UR                  UR,                  UU[O        [Q        UU$5      UR                  U(       a  URS                  SU 35      OS [T        U[V        URX                  [Z        []        [^        U"UU[a        UUR                  UU5      5      [b        U=(       d    UR                  [b        5      [d        0 UR                  [d        0 5      EUUS   0E[f        S [h        U[<        U"[B        U#0	S9UURj                  =(       d    UU!UUURl                  URn                  S9$ [q        UUR                  U5      $ )Nr8  r   r   zIgnoring invalid packet type z in pending sendszIgnoring unknown node name z Ignoring invalid PUSH task path r9  rP   Fr  r  r  r  )r   r  r  r  r   r  r  )9lenr   r  r8   r   r   r   rO   rD   r   r   r%  r;  r0   ri   r4   r!   r  r   r   r~   r&  argrJ   r    rB   r   r   r'  r  r)   r'   rH   r(   rG   r(  r2   r   rL   r   r   r)  r+   r*   r*  r&   r   r   rt   r%   r#   r"   r$   r}   r+  r  rM   )%r,  r-  r   r   r   r   r   r   r   r   r   r   r   r   r~   r}   r  r  r   r   sendspacketr.  	proc_nodere   r/  r0  r  r1  translated_task_pathr  rb   r3  r4  r   r5  r6  s%                                        rZ   r  r  ]  sI   . 9~ 3	!%++-- ( 3 3 57cSZ's&$''NN/V~=NO ;;i'NN8EVWX%II	3<yk&&++/&++ 	 IKKH
 	9)EF::dB'L)?!G95 3Yr]2E2 ++&.#5H #**Nwit<L;M,NN*==OODMM*).((8L#,,VZZ8H #%6KK
 #)3Hc)B)BHOO%   
I I 4L23188:;4L23

 w 0 01C_ UV""-=">"B"B8T"R # 
 !II-
 $KKJJf&78?FG%%D6&:;D '#V]]#W"" (0&++vx& ,$Q(8(89P(Q- 0&**+DbI0!:d#30 -d,.@):&/@ - %%nnW,
 ,	
\ '6;;0DEEr]   c                X    U S   R                  5        H  n[        U5      " 5       s  $    g)z6Get the null version for the checkpoint, if available.r   N)r   r   )r   r   s     rZ   r   r      s,     0188:G} ;r]   c                   Uc-  UR                    H  nX   R                  5       (       d  M    g   gUR                    HB  nX   R                  5       (       d  M  UR                  XS5      UR                  XS5      :  d  MB    g   g)NTF)re   r   r   )r   versionsr   r   r.  r   s         rZ   r  r  	  sz     |MMD~**,, "  MMD~**,,2,2- 	 "
 r]   c           
       ^ ^^ [        T5      S:  a  T H#  nUS   [        :X  d  M  US   [        :X  d  M!  Um  O   S mT H:  nUS   U:X  d  M  US   [        :X  d  M  US   n[        U[        5      (       d  U/n  O   / nAU(       a  X4;   a  XC   n	UR                  U	5        OS m/ nSSUU U4S jjjn
[        UU[        5       [        5       UU
[        5       S9$ )Nr   r   r8  c                   > Tc  Tb  TR                  U 5      $ g U (       a   TR                  T5        TS   $ TS   $ ! [         a     g f = f)Nr8  )get_null_resumeremover:  )r   null_resume_writeparent_scratchpadr   s    rZ   rK  $_scratchpad.<locals>.get_null_resumeE  sf    $ ,(88AA%%&78(++ !##  s   = 
A
	A
)r   r   call_counterinterrupt_counterresumerK  subgraph_counterF)r   boolrg   r   )r@  r1   r6   r   r   r   r9   LazyAtomicCounter)rN  r   r0  namespace_hash
resume_mapr   r   wtask_resume_writemapped_resume_writerK  rM  s   ``         @rZ   r  r    s     >QAt|#!$%!   !%  Atw1Q46>$%aD!!"3T::):(;%   !# .6","<$$%89 !$ $ &(+- '*, r]   c                  Ub'  U R                   U;   a  [        XPR                      5      $ [        U R                  [        5      (       a_  0 nU R                   HL  nXr;   a/  X'   R                  5       (       a  X'   R                  5       Xg'   M5  M7  X   R                  U5      Xg'   MN     O[        U R                  [        5      (       aZ  U R                  U;   aD  X R                     R                  5       (       a  X R                     R                  5       nO$[        $ [        $ [        SU R                   35      eU(       a  U R                  b  U R                  U5      nUb  XeU R                   '   U$ )zLPrepare input for a PULL task, based on the process's channels and triggers.z2Invalid channels type, expected list or dict, got )input_cache_keyr
   r   r   r   r   r   ri   r;   RuntimeErrormapper)r.  r   r   r   r   r   r   r   s           rZ   r!  r!  a  s;    4#7#7;#FK 4 4566 $--&& MMD>..00 ( 2 2 4CI 1 $M--j9	 " 
DMM3	'	'==H$&3355}}-113N@P
 	

 0kk# ,/D(()Jr]   c                    [        U SS9nUR                  SR                  S U 5       5      5        UR                  5       nUSS  SUSS  SUSS	  SUS	S
  SUS
S  3	$ )zAGenerate a UUID from the SHA-1 hash of a namespace and str parts.F)usedforsecurityr]   c              3  p   #    U  H,  n[        U[        5      (       a  UR                  5       OUv   M.     g 7frV   r   ri   r   r   ps     rZ   r   _uuid5_str.<locals>.<genexpr>  s'     OAjC&8&8
a?   46N   r                )r   r   join	hexdigest)r   r   shahexs       rZ   r  r    sw     y%
0CJJsxxOOOP
--/C"1gYaAb	{!C2J<qRAc"Rj\JJr]   c                    [        U SR                  S U 5       5      -   5      nUSS  SUSS  SUSS  SUSS  SUSS	  3	$ )
z@Generate a UUID from the XXH3 hash of a namespace and str parts.r]   c              3  p   #    U  H,  n[        U[        5      (       a  UR                  5       OUv   M.     g 7frV   rc  rd  s     rZ   r   _xxhash_str.<locals>.<genexpr>  s'     Te:a+=+=QXXZ1Derg  Nrh  r   ri  rj  rk  rl  )r   rm  )r   r   rp  s      rZ   r  r    sf    
CHHTeTTTC "1gYaAb	{!C2J<qRAc"Rj\JJr]   c                    [        U [        [        45      (       a  SSR                  S U  5       5       3$ [        U [        5      (       a  U S $ [        U 5      $ )z2Generate a string representation of the task path.~z, c              3  8   #    U  H  n[        U5      v   M     g 7frV   )r   )r   xs     rZ   r    task_path_str.<locals>.<genexpr>  s     41mA&&r   010d)r   r  r   rm  r  ri   )tups    rZ   r   r     sa     cE4=)) DII44456 c3 Dz
 Xr]   c                  8    \ rS rSr% SrS\S'   SS jrS	S jrSrg)
rV  i  _counterzCallable[[], int] | Noner}  c                    S U l         g rV   r|  rX   s    rZ   r   LazyAtomicCounter.__init__  s	    r]   c                   U R                   cQ  [           U R                   c%  [        R                  " S5      R                  U l         S S S 5        U R                  5       $ U R                  5       $ ! , (       d  f       U R                  5       $ = f)Nr   )r}  LAZY_ATOMIC_COUNTER_LOCK	itertoolscount__next__rX   s    rZ   r   LazyAtomicCounter.__call__  sd    == )==($-OOA$6$?$?DM * }}t}} *) }}s   3A//
BN)rg   r   )rg   r  )	rl   rm   rn   ro   r   rv   r   r   rr   rW   r]   rZ   rV  rV    s    I&&r]   rV  c           	         [        U R                  [        5      (       d  U $ U R                  R                  5        VVs0 s H-  u  p#[        UR	                  U5      [
        5      (       a  M+  X#_M/     nnn[        U R                  US9$ s  snnf )zPop any values belonging to UntrackedValue channels in Send.arg for safe checkpointing.

Send is often called with state to be passed to the dest node, which may contain
UntrackedValues at the top level. Send is not typed and arg may be a nested dict.)r%  rA  )r   rA  dictr   r   r>   rO   r%  )rC  r   r   r   sanitized_args        rZ   !sanitize_untracked_values_in_sendr    sy     fjj$''
 JJ$$&&DA(,,q/>: 	&  
 V[[m44s   *B
-B
)r   r   r   zAll | Sequence[str]r   zIterable[PregelExecutableTask]rg   zlist[PregelExecutableTask]rT  )r   r9   r   Mapping[str, BaseChannel]r   r@   r   rS   r   zlist[str] | strr   rU  rg   zdict[str, Any] | Any)r   z
int | Noner   r   rg   r  )r   r   r   r  r   zIterable[WritesProtocol]r   zGetNextVersion | Noner   zMapping[str, Sequence[str]]rg   zset[str])"r   r   r   list[PendingWrite]r   Mapping[str, PregelNode]r   r  r   r@   r   r   r   r  r   r  r   zLiteral[False]r   Literal[None]r   r  r   r  r   "Mapping[str, Sequence[str]] | Noner   set[str] | Noner}   Sequence[RetryPolicy]r~   r  rg   zdict[str, PregelTask])"r   r   r   r  r   r  r   r  r   r@   r   r   r   r  r   r  r   zLiteral[True]r   BaseStore | Noner   BaseCheckpointSaver | Noner   /None | ParentRunManager | AsyncParentRunManagerr   r  r   r  r}   r  r~   r   rg   zdict[str, PregelExecutableTask])"r   r   r   r  r   r  r   r  r   r@   r   r   r   r  r   r  r   rU  r   r  r   r  r   r  r   r  r   r  r}   r  r~   r   rg   z7dict[str, PregelTask] | dict[str, PregelExecutableTask])(r,  ztuple[Any, ...]r-  
str | Noner   r   r   r   r   V | Noner   r  r   r  r   r  r   r@   r   r   r   r  r   r  r   rU  r   r  r   r  r   r  r   &dict[INPUT_CACHE_KEY_TYPE, Any] | Noner~   r   r}   r  rg   z(None | PregelTask | PregelExecutableTask)&r,  z!tuple[str, tuple, int, str, Call]r-  r  r   r   r   r   r   r  r   r  r   r@   r   r   r   r  r   r  r   rU  r   r  r   r  r   r  r~   r   r}   r  r  ri   r  r   rg   z!PregelTask | PregelExecutableTask)(r,  ztuple[str, tuple]r-  r  r   r   r   r   r   r  r   r  r   r@   r   r   r   r  r   r  r   rU  r   r  r   r  r   r  r~   r   r}   r  r  ri   r  r   r   r  rg   z(PregelTask | PregelExecutableTask | None)r   r   rg   r  )r   r  rH  r   r   zChannelVersions | Noner   r   r.  rF   rg   rU  )rN  zPregelScratchpad | Noner   r  r0  ri   rW  ri   rX  zdict[str, Any] | Noner   r  r   r  rg   r9   )r.  rF   r   r@   r   r  r   rU  r   r9   r   r  rg   r   r   )rz  zstr | int | tuplerg   ri   )rC  rO   r   r  rg   rO   )
__future__r   r   r  sys	threadingcollectionsr   r   collections.abcr   r   r   r	   r
   	functoolsr   hashlibr   typingr   r   r   r   r   r   langchain_core.callbacksr    langchain_core.callbacks.managerr   r   langchain_core.runnables.configr   langgraph.checkpoint.baser   r   r   r   r   langgraph.store.baser   xxhashr   langgraph._internal._configr   r   langgraph._internal._constantsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   langgraph._internal._scratchpadr9   langgraph._internal._typingr:   r;   langgraph.channels.baser<   langgraph.channels.topicr=   "langgraph.channels.untracked_valuer>   langgraph.constantsr?   langgraph.managed.baser@   langgraph.pregel._callrA   rB   langgraph.pregel._iorC   langgraph.pregel._logrD   langgraph.pregel._readrE   rF   langgraph.runtimerG   rH   langgraph.typesrI   rJ   rK   rL   rM   rN   rO   GetNextVersionversion_infor#  rS   rt   rx   r   r   r   r   r   r;  r   r   r  r  r   r  r  r!  r  r  r   Lockr  rV  r  rW   r]   rZ   <module>r     s   "   
  * A A     / T :  + % C      6 = : / * = * 6 D . ( C 6   1t8T*A-.%%0 -X -"z # #2( *  	N $ $'$ !$ 	$
 $ $ $N5
ii'i $i ,	i
 2i iX 
  "&!;?(,*,"&#  &  (  (	 
 !        "         9  &   (! "  # $ %  
 * 
 <@(,*,'+#**&* (* (	*
 !* * * * !* * -* =* 9* &*  (!*" %#*$ %%* 
*@ #/3?C;?(,*,'+#y$y$&y$ (y$ (	y$
 !y$ y$ y$ y$ y$ y$ -y$ =y$ 9y$ &y$  (!y$" %#y$$ =%y$x w ( #/3?C:>'+*,)e@e@ e@ 	e@
 e@ &e@ 'e@ (e@ (e@ !e@ e@ e@ e@ e@ e@  -!e@" =#e@$ 8%e@& %'e@( ()e@* .+e@l #/3?C'+*,%}@0}@ !}@
 }@ }@ '}@ (}@ !}@ }@ }@ }@ }@ }@ -}@  =!}@" %#}@$ (%}@& '}@* +}@, '-}@\ #/3?C'+*,%`F `F !`F
 `F `F '`F (`F !`F `F `F `F `F `F -`F  =!`F" %#`F$ (%`F& '`F( )`F* (+`F, .-`FF' ! 	
  
(A.A&A A 	A
 &A A A AH,
, , (,
 , !, 8, 	,^KK %>>+   5555	5r]   