ó
    ‚¤jÙ  ã                  ó®   • 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                  óV   • \ rS rSrS 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    Ú¡C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\gradio/state_holder.pyÚ__init__ÚStateHolder.__init__   s)   € ØˆŒÜ<G»MˆÔØ<>ˆÔÜ—N’NÓ$ˆ�	ó    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                óú   • 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¸¿¹Ó,EˆD×Ñ˜jÑ)Ø�‰�JÔÜ*2×*;Ñ*;×*?Ñ*?Ó*Aˆ×Ñ˜JÑ'Ø× Ñ  Ñ,Ð,r   c                ó   • XR                   ;   $ r   )r   r(   s     r   Ú__contains__ÚStateHolder.__contains__#   s   € Ø×.Ñ.Ñ.Ð.r   c                óX  • U R                      XR                  ;   a  U R                  R                  U5        [        U R                  5      U R                  :”  a7  U R                  R                  SS9u  p#U R                  R                  US 5        S S S 5        g ! , (       d  f       g = f)NF)Úlast)r   r   Úmove_to_endÚlenr   Úpopitemr   Úpop)r   r)   ÚevictedÚ_s       r   r%   ÚStateHolder.update&   s{   € Ø�Y‹YØ×.Ñ.Ó.Ø×!Ñ!×-Ñ-¨jÔ9Ü�4×$Ñ$Ó%¨¯©Ó5Ø!×.Ñ.×6Ñ6¸EÐ6ÐB‘
�Ø×#Ñ#×'Ñ'¨°Ô6÷ �YŽYús   �BBÂ
B)c                ó\   • [        U R                  5       H  nU R                  USS9  M     g )NT)Úexpired_only)Úlistr   Údelete_stater(   s     r   Údelete_all_expired_stateÚ$StateHolder.delete_all_expired_state.   s,   € ô ˜t×0Ñ0Ö1ˆJØ×Ñ˜j°tÐÓ<ò 2r   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)   r9   Ú	to_deleteÚsession_stateÚ	componentÚvalueÚexpireds           r   r;   ÚStateHolder.delete_state4   s}   € Ø×.Ñ.Ó.ØØˆ	Ø×)Ñ)¨*Ñ5ˆØ)6×)GÔ)GÑ%ˆI˜gÞ§7 7Ø×)Ñ)¨%Ô0Ø× Ñ  §¡Ö/ñ *Hó #ˆIØ×(Ñ(¨Ò3ò #r   )r   r   r   r   r   N©r   r
   )r)   ÚstrÚreturnr$   )r)   rK   )F)r)   rK   r9   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r!   r*   r-   r%   r<   r;   Ú__static_attributes__© r   r   r   r      s*   † ò%ô6ô
-ô/ô7ò=÷
4ñ 
4r   r   c                  ó†   • \ rS rSrSS jrSS jrSSS jjrSS jrSS jrSS jr	SS	 jr
\SS
 j5       r\SS j5       rSrg)r$   éA   c           
     ó˜  • [        UR                  5      U l        U R                  R                  R	                  5        VVs0 s H3  u  p#X!R                  ;   d  M  X R                  R                  U/ U5      _M5     snnU l        0 U l        0 U l        SU l	        [        R                  " SS 5      (       a  SU l        g SU l        g s  snnf )NFÚGRADIO_IS_E2E_TESTé   i  )r   Údefault_configÚblocks_configr   ÚitemsÚconfig_for_blockÚconfig_valuesrC   Ú
_state_ttlÚ	is_closedÚosÚgetenvÚSTATE_TTL_WHEN_CLOSED)r   r   ÚkÚvs       r   r   ÚSessionState.__init__B   s·   € Ü! &×"7Ñ"7Ó8ˆÔð
 ×*Ñ*×1Ñ1×7Ñ7Ô9ô
â9‘�Ø—M‘MÑ!ó =ˆA×!Ñ!×2Ñ2°1°b¸!Ó<Ò<Ù9ò
ˆÔð
 +-ˆŒØˆŒØˆŒô —’Ð/°×6Ñ6ˆAð 	Õ"Ø<@ð 	Õ"ùó
