
    <i                    *   S SK Jr  S SKJrJr  S SKJrJrJrJ	r	  S SK
JrJr  S SK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  \\\\\4      /S
4   r\" S\S9r\" 5       r\" 5       r " S S\5      r  " S S\5      r! " S S\5      r"    SS jr#g
)    )annotations)CallableSequence)Any
NamedTupleTypeVarcast)RunnableRunnableConfig)CONFCONFIG_KEY_SENDTASKS)RunnableCallable)MISSING)InvalidUpdateError)SendNR)boundc                  P    \ rS rSr% S\S'    \rS\S'    SrS\S'    S	rS
\S'   Sr	g	)ChannelWriteEntry   strchannelr   valueFbool	skip_noneNzCallable | Nonemapper )
__name__
__module____qualname____firstlineno____annotations__PASSTHROUGHr   r   r   __static_attributes__r       g/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/langgraph/pregel/_write.pyr   r      s1    L#E3:It7"FO"9r&   r   c                  @    \ rS rSr% S\S'    \rS\S'    SrS\S'   S	rg)
ChannelWriteTupleEntry%   z1Callable[[Any], Sequence[tuple[str, Any]] | None]r   r   r   N,Sequence[tuple[str, Any, str | None]] | Nonestaticr   )	r   r    r!   r"   r#   r$   r   r,   r%   r   r&   r'   r)   r)   %   s&    ==0E3:;?F8?8r&   r)   c                     ^  \ rS rSr% Sr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 jj5       r\
SS j5       r\
    SS j5       r\
 S     SS jj5       rSrU =r$ )ChannelWrite.   zImplements the logic for sending writes to CONFIG_KEY_SEND.
Can be used as a runnable or as a static method to call imperatively.z7list[ChannelWriteEntry | ChannelWriteTupleEntry | Send]writesN)tagsc                  > [         TU ]  U R                  U R                  S USS9  [	        [
        [        [        -  [        -     U5      U l	        g )NF)funcafuncnamer1   trace)
super__init___write_awriter	   listr   r)   r   r0   )selfr0   r1   	__class__s      r'   r8   ChannelWrite.__init__5   sR     	,, 	 	
 "%;;dBCV
