
    9i%              
         d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z) dZ* G d de      Z+ G d de      Z, G d de      Z- G d de      Z. ed      Z/d.dZ0d/dZ1d0dZ2	 	 	 	 	 	 d1dZ3d2dZ4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d3dZ5	 	 	 	 	 	 	 	 	 	 d4d Z6d!d"d#d$d%d&d'd(d)d*	Z7d5d+Z8d6d,Z9y-)7    )annotations)IterableIteratorMappingSequenceasdict)Any)UUID)RunnableConfig)CheckpointMetadataPendingWrite)	TypedDict)patch_checkpoint_map)CONFCONFIG_KEY_CHECKPOINT_NSERROR	INTERRUPTNS_ENDNS_SEPRETURN)MISSING)BaseChannel)
TAG_HIDDEN)read_channels)PregelExecutableTask
PregelTaskStateSnapshot)TaskPayloadTaskResultPayloadCheckpointTaskCheckpointPayloadc                  6    e Zd ZU ded<   ded<   ded<   ded<   y)	r   stridnamer
   input	list[str]triggersN__name__
__module____qualname____annotations__     `/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/pregel/debug.pyr   r      s    G
IJr0   r   c                  @    e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)r    r$   r%   r&   
str | Noneerror
list[dict]
interruptsdict[str, Any]resultNr*   r/   r0   r1   r    r    &   s    G
Ir0   r    c                  @    e Zd ZU ded<   ded<   ded<   ded<   ded	<   y
)r!   r$   r%   r&   r3   r4   r5   r6   z%StateSnapshot | RunnableConfig | NonestateNr*   r/   r0   r1   r!   r!   .   s    G
I00r0   r!   c                  J    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   y)r"   RunnableConfig | Noneconfigr   metadatar7   valuesr(   nextparent_configzlist[CheckpointTask]tasksNr*   r/   r0   r1   r"   r"   6   s%    !!  
O((r0   r"   z$6ba7b831-9dad-11d1-80b4-00c04fd430c8c              #     K   | D ]b  }|j                   #t        |j                   j                  dg       v r2|j                  |j                  |j
                  |j                  d d yw)z,Produce "task" events for stream_mode=debug.Ntags)r%   r&   r'   r)   )r=   r   getr%   r&   r'   r)   )rB   tasks     r1   map_debug_tasksrG   B   s`      	
;;"zT[[__VR5P'P ''IIZZ	
 	
		
s   A)A+c                X    t        | t              xr d| v xr t        | d   t              S )zOReturn True if the payload already wraps multiple writes from the same channel.$writes)
isinstancedictlist)values    r1   is_multiple_channel_writerN   P   s4     	5$ 	/	/uY'.r0   c                    i }| D ]I  \  }}|j                  |      }|,t        |      r|d   n|g}|j                  |       d|i||<   E|||<   K |S )aJ  Folds task writes into a result dict and aggregates multiple writes to the same channel.

    If the channel contains a single write, we record the write in the result dict as `{channel: write}`
    If the channel contains multiple writes, we record the writes in the result dict as `{channel: {'$writes': [write1, write2, ...]}}`rI   )rE   rN   append)writesr8   channelrM   existingchannel_writess         r1   map_task_result_writesrU   Y   s|      F  $::g& -X6 #Z 
 !!%((.9F7O#F7O$ Mr0   c              #    K   t        |t              r|gn|}| \  }}|j                  |j                  t	        d |D        d      t        |D cg c]  }|d   |v s|d   t        k(  s| c}      |D cg c]<  }|d   t        k(  r.t        |d   t              r|d   n|d   gD ]  }t        |       > c}}d yc c}w c c}}w w)z3Produce "task_result" events for stream_mode=debug.c              3  @   K   | ]  }|d    t         k(  s|d     ywr      N)r   ).0ws     r1   	<genexpr>z)map_debug_task_results.<locals>.<genexpr>|   s     =qtu}qt=s   
Nr   rY   )r%   r&   r4   r8   r6   )
rJ   r$   r%   r&   r@   rU   r   r   r   r	   )task_tupstream_keysstream_channels_listrF   rQ   r[   vs          r1   map_debug_task_resultsra   p   s      $K5;  LD&gg		=V=tD(Q1!A$*>">!A$&.QQ

 
ty (1x8adqtf	
  1I

 
 R
s%   ACC 'C +C6AC7Cc                    | | S d| j                  di       j                         D ci c]  \  }}|j                  d      s|| c}}iS c c}}w )z,Remove pregel-specific keys from the config.configurable	__pregel_)rE   items
startswith)r=   kr`   s      r1   rm_pregel_keysrh      s\    ~

>26<<>
1<<, qD
 
s   Ac              #    K   | t            j                  t        d      }i }	|D ]d  }
|
j                  s|
j                   t
         |
j                   }|r| t         | }t         d| t            d   t        |ii|	|
j                  <   f t        t        | |            t        t        ||            t        ||      ||D cg c]  }|j                   c}t        |||	|      D cg c]  }|j                  r/|j                  |j                  |j                  |j                  dn|j                  rJ|j                  |j                  |j                  t        d |j                   D              |j                  dn>|j                  |j                  t        d |j                   D              |j                  d c}d y	c c}w c c}w w)
z2Produce "checkpoint" events for stream_mode=debug. 	thread_id)r%   r&   r4   r:   c              3  2   K   | ]  }t        |        y wNr   rZ   is     r1   r\   z'map_debug_checkpoint.<locals>.<genexpr>        #D!F1I#D   )r%   r&   r8   r6   r:   c              3  2   K   | ]  }t        |        y wrm   r   rn   s     r1   r\   z'map_debug_checkpoint.<locals>.<genexpr>   rp   rq   )r%   r&   r6   r:   )r=   rA   r?   r>   r@   rB   N)r   rE   r   	subgraphsr&   r   r%   r   rh   r   r   tasks_w_writesr4   r:   r8   tupler6   )r=   channelsstream_channelsr>   rB   pending_writesrA   output_keys	parent_nstask_statesrF   task_nsts                r1   map_debug_checkpointr~      s     t  !92>I=?K 
~~ YYKxy1"F8G95G VD\+6(' 
DGG
$ !!5fh!GH'(<]H(UV/:!&'A'. $E>;T-
,  ww dd	 xx dd((##Dq||#DD dd##Dq||#DD	
 
 (
s   CGGG(CG?Gc                   |xs g }g }| D ]  t        fd|D        t              }t        fd|D        d      }t        fd|D              }|D 	
cg c],  \  }}	}
|j                  k(  r|	t        t
        t        fvr|	|
f. }}	}}
|t        ur|}nt        |t              rF|D 	
cg c]  \  }	}
|	|k(  s|	|
f }}	}
t        |      }|r|j                  t        |            nd}n?t        |t              r|g}|D 	
cg c]  \  }	}
|	|v s|	|
f }}	}
t        |      }|r|ni }|t        uxs t        fd|D              }|j                  t        j                  j                  j                  |||r|j                  j                        nd|r|nd              t        |      S c c}
}	}w c c}
}	w c c}
}	w )zJApply writes / subgraph states to tasks to be returned in a StateSnapshot.c              3  Z   K   | ]"  \  }}}|j                   k(  r|t        k(  r| $ y wrm   )r%   r   )rZ   tidchanvalrF   s       r1   r\   z!tasks_w_writes.<locals>.<genexpr>   s0      "Cs$''>dfn s   (+c              3  ^   K   | ]$  \  }}}|j                   k(  s|t        k(  s!| & y wrm   )r%   r   )rZ   r   nexcrF   s       r1   r\   z!tasks_w_writes.<locals>.<genexpr>   s'     T[S!ScTWWneSTs   -	--Nc              3     K   | ]<  \  }}}|j                   k(  r'|t        k(  rt        |t              r|n|gD ]  }|  > y wrm   )r%   r   rJ   r   )rZ   r   r   vvr`   rF   s        r1   r\   z!tasks_w_writes.<locals>.<genexpr>   sR       
Qdgg~!y.&r84b2$	 
   
 
s   AAc              3  h   K   | ])  }|d    j                   k(  xr |d   t        t        fv + ywrX   )r%   r   r   )rZ   r[   rF   s     r1   r\   z!tasks_w_writes.<locals>.<genexpr>  s8      /
CDAaDDGGO>!UI,> >>/
s   /2)r@   r   ru   r%   r   r   r   rJ   r$   rU   rE   anyrP   r   r&   path)rB   rx   statesry   outrtn
task_errortask_interruptsr   r   r   task_writestask_resultfiltered_writesmapped_writes
has_writesrF   s                   @r1   rt   rt      s    $)rNC <
&4
 
 TNT

    
