
    <i                        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
  S SKJrJr  S SKJrJrJrJr  Sr " S	 S
\\   \\\\4   5      r " S S\\   \\\\\\4   4   5      rg)    )annotations)Sequence)AnyGeneric)Self)MISSING)BaseChannelValue)EmptyChannelError	ErrorCodeInvalidUpdateErrorcreate_error_message)	LastValueLastValueAfterFinishc                     ^  \ rS rSr% SrSrS\S'   SSU 4S jjjrSS jr\	SS j5       r
\	SS	 j5       rSS
 jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )r      zGStores the last value received, can receive at most one value per step.valueValue | Anyr   c                :   > [         TU ]  X5        [        U l        g N)super__init__r   r   selftypkey	__class__s      m/home/dmtnaga/Documents/work/airagagent/rag_env/lib/python3.13/site-packages/langgraph/channels/last_value.pyr   LastValue.__init__   s    "
    c                "    [        U[        5      $ r   )
isinstancer   r   r   s     r   __eq__LastValue.__eq__   s    %++r!   c                    U R                   $ z,The type of the value stored in the channel.r   r   s    r   	ValueTypeLastValue.ValueType"        xxr!   c                    U R                   $ z/The type of the update received by the channel.r)   r*   s    r   
UpdateTypeLastValue.UpdateType'   r-   r!   c                t    U R                  U R                  U R                  5      nU R                  Ul        U$ )zReturn a copy of the channel.)r   r   r   r   )r   emptys     r   copyLastValue.copy,   s*    txx2jjr!   c                p    U R                  U R                  U R                  5      nU[        La  Xl        U$ r   )r   r   r   r   r   r   
checkpointr3   s      r   from_checkpointLastValue.from_checkpoint2   s,    txx2W$$Kr!   c                    [        U5      S:X  a  g[        U5      S:w  a1  [        SU R                   S3[        R                  S9n[        U5      eUS   U l        g)	Nr   F   zAt key 'zW': Can receive only one value per step. Use an Annotated key to handle multiple values.)message
error_codeT)lenr   r   r   INVALID_CONCURRENT_GRAPH_UPDATEr   r   )r   valuesmsgs      r   updateLastValue.update8   sb    v;!v;!&"488*  -D  E$DDC %S))BZ
r!   c                T    U R                   [        L a
  [        5       eU R                   $ r   )r   r   r   r*   s    r   getLastValue.getE   s!    :: #%%zzr!   c                &    U R                   [        L$ r   )r   r   r*   s    r   is_availableLastValue.is_availableJ   s    zz((r!   c                    U R                   $ r   r   r*   s    r   r8   LastValue.checkpointM   s    zzr!    r   r   r   strreturnNoner   objectrR   boolrR   ztype[Value])rR   r   )r8   r
   rR   r   )rB   zSequence[Value]rR   rV   rR   r
   rR   rV   )__name__
__module____qualname____firstlineno____doc__	__slots____annotations__r   r%   propertyr+   r0   r4   r9   rD   rG   rJ   r8   __static_attributes____classcell__r   s   @r   r   r      sk    QI ,    
) r!   r   c                     ^  \ rS rSr% SrSrS\S'   S\S'   SSU 4S jjjrSS	 jr\	SS
 j5       r
\	SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )r   Q   znStores the last value received, but only made available after finish().
Once made available, clears the value.)r   finishedr   r   rV   rg   c                H   > [         TU ]  X5        [        U l        SU l        g )NF)r   r   r   r   rg   r   s      r   r   LastValueAfterFinish.__init__\   s    "
r!   c                "    [        U[        5      $ r   )r#   r   r$   s     r   r%   LastValueAfterFinish.__eq__a   s    %!566r!   c                    U R                   $ r(   r)   r*   s    r   r+   LastValueAfterFinish.ValueTyped   r-   r!   c                    U R                   $ r/   r)   r*   s    r   r0   LastValueAfterFinish.UpdateTypei   r-   r!   c                d    U R                   [        L a  [        $ U R                   U R                  4$ r   r   r   rg   r*   s    r   r8   LastValueAfterFinish.checkpointn   s&    :: N

DMM**r!   c                    U R                  U R                  5      nU R                  Ul        U[        La  Uu  Ul        Ul        U$ r   )r   r   r   r   r   rg   r7   s      r   r9   $LastValueAfterFinish.from_checkpoints   s:    txx(HH	W$*4'EKr!   c                F    [        U5      S:X  a  gSU l        US   U l        g)Nr   Fr?   T)r@   rg   r   )r   rB   s     r   rD   LastValueAfterFinish.updatez   s&    v;!BZ
r!   c                L    U R                   (       a  SU l         [        U l        gg)NFT)rg   r   r   r*   s    r   consumeLastValueAfterFinish.consume   s    ==!DM DJr!   c                \    U R                   (       d  U R                  [        La  SU l         gg)NTF)rg   r   r   r*   s    r   finishLastValueAfterFinish.finish   s!    }}7!: DMr!   c                v    U R                   [        L d  U R                  (       d
  [        5       eU R                   $ r   )r   r   rg   r   r*   s    r   rG   LastValueAfterFinish.get   s'    :: #%%zzr!   c                L    U R                   [        L=(       a    U R                  $ r   rq   r*   s    r   rJ   !LastValueAfterFinish.is_available   s    zz(:T]]:r!   )rg   r   rN   rP   rT   rW   )rR   tuple[Value | Any, bool] | Any)r8   r   rR   r   )rB   zSequence[Value | Any]rR   rV   rY   rX   )rZ   r[   r\   r]   r^   r_   r`   r   r%   ra   r+   r0   r8   r9   rD   rx   r{   rG   rJ   rb   rc   rd   s   @r   r   r   Q   sy    . &IN 
7    +

; ;r!   r   N)
__future__r   collections.abcr   typingr   r   typing_extensionsr   langgraph._internal._typingr   langgraph.channels.baser	   r
   langgraph.errorsr   r   r   r   __all__r   tuplerV   r    r!   r   <module>r      sq    " $  " / 6  0:E5%,? @ :zF;ENKueE4K.@ @AF;r!   