
    A'h              	           d dl mZ d dl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  G d dee	   ee	e	e	f         Zy	)
    )Sequence)AnyGeneric)Self)BaseChannelValue)MISSING)EmptyChannelErrorInvalidUpdateErrorc                        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 )EphemeralValuezJStores the value received in the step immediately preceding, clears after.)valueguardtypr   returnNc                 H    t         |   |       || _        t        | _        y N)super__init__r   r	   r   )selfr   r   	__class__s      i/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/langgraph/channels/ephemeral_value.pyr   zEphemeralValue.__init__   s    

    r   c                 X    t        |t              xr |j                  | j                  k(  S r   )
isinstancer   r   )r   r   s     r   __eq__zEphemeralValue.__eq__   s!    %0NU[[DJJ5NNr   c                     | j                   S )z,The type of the value stored in the channel.r   r   s    r   	ValueTypezEphemeralValue.ValueType        xxr   c                     | j                   S )z/The type of the update received by the channel.r   r   s    r   
UpdateTypezEphemeralValue.UpdateType   r!   r   c                     | j                  | j                  | j                        }| j                  |_        | j                  |_        |S )zReturn a copy of the channel.)r   r   r   keyr   )r   emptys     r   copyzEphemeralValue.copy"   s5    txx4HH	jjr   
checkpointc                     | j                  | j                  | j                        }| j                  |_        |t        ur||_        |S r   )r   r   r   r%   r	   r   )r   r(   r&   s      r   from_checkpointzEphemeralValue.from_checkpoint)   s9    txx4HH	W$$EKr   valuesc                     t        |      dk(  r| j                  t        urt        | _        yyt        |      dk7  r%| j                  rt	        d| j
                   d      |d   | _        y)Nr   TF   zAt key 'z': EphemeralValue(guard=True) can receive only one value per step. Use guard=False if you want to store any one of multiple values.)lenr   r	   r   r   r%   )r   r+   s     r   updatezEphemeralValue.update0   sm    v;!zz($
v;!

$488*  %h  i  BZ
r   c                 R    | j                   t        u r
t               | j                   S r   )r   r	   r
   r   s    r   getzEphemeralValue.get?   s!    :: #%%zzr   c                 &    | j                   t        uS r   )r   r	   r   s    r   is_availablezEphemeralValue.is_availableD   s    zz((r   c                     | j                   S r   )r   r   s    r   r(   zEphemeralValue.checkpointG   s    zzr   )T)__name__
__module____qualname____doc__	__slots__r   boolr   objectr   propertytyper   r    r#   r   r'   r*   r   r0   r2   r4   r(   __classcell__)r   s   @r   r   r      s    T"IC   
OF Ot O 4;   DK  d % D Xe_  U 
)d )E r   r   N)collections.abcr   typingr   r   typing_extensionsr   langgraph.channels.baser   r   langgraph.constantsr	   langgraph.errorsr
   r   r    r   r   <module>rG      s5    $  " 6 ' B=WU^[u1D%E =r   