, 
 
 #1
 
T3dgg~$ui.H"H 3K
 
 gKS) .9 )cDK<OsO  3?CMAN-++C,<=TXK+s+*m .9 )cDK<OsO  3?CM+:-K' 
3 /
HV/
 ,

 	

				'-

477#4)t
	
e<
z :S
s   1F8
-F?;F?GGz0;30z0;31z0;32z0;33z0;34z0;35z0;36z0;37z1;30)	blackredgreenyellowbluemagentacyanwhitegrayc                "    dt         |    d|  dS )zGet colored text.z[1;3m[0m)COLOR_MAPPING)textcolors     r1   get_colored_textr   -  s    mE*+1TF'::r0   c                    d|  dS )zGet bolded text.z[1mr   r/   )r   s    r1   get_bolded_textr   2  s    TF'""r0   N)rB   Iterable[PregelExecutableTask]returnzIterator[TaskPayload])rM   r
   r   bool)rQ   zSequence[tuple[str, Any]]r   r7   )r]   z6tuple[PregelExecutableTask, Sequence[tuple[str, Any]]]r^   str | Sequence[str]r   zIterator[TaskResultPayload])r=   r<   r   r<   )r=   r   rv   zMapping[str, BaseChannel]rw   r   r>   r   rB   r   rx   zlist[PendingWrite]rA   r<   ry   r   r   zIterator[CheckpointPayload])
rB   z+Iterable[PregelTask | PregelExecutableTask]rx   zlist[PendingWrite] | Noner   z0dict[str, RunnableConfig | StateSnapshot] | Nonery   r   r   ztuple[PregelTask, ...])r   r$   r   r$   r   r$   )r   r$   r   r$   ):
__future__r   collections.abcr   r   r   r   dataclassesr	   typingr
   uuidr   langchain_core.runnablesr   langgraph.checkpoint.baser   r   typing_extensionsr   langgraph._internal._configr   langgraph._internal._constantsr   r   r   r   r   r   r   langgraph._internal._typingr   langgraph.channels.baser   langgraph.constantsr   langgraph.pregel._ior   langgraph.typesr   r   r   __all__r   r    r!   r"   TASK_NAMESPACErG   rN   rU   ra   rh   r~   rt   r   r   r   r/   r0   r1   <module>r      s   " A A    3 F ' <   0 / * . K K
U) 	 1Y 1 	   <=
.D$ !2
>>'> )> !	>
 *> '> )> %> !>BF6F-F =F %	F
 FT 
;
#r0   