
    <i$                    @   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  S SKJrJr  S SK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  \\ \\    -  \!/\\"\ \4   -  4   r#\$\S\4   \$\ S4   4   r% " S S\5      r&\" S 5      r' " S S5      r(g)    )annotations)AsyncIteratorCallableIteratorMappingSequence)cached_property)Any)RunnableRunnableConfig)merge_configs)CONFCONFIG_KEY_READ)RunnableCallableRunnableSeq)find_subgraph_pregel)ChannelWrite)PregelProtocol)CachePolicyRetryPolicy.c                     ^  \ rS rSr% SrS\S'   SrS\S'   SrS	\S
'   SSSS.         SU 4S jjjrSSS.SU 4S jjjjr	SS jr
SS jr\SSS.         SS jj5       rSrU =r$ )ChannelRead   zImplements the logic for reading state from CONFIG_KEY_READ.
Usable both as a runnable as well as a static method to call imperatively.str | list[str]channelFboolfreshNCallable[[Any], Any] | Nonemapper)r   r   tagsc               t   > [         TU ]  U R                  U R                  US SS9  X l        X0l        Xl        g )NF)funcafuncr    nametrace)super__init___read_areadr   r   r   )selfr   r   r   r    	__class__s        f/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/langgraph/pregel/_read.pyr'   ChannelRead.__init__!   s?     	++ 	 	
 
    r$   c                  > U(       a  OO[        U R                  [        5      (       a  SU R                   S3nOSSR                  U R                  5       S3n[        TU ]  XS9$ )NzChannelRead<>,r/   )
isinstancer   strjoinr&   get_name)r*   suffixr$   r+   s      r,   r6   ChannelRead.get_name4   s[    c**!$,,q1D!#((4<<"8!9;Dw22r.   c                `    U R                  X R                  U R                  U R                  S9$ N)selectr   r   do_readr   r   r   r*   _configs      r,   r(   ChannelRead._read=   s+    ||<<tzz$++  
 	
r.   c                h   #    U R                  X R                  U R                  U R                  S9$ 7fr:   r<   r>   s      r,   r)   ChannelRead._areadB   s.     ||<<tzz$++  
 	
s   02)r   r   c                    U [            [           nU(       a  U" U" X5      5      $ U" X5      $ ! [         a    [        S5      ef = f)NzWNot configured with a read functionMake sure to call in the context of a Pregel process)r   r   KeyErrorRuntimeError)r@   r;   r   r   reads        r,   r=   ChannelRead.do_readG   sY    	$Tl?;D $v-..&&  	G 	s	   / A)r   r   r   )
r   r   r   r   r   r   r    list[str] | NonereturnNoneN)r7   
str | Noner$   rM   rJ   r4   )r?   r
   r@   r   rJ   r
   )
r@   r   r;   r   r   r   r   r   rJ   r
   )__name__
__module____qualname____firstlineno____doc____annotations__r   r   r'   r6   r(   r)   staticmethodr=   __static_attributes____classcell__)r+   s   @r,   r   r      s    R E4*.F'. .2!%  	
 ,  
 &3 3 3



 
 .2''  ' 	'
 ,' 
