
    Pi                        d dl mZ d dlZd dlZd dl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 erd dlmZ d dlmZ  G d	 d
          Z G d d          ZdS )    )annotationsN)OrderedDict)Iterator)copydeepcopy)TYPE_CHECKINGAny)BlocksStatec                  D    e Zd Zd ZddZdd	Zdd
ZddZd ZdddZ	dS )StateHolderc                x    d| _         t                      | _        i | _        t	          j                    | _        d S )Ni'  )capacityr   session_datatime_last_used	threadingLocklock)selfs    g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gradio/state_holder.py__init__zStateHolder.__init__   s0    <GMM<>N$$			    blocksr
   c                :    || _         | |_        |j        | _        d S N)r   state_holderstate_session_capacityr   r   r   s     r   
set_blockszStateHolder.set_blocks   s    "5r   
session_idstrreturnSessionStatec                    || j         vrt          | j                  | j         |<   |                     |           t          j                                        | j        |<   | j         |         S r   )r   r$   r   updatedatetimenowr   r   r!   s     r   __getitem__zStateHolder.__getitem__   sc    T...,8,E,EDj)J*2*;*?*?*A*AJ' ,,r   c                    || j         v S r   )r   r)   s     r   __contains__zStateHolder.__contains__#   s    T...r   c                    | j         5  || j        v r| j                            |           t          | j                  | j        k    r| j                            d           d d d            d S # 1 swxY w Y   d S )NF)last)r   r   move_to_endlenr   popitemr)   s     r   r&   zStateHolder.update&   s    Y 	6 	6T...!--j9994$%%55!))u)555		6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   AA11A58A5c                H    | j         D ]}|                     |d           d S )NT)expired_only)r   delete_stater)   s     r   delete_all_expired_statez$StateHolder.delete_all_expired_state-   s<     + 	= 	=Jjt<<<<	= 	=r   Fr3   boolc                    || j         vrd S g }| j         |         }|j        D ]9\  }}}|r|r/|                    |           |                    |j                   :|D ]
}|j        |= d S r   )r   state_componentsdelete_callbackappend_id
state_data)r   r!   r3   	to_deletesession_state	componentvalueexpireds           r   r4   zStateHolder.delete_state3   s    T...F	)*5)6)G 	0 	0%Iug 07 0))%000  ///" 	4 	4I(33	4 	4r   Nr   r
   )r!   r"   r#   r$   )r!   r"   )F)r!   r"   r3   r6   )
__name__
__module____qualname__r   r    r*   r,   r&   r5   r4    r   r   r   r      s        % % %6 6 6 6
- - - -/ / / /6 6 6 6= = =
4 
4 
4 
4 
4 
4 
4r   r   c                  n    e Zd ZddZddZdd
ZddZddZddZe	dd            Z
e	dd            ZdS )r$   r   r
   c                    t          j                   _         fd j        j                                        D              _        i  _        i  _        d _        t          j
        dd           rdnd _        d S )Nc                b    i | ]+\  }}|j         v |j                            |g |          ,S rF   )r   blocks_configconfig_for_block).0kvr   r   s      r   
<dictcomp>z)SessionState.__init__.<locals>.<dictcomp>E   sK     
 
 
1FM!! t!221b!<<!!!r   FGRADIO_IS_E2E_TEST   i  )r   default_configrJ   r   itemsconfig_valuesr<   
_state_ttl	is_closedosgetenvSTATE_TTL_WHEN_CLOSEDr   s   ``r   r   zSessionState.__init__A   s    !&"788
 
 
 
 
*17799
 
 

 +- /66@AAD 	"""r   keyintr#   r	   c                    | j         j        |         }|j        r<|| j        vr&t	          t          |dd                     | j        |<   | j        |         S |S )Nr@   )rJ   r   statefulr<   r   getattrr   rZ   blocks      r   r*   zSessionState.__getitem__S   s[    ")#.> 	$/))'/w0M0M'N'N$?3''Lr   r@   c                N   ddl m} | j        j                            |          }t          ||          r8|j        t          j                                        f| j	        |<   || j
        |<   n|| j        j        |<   |r&| j                            |g |          | j        |<   d S d S Nr   r   )gradio.componentsr   rJ   r   get
isinstancetime_to_liver'   r(   rU   r<   rK   rT   )r   rZ   r@   r   r`   s        r   __setitem__zSessionState.__setitem__\   s    ++++++")--c22eU## 	3"!%%''$DOC  $)DOC  -2D%c* 	&*&8&I&IR' 'Ds###	 	r   c                n    | |         ,| j                             |g | |                   | j        |<   d S d S r   )rJ   rK   rT   )r   rZ   s     r   _update_configzSessionState._update_configm   sE    9 &*&8&I&IRc' 'Ds### ! r   c                    || j         vr4| j                            |g | j        j        |                   | j         |<   d| j         |         v r|| j         |         d         d<   d S d S )Npropsr@   )rT   rJ   rK   r   )r   rZ   r@   s      r   _update_value_in_configz$SessionState._update_value_in_configs   s|    d(((&*&8&I&IR+237' 'Ds# d(---8=Ds#G,W555 .-r   c                    | j         j                            |          }|dS |j        r	|| j        v S || j         j        v S )NF)rJ   r   rd   r]   r<   r_   s      r   r,   zSessionState.__contains__{   sM    ")--c22=5> 	4$/))$,333r   Iterator[dict]c              #  T   K   | j                                         D ]\  }}|r|V  d S r   )rT   rS   )r   _configs      r   
componentszSessionState.components   sD      +1133 	 	IAv 	 	r   !Iterator[tuple[State, Any, bool]]c              #    K   ddl m} g }| j        D ]}|| j        j        vr|                    |           &| j        j        |         }t          ||          rc|| j        v rZ| j        |         \  }}| j        r| j	        }| j        |         }||t          j
                                        |z
  j        |k    fV  |D ]
}| j        |= d S rb   )rc   r   r<   rJ   r   r:   re   rU   rV   rY   r'   r(   seconds)r   r   state_ids_to_deleter;   r`   rf   
created_atr@   s           r   r8   zSessionState.state_components   s     ++++++ ? 	 	C$,333#**3///&-c2E%'' 	C4?,B,B+/?3+?(j> >#'#=L,&**,,z9B\Q   
 ' 	% 	%C$$	% 	%r   NrB   )rZ   r[   r#   r	   )rZ   r[   r@   r	   )rZ   r[   )r#   rn   )r#   rs   )rC   rD   rE   r   r*   rg   ri   rl   r,   propertyrr   r8   rF   r   r   r$   r$   @   s        
 
 
 
$      "   > > > >4 4 4 4    X
 % % % X% % %r   r$   )
__future__r   r'   rW   r   collectionsr   collections.abcr   r   r   typingr   r	   gradio.blocksr
   rc   r   r   r$   rF   r   r   <module>r~      s   " " " " " "  				     # # # # # # $ $ $ $ $ $         % % % % % % % % ($$$$$$''''''-4 -4 -4 -4 -4 -4 -4 -4``% `% `% `% `% `% `% `% `% `%r   