
    }
i                        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dS )    )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    typr   keystrreturnNonec                d    t                                          ||           t          | _        d S N)super__init__r   r   selfr   r   	__class__s      C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langgraph/channels/last_value.pyr   zLastValue.__init__   s(    c"""


    objectboolc                ,    t          |t                    S r   )
isinstancer   r    r   s     r"   __eq__zLastValue.__eq__   s    %+++r#   type[Value]c                    | j         S z,The type of the value stored in the channel.r   r    s    r"   	ValueTypezLastValue.ValueType"        xr#   c                    | j         S z/The type of the update received by the channel.r-   r.   s    r"   
UpdateTypezLastValue.UpdateType'   r0   r#   r   c                ^    |                      | j        | j                  }| j        |_        |S )zReturn a copy of the channel.)r!   r   r   r   )r    emptys     r"   copyzLastValue.copy,   s'    tx22jr#   
checkpointr
   c                f    |                      | j        | j                  }|t          ur||_        |S r   )r!   r   r   r   r   r    r7   r5   s      r"   from_checkpointzLastValue.from_checkpoint2   s0    tx22W$$$EKr#   valuesSequence[Value]c                    t          |          dk    rdS t          |          dk    r3t          d| j         dt          j                  }t          |          |d         | _        dS )	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    r;   msgs      r"   updatezLastValue.update8   s    v;;!5v;;!& E48  E  E  E$D  C %S)))BZ
tr#   c                H    | j         t          u rt                      | j         S r   )r   r   r   r.   s    r"   getzLastValue.getE   s#    :  #%%%zr#   c                    | j         t          uS r   )r   r   r.   s    r"   is_availablezLastValue.is_availableJ   s    z((r#   c                    | j         S r   r   r.   s    r"   r7   zLastValue.checkpointM   s
    zr#   r   r   r   r   r   r   r   r   r$   r   r%   r   r*   )r   r   )r7   r
   r   r   )r;   r<   r   r%   r   r
   r   r%   )__name__
__module____qualname____doc__	__slots____annotations__r   r)   propertyr/   r3   r6   r:   rE   rG   rI   r7   __classcell__r!   s   @r"   r   r      s'        QQI      , , , ,    X    X            
) ) ) )       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   r%   r[   r   r   r   r   r   r   r   c                r    t                                          ||           t          | _        d| _        d S )NF)r   r   r   r   r[   r   s      r"   r   zLastValueAfterFinish.__init__\   s/    c"""
r#   r$   c                ,    t          |t                    S r   )r'   r   r(   s     r"   r)   zLastValueAfterFinish.__eq__a   s    %!5666r#   r*   c                    | j         S r,   r-   r.   s    r"   r/   zLastValueAfterFinish.ValueTyped   r0   r#   c                    | j         S r2   r-   r.   s    r"   r3   zLastValueAfterFinish.UpdateTypei   r0   r#   tuple[Value | Any, bool] | Anyc                H    | j         t          u rt          S | j         | j        fS r   r   r   r[   r.   s    r"   r7   zLastValueAfterFinish.checkpointn   s#    :  N
DM**r#   r7   r   c                    |                      | j                  }| j        |_        |t          ur|\  |_        |_        |S r   )r!   r   r   r   r   r[   r9   s      r"   r:   z$LastValueAfterFinish.from_checkpoints   s<    tx((H	W$$*4'EKr#   r;   Sequence[Value | Any]c                X    t          |          dk    rdS d| _        |d         | _        dS )Nr   FrA   T)rB   r[   r   )r    r;   s     r"   rE   zLastValueAfterFinish.updatez   s/    v;;!5BZ
tr#   c                >    | j         rd| _         t          | _        dS dS )NFT)r[   r   r   r.   s    r"   consumezLastValueAfterFinish.consume   s$    = 	!DM DJ4ur#   c                B    | j         s| j        t          ur	d| _         dS dS )NTF)r[   r   r   r.   s    r"   finishzLastValueAfterFinish.finish   s)    } 	7!:!: DM45r#   r
   c                V    | j         t          u s| j        st                      | j         S r   )r   r   r[   r   r.   s    r"   rG   zLastValueAfterFinish.get   s*    :   #%%%zr#   c                ,    | j         t          uo| j        S r   rb   r.   s    r"   rI   z!LastValueAfterFinish.is_available   s    z(:T]:r#   rK   rL   rM   rN   )r   r`   )r7   r`   r   r   )r;   rd   r   r%   rP   rO   )rQ   rR   rS   rT   rU   rV   r   r)   rW   r/   r3   r7   r:   rE   rg   ri   rG   rI   rX   rY   s   @r"   r   r   Q   sJ        . . &INNN      
7 7 7 7    X    X+ + + +
               
; ; ; ; ; ; ; ;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   tupler%   r    r#   r"   <module>rv      sW   " " " " " " $ $ $ $ $ $         " " " " " " / / / / / / 6 6 6 6 6 6 6 6            0: : : : :E5%,? @ : : :zF; F; F; F; F;ENKueE4K.@ @AF; F; F; F; F;r#   