' 'r.   r   c                    U $ rL    )inputs    r,   <lambda>rZ   \   s    ur.   c            	         \ rS rSr% SrS\S'    S\S'    S\S'    S	\S
'    S\S'    S\S'    S\S'    S\S'    S\S'    S\S'    SSSSSSSSS.                     S#S jjrS$S jr\S%S j5       r	\S&S j5       r
\S'S j5       r S(       S)S jjr S(       S)S jjr S(       S*S  jjr S(       S+S! jjrS"rg),
PregelNode_   zA node in a Pregel graph. This won't be invoked as a runnable by the graph
itself, but instead acts as a container for the components necessary to make
a PregelExecutableTask for a node.r   channelsz	list[str]triggersr   r   list[Runnable]writerszRunnable[Any, Any]boundzSequence[RetryPolicy] | Noneretry_policyCachePolicy | Nonecache_policyzSequence[str] | Noner    Mapping[str, Any] | NonemetadatazSequence[PregelProtocol]	subgraphsN)r   ra   r    rg   rb   rc   re   rh   c       
           Xl         [        U5      U l        X0l        U=(       d    / U l        Ub  UO[
        U l        Xl        [        U[        5      (       a	  U4U l
        OXl
        XPl        X`l        U
b  Xl        g U R                  [
        La.   [        U R                  5      nU(       a	  U/U l        g / U l        g / U l        g ! [         a    S n N.f = frL   )r^   listr_   r   ra   DEFAULT_BOUNDrb   re   r3   r   rc   r    rg   rh   r   	Exception)r*   r^   r_   r   ra   r    rg   rb   rc   re   rh   subgraphs               r,   r'   PregelNode.__init__   s     !X}"#/U]
(lK00!-D ,	  &NZZ}, /

; "*!#DN    s   C CCc                    0 U R                   EUEnUR                  SS 5        UR                  SS 5        UR                  SS 5        [        S0 UD6$ )Nflat_writersnodeinput_cache_keyrX   )__dict__popr\   )r*   updateattrss      r,   copyPregelNode.copy   sN    +4==+F+		.$'		&$		#T*"E""r.   c                   U R                   R                  5       n[        U5      S:  a  [        US   [        5      (       a  [        US   [        5      (       az  [	        US   R
                  US   R
                  -   S9US'   UR                  5         [        U5      S:  a2  [        US   [        5      (       a  [        US   [        5      (       a  Mz  U$ )zJGet writers with optimizations applied. Dedupes consecutive ChannelWrites.   )writes)ra   rw   lenr3   r   r}   rt   r*   ra   s     r,   rp   PregelNode.flat_writers   s     ,,##%L172;5572;55 'r{))GBK,>,>>GBK KKM L172;5572;55 r.   c                &   U R                   nU R                  [        L a  U(       d  gU R                  [        L a  [        U5      S:X  a  US   $ U R                  [        L a  [	        U6 $ U(       a  [	        U R                  /UQ76 $ U R                  $ )z3Get a runnable that combines `bound` and `writers`.Nrz   r   )rp   rb   rk   r~   r   r   s     r,   rq   PregelNode.node   sy     ##::&wZZ=(S\Q->1:ZZ=(((tzz4G44::r.   c                    U R                   [        U R                  [        5      (       a  [	        U R                  5      4$ U R                  44$ )zkGet a cache key for the input to the node.
This is used to avoid calculating the same input multiple times.)r   r3   r^   rj   tuple)r*   s    r,   rr   PregelNode.input_cache_key   sJ    
 KK$--.. $-- 
 	
 --!	
 	
r.   c                    U R                   U R                  S.nU R                  R                  " U[	        XB5      40 UD6$ N)rg   r    )rg   r    rb   invoker   r*   rY   r@   kwargsself_configs        r,   r   PregelNode.invoke   sB     48==$))&Tzz  +.
 
 	
r.   c                   #    U R                   U R                  S.nU R                  R                  " U[	        XB5      40 UD6I S h  vN $  N7fr   )rg   r    rb   ainvoker   r   s        r,   r   PregelNode.ainvoke   sO      48==$))&TZZ''+.
 
 
 	
 
s   AAAAc              +     #    U R                   U R                  S.nU R                  R                  " U[	        XB5      40 UD6 S h  vN   g  N7fr   )rg   r    rb   streamr   r   s        r,   r   PregelNode.stream   sJ      48==$))&T::$$+.
 
 	
 	
s   AAAAc                  #    U R                   U R                  S.nU R                  R                  " U[	        XB5      40 UD6  S h  vN nU7v   M   N
 g 7fr   )rg   r    rb   astreamr   )r*   rY   r@   r   r   items         r,   r   PregelNode.astream	  sX      48==$))&T**,,+.
 
 	$
 J	 
s*   AAAAAAAA)
rb   re   r^   r   rg   rc   rh   r    r_   ra   )r^   r   r_   zSequence[str]r   r   ra   zlist[Runnable] | Noner    rI   rg   rf   rb   Runnable[Any, Any] | Nonerc   z*RetryPolicy | Sequence[RetryPolicy] | Nonere   rd   rh   zSequence[PregelProtocol] | NonerJ   rK   )ru   zdict[str, Any]rJ   r\   )rJ   r`   )rJ   r   )rJ   INPUT_CACHE_KEY_TYPErL   )rY   r
   r@   RunnableConfig | Noner   
Any | NonerJ   r
   )rY   r
   r@   r   r   r   rJ   zIterator[Any])rY   r
   r@   r   r   r   rJ   zAsyncIterator[Any])rN   rO   rP   rQ   rR   rS   r'   rw   r	   rp   rq   rr   r   r   r   r   rU   rX   r.   r,   r\   r\   _   s
   * R  ('IP  /.;$$9
1&&5''% /3)-!%-1+/CG+/59&  "&   	& 
 ,&  '&  &  +&  )&  A&  )&  3&  
& P#      
 
 )-

 &
 	

 

  )-

 &
 	

 

  )-

 &
 	

 

  )- & 	
 
 r.   r\   N))
__future__r   collections.abcr   r   r   r   r   	functoolsr	   typingr
   langchain_core.runnablesr   r   langgraph._internal._configr   langgraph._internal._constantsr   r   langgraph._internal._runnabler   r   langgraph.pregel._utilsr   langgraph.pregel._writer   langgraph.pregel.protocolr   langgraph.typesr   r   r4   r   dict	READ_TYPEr   r   r   rk   r\   rX   r.   r,   <module>r      s    " P P % > 5 @ G 8 0 4 4cHSM)40#S#X2FFG	Xc3h/sCx@A B'" B'J !!45v vr.   