r&   r5   c               x   > U(       d&  SSR                  S U R                   5       5       S3n[        TU ]  XS9$ )NzChannelWrite<,c              3     #    U  HI  n[        U[        5      (       a  UR                  O"[        U[        5      (       a  S OUR                  v   MK     g7f)z...N)
isinstancer   r   r)   node).0ws     r'   	<genexpr>(ChannelWrite.get_name.<locals>.<genexpr>H   sl       ,p  do  _`AGX9Y9YAIIhrst  wM  iN  iN_d  TU  TZ  TZ  -Z  dos   AA>r?   )joinr0   r7   get_name)r<   suffixr5   r=   s      r'   rK   ChannelWrite.get_nameF   s^    "388  ,p  dh  do  do  ,p  $p  #q  qr  sDw22r&   c           	        U R                    Vs/ s H  n[        U[        5      (       a>  UR                  [        L a+  [        UR
                  XR                  UR                  5      O?[        U[        5      (       a)  UR                  [        L a  [        UR                  U5      OUPM     nnU R                  UU5        U$ s  snf N
r0   rC   r   r   r$   r   r   r   r)   do_writer<   inputconfigwriter0   s        r'   r9   ChannelWrite._writeK   s     
 %	 %!233{8R emmUOOU\\R %!788U[[K=W (e<	
 % 	 
 		
 
s   BCc           	       #    U R                    Vs/ s H  n[        U[        5      (       a>  UR                  [        L a+  [        UR
                  XR                  UR                  5      O?[        U[        5      (       a)  UR                  [        L a  [        UR                  U5      OUPM     nnU R                  UU5        U$ s  snf 7frO   rP   rR   s        r'   r:   ChannelWrite._awriteZ   s      
 %	 %!233{8R emmUOOU\\R %!788U[[K=W (e<	
 % 	 
 		
 
s   C	BC.C	c                   U H  n[        U[        5      (       aD  UR                  [        :X  a  [	        S5      eUR
                  [        L a  U(       d  [	        S5      e[        U[        5      (       d  Ms  UR
                  [        L d  M  U(       a  M  [	        S5      e   U [           [           nU" [        U5      5        g )Nz*Cannot write to the reserved channel TASKSz"PASSTHROUGH value must be replaced)rC   r   r   r   r   r   r$   r)   r   r   _assemble_writes)rT   r0   allow_passthroughrF   rU   s        r'   rQ   ChannelWrite.do_writei   s     A!.//99%,D  77k)2C,-QRR!34477k)2C2C,-QRR  "$<8v&'r&   c                ^    [        U [        5      =(       d    [        U S[        5      [        L$ )zFUsed by PregelNode to distinguish between writers and other runnables._is_channel_writer)rC   r.   getattrr   )runnables    r'   	is_writerChannelWrite.is_writer   s+     x. Ox!5w?wN	
r&   c                   [        U [        5      (       af  U R                   VVs/ s HC  n[        U[        5      (       d  M  UR                  (       d  M-  UR                    H  nUPM     ME     snn=(       d    S$ [        U S[        5      =n(       a  U[        La  [        [        [        [        [        -  [        S-  4      U5      nU VVs/ s H  u  pEUPM	     nnnU VVs/ s H  u  pWUPM	     nnn[        [        U5      U5       V	Vs/ s H  u  p/ U	QUP7PM     snn	$ ggs  snnf s  snnf s  snnf s  snn	f )zEUsed to get conditional writes a writer declares for static analysis.Nr^   )rC   r.   r0   r)   r,   r_   r   r	   r   tupler   r   r   ziprZ   )
r`   entryrF   r0   e_entrieslalabelsts
             r'   get_static_writesChannelWrite.get_static_writes   s1   
 h-- &__,Ee%;< AF  A  & , 
  x)=wGGVGW$U#4t#;S4Z#GHI *0010*01&"&1.12B72KV.TU.TUQ!R.TUU % H 11Us#   D(D(D(D.&D4D:c                4    [         R                  U SU5        U $ )zUsed to mark a runnable as a writer, so that it can be detected by is_writer.
Instances of ChannelWrite are automatically marked as writers.
Optionally, a list of declared writes can be passed for static analysis.r^   )object__setattr__)r`   r,   s     r'   register_writerChannelWrite.register_writer   s     	8%96Br&   )r0   )r0   ;Sequence[ChannelWriteEntry | ChannelWriteTupleEntry | Send]r1   zSequence[str] | NonerO   )rL   
str | Noner5   ru   returnr   )rS   r   rT   r   rv   None)T)rT   r   r0   rt   r[   r   rv   rw   )r`   r
   rv   r   )r`   r
   rv   r+   )r`   r   r,   z<Sequence[tuple[ChannelWriteEntry | Send, str | None]] | Nonerv   r   )r   r    r!   r"   __doc__r#   r8   rK   r9   r:   staticmethodrQ   ra   rm   rr   r%   __classcell__)r=   s   @r'   r.   r.   .   s    M DC= &*	
K
 #	
 
"3 3 3
  #'((K(  ( 
	( (, 
 
 VV	5V V*  PT

L
 

 
r&   r.   c                >   / nU  GH  n[        U[        5      (       a  UR                  [        U45        M2  [        U[        5      (       a7  UR                  UR                  5      =n(       a  UR                  U5        M|  M~  [        U[        5      (       au  UR
                  b  UR                  UR                  5      OUR                  nU[        L a  M  UR                  (       a  Uc  M  UR                  UR                  U45        GM  [        SU 35      e   U$ )z+Assembles the writes into a list of tuples.zInvalid write entry: )rC   r   appendr   r)   r   r   extendr   
SKIP_WRITEr   r   
ValueError)r0   tuplesrF   wwr   s        r'   rZ   rZ      s     %'FaMM5!*%122XXagg&&r&b! ',--)*)=AHHQWW%177E
"{{u}MM199e,-4QC899  Mr&   )r0   rt   rv   zlist[tuple[str, Any]])$
__future__r   collections.abcr   r   typingr   r   r   r	   langchain_core.runnablesr
   r   langgraph._internal._constantsr   r   r   langgraph._internal._runnabler   langgraph._internal._typingr   langgraph.errorsr   langgraph.typesr   rd   r   	TYPE_SENDr   rp   r~   r$   r   r)   r.   rZ   r   r&   r'   <module>r      s    " .  > G G : / /  huS#X/0$67	Cx X
h:
 :9Z 9{# {|Gr&   