
    (Ggy                         d dl Zd dlmZmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ eeef   Zeeef   Z eee	e   f   Z!d
 Z" G d dee e!f         Z#y)    N)asynccontextmanagercontextmanager)AnyAsyncIteratorIteratorOptionalSequenceType)NotRequiredRequiredSelf)CONF)InvalidUpdateError)ChannelKeyPlaceholderChannelTypePlaceholderConfiguredManagedValueWritableManagedValue)PutOp)LoopProtocolc                     t        | d      rt        | j                        S t        | d      r0| j                  t        t        fv rt        | j
                  d         S | S )z=Strips Annotated, Required and NotRequired from a given type.
__origin__r   )hasattr_strip_extrasr   r   r   __args__)ts    {/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/managed/shared_value.pyr   r   !   sM    q,Q\\**q,ALLX{4K$KQZZ]++H    c            
           e Zd Zededefd       Zeede	de
dee   f fd              Zeede	de
dee   f fd              Zde	dee
   ded	edd
f
 fdZdefdZdee   dee   fdZdee   dd
fdZdee   dd
fdZ xZS )SharedValuescopereturnc                 :    t        t        | t        t        d      S )N)r    keytyp)r   r   r   r   )r    s    r   onzSharedValue.on,   s     %,-
 	
r   loopkwargsc              +      K   t        |   |fi |5 }|j                  O|j                  j                  |j                        }|D ci c]  }|j
                  |j                   c}|_        | d d d        y c c}w # 1 sw Y   y xY wwN)superenterstoresearchnsr#   valueclsr&   r'   r/   savedit	__class__s         r   r+   zSharedValue.enter7   s      W]4*6* 	ezz%

))%((3:?@Brvvrxx/@K		 	 A	 	s.   B6B
A=(B4	B=BBBc                p  K   t        |   |fi |4 d {   }|j                  W|j                  j                  |j                         d {   }|D ci c]  }|j
                  |j                   c}|_        | d d d       d {    y 7 }7 Fc c}w 7 # 1 d {  7  sw Y   y xY wwr)   )r*   aenterr,   asearchr.   r#   r/   r0   s         r   r6   zSharedValue.aenter@   s      7>$1&1 	 	Uzz%"jj00:::?@Brvvrxx/@K		 	 	:@	 	 	 	sh   B6BB65B!BB!B8B!B6BB6B!B!B6!B3'B*(B3/B6r$   r#   Nc                   t         |   |       t        |      x}rF|t        t        j
                  j                  t        j
                  j                  fvrt        d      || _	        i | _
        | j                  j                  y | j                  j                  t           j                  | j                        x}rd|||f| _        y t        d| d      )NzSharedValue must be a dictscopedzScope z0 for shared state key not in config.configurable)r*   __init__r   dictcollectionsabcMappingMutableMapping
ValueErrorr    r/   r&   r,   configr   getr.   )selfr&   r$   r    r#   scope_valuer4   s         r   r:   zSharedValue.__init__I   s     	$$3$''.. 
 !!=>>

99??" II,,T266tzzBB[B[9DGOP r   c                     | j                   S r)   )r/   )rC   s    r   __call__zSharedValue.__call___   s    zzr   valuesc           	      r   g }|D ]  }|j                         D ]  \  }}|C|| j                  v s| j                  |= |j                  t        | j                  |d              Kt        |t              st        d      || j                  |<   |j                  t        | j                  ||               |S )NzReceived a non-dict value)itemsr/   appendr   r.   
isinstancer;   r   )rC   rG   writesvvkvs         r   _process_updatezSharedValue._process_updateb   s      
	8B
 	819DJJ JJqMeDGGQ&=>#At,,-HII$%DJJqMMM%A"67	8
	8 r   c                     | j                   j                  | j                  |       y | j                   j                  j                  | j                  |            S r)   )r&   r,   rP   batch)rC   rG   s     r   updatezSharedValue.updateq   sB    99??"  (99??(()=)=f)EFFr   rL   c                    K   | j                   j                  | j                  |       y | j                   j                  j                  | j                  |             d {   S 7 wr)   )r&   r,   rP   abatch)rC   rL   s     r   aupdatezSharedValue.aupdatew   sL     99??"  (//0D0DV0LMMMMs   A A)"A'#A))__name__
__module____qualname__staticmethodstrr   r%   classmethodr   r   r   r   r   r+   r   r   r6   r
   r:   ValuerF   r	   Updatelistr   rP   rS   rV   __classcell__)r4   s   @r   r   r   +   s   
# 
0 
 
   $      d@S    *.s)<?FI	,% hv&6 4; GXf- G$ GNHV$4 N Nr   r   )$collections.abcr<   
contextlibr   r   typingr   r   r   r   r	   r
   typing_extensionsr   r   r   langgraph.constantsr   langgraph.errorsr   langgraph.managed.baser   r   r   r   langgraph.store.baser   langgraph.typesr   r;   r[   Vr]   r^   r   r    r   r   <module>rl      s     :  : 9 $ /  ' (cN 	S!V	c8A;	PN&uf}5 PNr   