
    9i                        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 d dlmZmZmZmZ dZ G d	 d
ee   eeeef         Z G d dee   eeeeeef   f         Zy)    )annotations)Sequence)AnyGeneric)Self)MISSING)BaseChannelValue)EmptyChannelError	ErrorCodeInvalidUpdateErrorcreate_error_message)	LastValueLastValueAfterFinishc                       e Zd ZU dZdZded<   dd fdZddZedd       Z	edd       Z
dd	Zdd
ZddZddZddZddZ xZS )r   zGStores the last value received, can receive at most one value per step.valueValue | Anyr   c                <    t         |   ||       t        | _        y N)super__init__r   r   selftypkey	__class__s      g/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/channels/last_value.pyr   zLastValue.__init__   s    c"
    c                "    t        |t              S r   )
isinstancer   r   r   s     r   __eq__zLastValue.__eq__   s    %++r   c                    | j                   S z,The type of the value stored in the channel.r   r   s    r   	ValueTypezLastValue.ValueType"        xxr   c                    | j                   S z/The type of the update received by the channel.r&   r'   s    r   
UpdateTypezLastValue.UpdateType'   r)   r   c                t    | j                  | j                  | j                        }| j                  |_        |S )zReturn a copy of the channel.)r   r   r   r   )r   emptys     r   copyzLastValue.copy,   s*    txx2jjr   c                p    | j                  | j                  | j                        }|t        ur||_        |S r   )r   r   r   r   r   r   
checkpointr.   s      r   from_checkpointzLastValue.from_checkpoint2   s.    txx2W$$EKr   c                    t        |      dk(  ryt        |      dk7  r4t        d| j                   dt        j                        }t        |      |d   | _        y)	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   updatezLastValue.update8   sb    v;!v;!&"488*  -D  E$DDC %S))BZ
r   c                R    | j                   t        u r
t               | j                   S r   )r   r   r   r'   s    r   getzLastValue.getE   s!    :: #%%zzr   c                &    | j                   t        uS r   )r   r   r'   s    r   is_availablezLastValue.is_availableJ   s    zz((r   c                    | j                   S r   r   r'   s    r   r2   zLastValue.checkpointM   s    zzr    r   r   r   strreturnNoner   objectrG   boolrG   ztype[Value])rG   r   )r2   r
   rG   r   )r;   zSequence[Value]rG   rK   rG   r
   rG   rK   )__name__
__module____qualname____doc__	__slots____annotations__r   r#   propertyr(   r,   r/   r3   r=   r?   rA   r2   __classcell__r   s   @r   r   r      sa    QI,    
)r   r   c                       e Zd ZU dZdZded<   ded<   dd fdZddZedd	       Z	edd
       Z
ddZddZddZddZddZddZddZ xZS )r   zrStores the last value received, but only made available after finish().
    Once made available, clears the value.)r   finishedr   r   rK   rY   c                J    t         |   ||       t        | _        d| _        y )NF)r   r   r   r   rY   r   s      r   r   zLastValueAfterFinish.__init__\   s     c"
r   c                "    t        |t              S r   )r!   r   r"   s     r   r#   zLastValueAfterFinish.__eq__a   s    %!566r   c                    | j                   S r%   r&   r'   s    r   r(   zLastValueAfterFinish.ValueTyped   r)   r   c                    | j                   S r+   r&   r'   s    r   r,   zLastValueAfterFinish.UpdateTypei   r)   r   c                b    | j                   t        u rt        S | j                   | j                  fS r   r   r   rY   r'   s    r   r2   zLastValueAfterFinish.checkpointn   s&    :: N

DMM**r   c                    | j                  | j                        }| j                  |_        |t        ur|\  |_        |_        |S r   )r   r   r   r   r   rY   r1   s      r   r3   z$LastValueAfterFinish.from_checkpoints   s:    txx(HH	W$*4'EKr   c                D    t        |      dk(  ryd| _        |d   | _        y)Nr   Fr8   T)r9   rY   r   )r   r;   s     r   r=   zLastValueAfterFinish.updatez   s&    v;!BZ
r   c                B    | j                   rd| _         t        | _        yy)NFT)rY   r   r   r'   s    r   consumezLastValueAfterFinish.consume   s    ==!DM DJr   c                P    | j                   s| j                  t        urd| _         yy)NTF)rY   r   r   r'   s    r   finishzLastValueAfterFinish.finish   s!    }}7!: DMr   c                j    | j                   t        u s| j                  s
t               | j                   S r   )r   r   rY   r   r'   s    r   r?   zLastValueAfterFinish.get   s'    :: #%%zzr   c                B    | j                   t        uxr | j                  S r   r_   r'   s    r   rA   z!LastValueAfterFinish.is_available   s    zz(:T]]:r   rC   rE   rI   rL   )rG   tuple[Value | Any, bool] | Any)r2   rh   rG   r   )r;   zSequence[Value | Any]rG   rK   rN   rM   )rO   rP   rQ   rR   rS   rT   r   r#   rU   r(   r,   r2   r3   r=   rc   re   r?   rA   rV   rW   s   @r   r   r   Q   so    . &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   tuplerK   r    r   r   <module>rs      sq    " $  " / 6  0:E5%,? @ :zF;ENKueE4K.@ @AF;r   