
    (GgC              	           d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZmZmZmZ  G d dee	   ee	e	e	f         Zy)	    )AnyGenericSequenceType)Self)BaseChannelValue)MISSING)EmptyChannelError	ErrorCodeInvalidUpdateErrorcreate_error_messagec                        e Zd ZdZdZddededdf fdZdede	fd	Z
edee   fd
       Zedee   fd       ZdefdZdedefdZdee   de	fdZdefdZde	fdZdefdZ xZS )	LastValuezGStores the last value received, can receive at most one value per step.valuetypkeyreturnNc                 <    t         |   ||       t        | _        y N)super__init__r
   r   )selfr   r   	__class__s      z/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/channels/last_value.pyr   zLastValue.__init__   s    c"
    r   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   
checkpointc                 p    | j                  | j                  | j                        }|t        ur||_        |S r   )r   r   r   r
   r   )r   r+   r)   s      r   from_checkpointzLastValue.from_checkpoint+   s.    txx2W$$EKr   valuesc                     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   r.   msgs      r   updatezLastValue.update1   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.get>   s!    :: #%%zzr   c                 &    | j                   t        uS r   )r   r
   r#   s    r   is_availablezLastValue.is_availableC   s    zz((r   c                     | j                   S r   r   r#   s    r   r+   zLastValue.checkpointF   s    zzr   ) )__name__
__module____qualname____doc__	__slots__r   strr   objectboolr    propertyr   r	   r$   r'   r   r*   r-   r   r7   r9   r;   r+   __classcell__)r   s   @r   r   r      s    QIC c 4 ,F ,t , 4;   DK  d % D Xe_  U 
)d )E r   r   N)typingr   r   r   r   typing_extensionsr   langgraph.channels.baser   r	   langgraph.constantsr
   langgraph.errorsr   r   r   r   r    r   r   <module>rN      s<    / / " 6 ' 8E5%,? @ 8r   