
    Fg                        S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J	r	J
r
  S SKJrJr  \(       a  S SKJr  S SKJr   " S	 S
5      r " S S5      rg)    )annotationsN)OrderedDict)Iterator)copydeepcopy)TYPE_CHECKINGAny)BlocksStatec                  `    \ rS rSrS rSS jrSS jrSS jrSS jrSS jr	S r
SSS	 jjrS
rg)StateHolder   c                r    SU l         [        5       U l        0 U l        [        R
                  " 5       U l        g )Ni'  )capacityr   session_datatime_last_used	threadingLocklock)selfs    d/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/gradio/state_holder.py__init__StateHolder.__init__   s)    <GM<>NN$	    c                >    Xl         Xl        UR                  U l        g N)blocksstate_holderstate_session_capacityr   r   r   s     r   
set_blocksStateHolder.set_blocks   s    "55r   c                D    [        5       U l        U R                  U5        g)z@Reset the state holder with new blocks. Used during reload mode.N)r   r   r"   r!   s     r   resetStateHolder.reset   s    'Mr   c                    XR                   ;  a"  [        U R                  5      U R                   U'   U R                  U5        [        R                  R                  5       U R                  U'   U R                   U   $ r   )r   SessionStater   updatedatetimenowr   r   
session_ids     r   __getitem__StateHolder.__getitem__"   sc    ...,8,EDj)J*2*;*;*?*?*AJ'  ,,r   c                    XR                   ;   $ r   )r   r,   s     r   __contains__StateHolder.__contains__)   s    ....r   c                   U R                      XR                  ;   a  U R                  R                  U5        [        U R                  5      U R                  :  a  U R                  R                  SS9  S S S 5        g ! , (       d  f       g = f)NF)last)r   r   move_to_endlenr   popitemr,   s     r   r)   StateHolder.update,   sa    YY...!!--j94$$%5!!))u)5	 YYs   A'A==
Bc                J    U R                    H  nU R                  USS9  M     g )NT)expired_only)r   delete_stater,   s     r   delete_all_expired_state$StateHolder.delete_all_expired_state3   s'     ++Jjt< ,r   c                   XR                   ;  a  g / nU R                   U   nUR                   HB  u  pVnU(       a	  U(       d  M  UR                  U5        UR                  UR                  5        MD     U H  nUR
                  U	 M     g r   )r   state_componentsdelete_callbackappend_id
state_data)r   r-   r:   	to_deletesession_state	componentvalueexpireds           r   r;   StateHolder.delete_state9   s}    ...	))*5)6)G)G%Ig77))%0  / *H #I((3 #r   )r   r   r   r   r   Nr   r
   )r-   strreturnr(   )r-   rK   )F)r-   rK   r:   bool)__name__
__module____qualname____firstlineno__r   r"   r%   r.   r1   r)   r<   r;   __static_attributes__ r   r   r   r      s/    %6
 -/6=
4 
4r   r   c                  P    \ rS rSrS	S jrS
S jrSS jrSS jr\SS j5       r	Sr
g)r(   F   c                    [        UR                  5      U l        0 U l        0 U l        SU l        [        R                  " SS 5      (       a  SU l        g SU l        g )NFGRADIO_IS_E2E_TEST   i  )	r   default_configblocks_configrC   
_state_ttl	is_closedosgetenvSTATE_TTL_WHEN_CLOSEDr!   s     r   r   SessionState.__init__G   sS    !&"7"78*, /66A 	"<@ 	"r   c                    U R                   R                  U   nUR                  (       aA  XR                  ;  a#  [	        [        USS 5      5      U R                  U'   U R                  U   $ U$ )NrG   )rZ   r   statefulrC   r   getattrr   keyblocks      r   r.   SessionState.__getitem__R   sY    ""))#.>>//)'/w0M'N$??3''Lr   c                   SSK Jn  U R                  R                  U   n[	        XC5      (       aF  UR
                  [        R                  R                  5       4U R                  U'   X R                  U'   g X R                  R                  U'   g Nr   r   )
gradio.componentsr   rZ   r   
isinstancetime_to_liver*   r+   r[   rC   )r   re   rG   r   rf   s        r   __setitem__SessionState.__setitem__[   ss    +""))#.e##""!!%%'$DOOC  $)OOC -2%%c*r   c                    U R                   R                  U   nUR                  (       a  XR                  ;   $ XR                   R                  ;   $ r   )rZ   r   rb   rC   rd   s      r   r1   SessionState.__contains__h   sA    ""))#.>>//)),,3333r   c              #    #    SSK Jn  U R                   H  nU R                  R                  U   n[        X15      (       d  M.  X R                  ;   d  M?  U R                  U   u  pEU R                  (       a  U R                  nU R                  U   nUU[        R                  R                  5       U-
  R                  U:  4v   M     g 7fri   )rj   r   rC   rZ   r   rk   r[   r\   r_   r*   r+   seconds)r   r   idrf   rl   
created_atrG   s          r   r?   SessionState.state_componentso   s     +//B&&--b1E%''B//,A+/??2+>(>>#'#=#=L+&&**,z9BB\Q  "s   =C	C	A5C	)r_   r[   rZ   r\   rC   NrJ   )re   intrL   r	   )re   rv   rG   r	   )re   rv   )rL   z!Iterator[tuple[State, Any, bool]])rN   rO   rP   rQ   r   r.   rm   r1   propertyr?   rR   rS   r   r   r(   r(   F   s*    	
34  r   r(   )
__future__r   r*   r]   r   collectionsr   collections.abcr   r   r   typingr   r	   gradio.blocksr
   rj   r   r   r(   rS   r   r   <module>r}      s;    "  	  # $  %$'34 34l8 8r   