s   ÁCÁ!Cc                ó  • U R                   R                  U   nUR                  (       aZ  XR                  ;  a<  [	        USS 5      n[        U5      (       a  U" 5       n[        U5      U R                  U'   U R                  U   $ U$ )NrG   )rZ   r   ÚstatefulrC   ÚgetattrÚcallabler   )r   ÚkeyÚblockrG   s       r   r*   ÚSessionState.__getitem__T   sm   € Ø×"Ñ"×)Ñ)¨#Ñ.ˆØ�>�>ØŸ/™/Ó)Ü  w°Ó5�Ü˜E—?‘?Ù!›G�EÜ'/°£�—‘ Ñ$Ø—?‘? 3Ñ'Ð'àˆLr   Nc                ó   • X;   a  X   $ U$ r   rS   )r   rj   Údefaults      r   ÚgetÚSessionState.get`   s   € Ø‹;Ø‘9ÐØˆr   c                óš  • SSK Jn  U R                  R                  R	                  U5      n[        XC5      (       aF  UR                  [        R                  R                  5       4U R                  U'   X R                  U'   OX R                  R                  U'   U(       a+  U R                  R                  U/ U5      U R                  U'   g g ©Nr   r   )Úgradio.componentsr   rZ   r   ro   Ú
isinstanceÚtime_to_liver&   r'   r^   rC   r\   r]   )r   rj   rG   r   rk   s        r   Ú__setitem__ÚSessionState.__setitem__e   s©   € Ý+à×"Ñ"×)Ñ)×-Ñ-¨cÓ2ˆÜ�e×#Ñ#à×"Ñ"Ü×!Ñ!×%Ñ%Ó'ð$ˆD�O‰O˜CÑ ð $)�O‰O˜CÒ à-2×Ñ×%Ñ% cÑ*ÞØ&*×&8Ñ&8×&IÑ&IØ�R˜ó'ˆD×Ñ˜sÒ#ð r   c                óh   • X   b-  U R                   R                  U/ X   5      U R                  U'   g g r   )rZ   r\   r]   )r   rj   s     r   Ú_update_configÚSessionState._update_configv   s9   € Ø‰9Ñ Ø&*×&8Ñ&8×&IÑ&IØ�R˜™ó'ˆD×Ñ˜sÒ#ð !r   c                óô   • XR                   ;  aA  U R                  R                  U/ U R                  R                  U   5      U R                   U'   SU R                   U   ;   a  X R                   U   S   S'   g g )NÚpropsrG   )r]   rZ   r\   r   )r   rj   rG   s      r   Ú_update_value_in_configÚ$SessionState._update_value_in_config|   sy   € Ø×(Ñ(Ó(Ø&*×&8Ñ&8×&IÑ&IØ�R˜×+Ñ+×2Ñ2°3Ñ7ó'ˆD×Ñ˜sÑ#ð �d×(Ñ(¨Ñ-Ó-Ø8=×Ñ˜sÑ# GÑ,¨WÒ5ð .r   c                óÂ   • U R                   R                  R                  U5      nUc  gUR                  (       a  XR                  ;   $ XR                   R                  ;   $ )NF)rZ   r   ro   rg   rC   )r   rj   rk   s      r   r-   ÚSessionState.__contains__„   sO   € Ø×"Ñ"×)Ñ)×-Ñ-¨cÓ2ˆØ‰=ØØ�>�>ØŸ/™/Ñ)Ð)à×,Ñ,×3Ñ3Ñ3Ð3r   c              #  ól   #   • U R                   R                  5        H  u  pU(       d  M  Uv •  M     g 7fr   )r]   r[   )r   r6   Úconfigs      r   Ú
componentsÚSessionState.components�   s*   é € à×+Ñ+×1Ñ1Ö3‰IˆAßˆvØ”ò 4ùs   ‚%4«	4c              #  ó&  #   • SSK Jn  / nU R                   Hß  nX0R                  R                  ;  a  UR                  U5        M/  U R                  R                  U   n[        XA5      (       d  MZ  X0R                  ;   d  Mk  U R                  U   u  pVU R                  (       a  U R                  nU R                  U   nUU[        R                  R                  5       U-
  R                  5       U:„  4v •  Má     U H  nU R                  U	 M     g 7frr   )rs   r   rC   rZ   r   rA   rt   r^   r_   rb   r&   r'   Útotal_seconds)r   r   Ústate_ids_to_deleterB   rk   ru   Ú
created_atrG   s           r   r?   ÚSessionState.state_components“   sê   é € å+à ÐØ—?”?ˆCØ×,Ñ,×3Ñ3Ó3à#×*Ñ*¨3Ô/ÙØ×&Ñ&×-Ñ-¨cÑ2ˆEÜ˜%×'Ó'¨C·?±?Õ,BØ+/¯?©?¸3Ñ+?Ñ(�Ø—>—>Ø#'×#=Ñ#=�LØŸ™¨Ñ,�àØÜ×&Ñ&×*Ñ*Ó,¨zÑ9×HÑHÓJØ"ñ#ðô ñ #ó" 'ˆCØ—‘ Ò$ò 'ùs   ‚A+DÁ1DÂBD)rb   r^   rZ   r]   r_   rC   rJ   )rj   ÚintrL   r	   r   )rj   rŠ   rn   r	   rL   r	   )rj   rŠ   rG   r	   )rj   rŠ   )rL   zIterator[dict])rL   z!Iterator[tuple[State, Any, bool]])rN   rO   rP   rQ   r   r*   ro   rv   ry   r}   r-   Úpropertyrƒ   r?   rR   rS   r   r   r$   r$   A   sM   † ô
ô$
öô
ô"ô>ô4ð óó ðð
 ó%ó ó%r   r$   )Ú
__future__r   r&   r`   r   Úcollectionsr   Úcollections.abcr   r   r   Útypingr   r	   Úgradio.blocksr
   rs   r   r   r$   rS   r   r   Ú<module>r‘      s=   ðÝ "ã Û 	Û Ý #Ý $ß ß %æÝ$Ý'÷.4ñ .4÷bi%ò i%r   