
    9i/              
          d dl mZ d dlmZ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 dZdd	Z G d
 dee   eee   eee   z  ee   f         Zy)    )annotations)IteratorSequence)AnyGeneric)Self)MISSING)BaseChannelValue)EmptyChannelError)Topicc              #  \   K   | D ]!  }t        |t              r|E d {    | # y 7 wN)
isinstancelist)valuesvalues     b/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/channels/topic.py_flattenr      s0      eT"K	s   ,*,c                       e Zd ZdZdZ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   zA configurable PubSub Topic.

    Args:
        typ: The type of the value stored in the channel.
        accumulate: Whether to accumulate values across steps. If `False`, the channel will be emptied after each step.
    )r   
accumulatec                ^    t         |   |       || _        t        t                  | _        y r   )super__init__r   r   r   r   )selftypr   	__class__s      r   r   zTopic.__init__$   s$    $5km    c                X    t        |t              xr |j                  | j                  k(  S r   )r   r   r   )r   r   s     r   __eq__zTopic.__eq__+   s#    %'OE,<,<,OOr   c                (    t         | j                     S )z,The type of the value stored in the channel.)r   r   r   s    r   	ValueTypezTopic.ValueType.   s     !!r   c                B    | j                   t        | j                      z  S )z/The type of the update received by the channel.)r   r   r"   s    r   
UpdateTypezTopic.UpdateType3   s     xx$txx.((r   c                    | j                  | j                  | j                        }| j                  |_        | j                  j                         |_        |S )zReturn a copy of the channel.)r   r   r   keyr   copy)r   emptys     r   r(   z
Topic.copy8   s>    txx9HH	{{'')r   c                    | j                   S r   )r   r"   s    r   
checkpointzTopic.checkpoint?   s    {{r   c                    | j                  | j                  | j                        }| j                  |_        |t        ur#t        |t              r|d   |_        |S ||_        |S )N   )r   r   r   r'   r	   r   tupler   )r   r+   r)   s      r   from_checkpointzTopic.from_checkpointB   sW    txx9HH	W$*e,)!}   *r   c                    d}| j                   s+t        | j                        }t        t                  | _        t        t        |            x}rd}| j                  j                  |       |S )NFT)r   boolr   r   r   r.   r   extend)r   r   updatedflat_valuess       r   updatezTopic.updateM   sZ    4;;'Gu+-DK 011;1GKK{+r   c                P    | j                   rt        | j                         S t        r   )r   r   r   r"   s    r   getz	Topic.getW   s    ;;$$##r   c                ,    t        | j                        S r   )r1   r   r"   s    r   is_availablezTopic.is_available]   s    DKK  r   )F)r   ztype[Value]r   r1   returnNone)r   objectr:   r1   )r:   r   )r:   r   )r:   list[Value])r+   r=   r:   r   )r   Sequence[Value | list[Value]]r:   r1   )r:   zSequence[Value])r:   r1   )__name__
__module____qualname____doc__	__slots__r   r    propertyr#   r%   r(   r+   r/   r5   r7   r9   __classcell__)r   s   @r   r   r      s`     )I$P " " ) )	$!r   r   N)r   r>   r:   zIterator[Value])
__future__r   collections.abcr   r   typingr   r   typing_extensionsr   langgraph._internal._typingr	   langgraph.channels.baser
   r   langgraph.errorsr   __all__r   r   r    r   r   <module>rO      sW    " .  " / 6 .
G!ENe!4d5kABG!r   