Ë
    úmxiä  ã                  ó    — d dl mZ d dlZd dlmZ d dlmZmZ er*d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZ  G d„ d«      Zy)é    )ÚannotationsN)Úcontextmanager)ÚTYPE_CHECKINGÚAny)ÚCallableÚIterator)ÚWidgetState)ÚWidgetStates)ÚRegisterWidgetResultÚTÚWidgetMetadata)ÚQueryParams)ÚSessionStatec                  óà   — e Zd ZU dZded<   ded<   ded<   dd„Z	 	 	 	 	 	 dd	„Zdd
„Zdd„Zdd„Z	d d„Z
d!d„Z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d&d„Zd(d„Zed)d„«       Zy)*ÚSafeSessionStateav  Thread-safe wrapper around SessionState.

    When AppSession gets a re-run request, it can interrupt its existing
    ScriptRunner and spin up a new ScriptRunner to handle the request.
    When this happens, the existing ScriptRunner will continue executing
    its script until it reaches a yield point - but during this time, it
    must not mutate its SessionState.
    r   Ú_statezthreading.RLockÚ_lockúCallable[[], None]Ú_yield_callbackc                ó²   — t         j                  | d|«       t         j                  | dt        j                  «       «       t         j                  | d|«       y )Nr   r   r   )ÚobjectÚ__setattr__Ú	threadingÚRLock)ÚselfÚstateÚyield_callbacks      úa/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/runtime/state/safe_session_state.pyÚ__init__zSafeSessionState.__init__-   sD   € ô 	×Ñ˜4 ¨5Ô1ô 	×Ñ˜4 ¬)¯/©/Ó*;Ô<Ü×Ñ˜4Ð!2°NÕCó    c                óž   — | j                  «        | j                  5  | j                  j                  ||«      cd d d «       S # 1 sw Y   y xY w©N)r   r   r   Úregister_widget)r   ÚmetadataÚuser_keys      r   r#   z SafeSessionState.register_widget6   sD   € ð 	×ÑÔØ�Z‰Zñ 	CØ—;‘;×.Ñ.¨x¸ÓB÷	C÷ 	Cò 	Cús   �AÁAc                óœ   — | j                  «        | j                  5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wr"   )r   r   r   Úon_script_will_rerun)r   Úlatest_widget_statess     r   r'   z%SafeSessionState.on_script_will_rerun=   sC   € Ø×ÑÔØ�Z‰Zñ 	Cð
 �K‰K×,Ñ,Ð-AÔB÷	C÷ 	Cñ 	Cús   �AÁAc                ó|   — | j                   5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wr"   )r   r   Úon_script_finished)r   Úwidget_ids_this_runs     r   r*   z#SafeSessionState.on_script_finishedF   s5   € Ø�Z‰Zñ 	@Ø�K‰K×*Ñ*Ð+>Ô?÷	@÷ 	@ñ 	@ús   �2²;c                óz   — | j                   5  | j                  j                  «        d d d «       y # 1 sw Y   y xY wr"   )r   r   Úmaybe_check_serializable©r   s    r   r-   z)SafeSessionState.maybe_check_serializableJ   s.   € Ø�Z‰Zñ 	3Ø�K‰K×0Ñ0Ô2÷	3÷ 	3ñ 	3ús   �1±:c                óz   — | j                   5  | j                  j                  «       cddd«       S # 1 sw Y   yxY w)zGReturn a list of serialized widget values for each widget with a value.N)r   r   Úget_widget_statesr.   s    r   r0   z"SafeSessionState.get_widget_statesN   s.   € à�Z‰Zñ 	3Ø—;‘;×0Ñ0Ó2÷	3÷ 	3ò 	3ús   �1±:c                ó|   — | j                   5  | j                  j                  |«      cd d d «       S # 1 sw Y   y xY wr"   )r   r   Úis_new_state_value)r   r%   s     r   r2   z#SafeSessionState.is_new_state_valueS   s0   € Ø�Z‰Zñ 	<Ø—;‘;×1Ñ1°(Ó;÷	<÷ 	<ò 	<ús   �2²;c                óž   — | j                  «        | j                  5  | j                  j                  ||«       ddd«       y# 1 sw Y   yxY w)z€Reset a new session state value to a given value
        without triggering the "state value cannot be modified" error.
        N)r   r   r   Úreset_state_value)r   r%   Úvalues      r   r4   z"SafeSessionState.reset_state_valueW   s@   € ð 	×ÑÔØ�Z‰Zñ 	;Ø�K‰K×)Ñ)¨(°EÔ:÷	;÷ 	;ñ 	;ús   �AÁAc                ór   — | j                   5  | j                  j                  cddd«       S # 1 sw Y   yxY w)zAThe combined session and widget state, excluding keyless widgets.N)r   r   Úfiltered_stater.   s    r   r7   zSafeSessionState.filtered_state_   s-   € ð �Z‰Zñ 	.Ø—;‘;×-Ñ-÷	.÷ 	.ò 	.ús   �-­6c                ó„   — | j                  «        | j                  5  | j                  |   cd d d «       S # 1 sw Y   y xY wr"   ©r   r   r   ©r   Úkeys     r   Ú__getitem__zSafeSessionState.__getitem__e   s6   € Ø×ÑÔØ�Z‰Zñ 	$Ø—;‘;˜sÑ#÷	$÷ 	$ò 	$ús   �6¶?c                ó„   — | j                  «        | j                  5  || j                  |<   d d d «       y # 1 sw Y   y xY wr"   r9   ©r   r;   r5   s      r   Ú__setitem__zSafeSessionState.__setitem__j   s8   € Ø×ÑÔØ�Z‰Zñ 	%Ø$ˆD�K‰K˜Ñ÷	%÷ 	%ñ 	%ús   �6¶?c                ó€   — | j                  «        | j                  5  | j                  |= d d d «       y # 1 sw Y   y xY wr"   r9   r:   s     r   Ú__delitem__zSafeSessionState.__delitem__o   s6   € Ø×ÑÔØ�Z‰Zñ 	!Ø—‘˜CÐ ÷	!÷ 	!ñ 	!ús   �4´=c                ó‚   — | j                  «        | j                  5  || j                  v cd d d «       S # 1 sw Y   y xY wr"   r9   r:   s     r   Ú__contains__zSafeSessionState.__contains__t   s6   € Ø×ÑÔØ�Z‰Zñ 	&Ø˜$Ÿ+™+Ð%÷	&÷ 	&ò 	&ús   �5µ>c                óD   — 	 | |   S # t         $ r t        |› d�«      ‚w xY w©Nz not found in session_state.©ÚKeyErrorÚAttributeErrorr:   s     r   Ú__getattr__zSafeSessionState.__getattr__y   s6   € ð	GØ˜‘9ÐøÜò 	GÜ  C 5Ð(DÐ!EÓFÐFð	Gús   ‚ ‡c                ó   — || |<   y r"   © r>   s      r   r   zSafeSessionState.__setattr__   s   € ØˆˆSŠ	r    c                óB   — 	 | |= y # t         $ r t        |› d�«      ‚w xY wrE   rF   r:   s     r   Ú__delattr__zSafeSessionState.__delattr__‚   s3   € ð	GØ�S‘	øÜò 	GÜ  C 5Ð(DÐ!EÓFÐFð	Gús   ‚ †c                ó†   ‡ — ˆ fd„‰ j                   j                  «       D «       }dj                  d„ |D «       «      }d|› d�S )zIPresents itself as a simple dict of the underlying SessionState instance.c              3  ó@   •K  — | ]  }|‰j                   |   f–— Œ y ­wr"   )r   )Ú.0Úkr   s     €r   ú	<genexpr>z,SafeSessionState.__repr__.<locals>.<genexpr>Š   s   øè ø€ Ò? aˆq�$—+‘+˜a‘.Ô!Ñ?ùs   ƒz, c              3  ó0   K  — | ]  \  }}|› d |›�–— Œ y­w)z: NrK   )rP   rQ   Úvs      r   rR   z,SafeSessionState.__repr__.<locals>.<genexpr>‹   s   è ø€ Ò3©¨¨1˜˜˜2˜a˜U”mÑ3ùs   ‚ú{ú})r   Ú_keysÚjoin)r   ÚkvÚss   `  r   Ú__repr__zSafeSessionState.__repr__ˆ   s<   ø€ ã?¨4¯;©;×+<Ñ+<Ó+>Ô?ˆØ�I‰IÑ3°Ô3Ó3ˆØ�A�3�bˆzÐr    c              #  óž   K  — | j                  «        | j                  5  | j                  j                  –— d d d «       y # 1 sw Y   y xY w­wr"   )r   r   r   Úquery_paramsr.   s    r   r]   zSafeSessionState.query_paramsŽ   s=   è ø€ à×ÑÔØ�Z‰Zñ 	+Ø—+‘+×*Ñ*Ò*÷	+÷ 	+ñ 	+üs   ‚AŸA¸	AÁA
ÁAN)r   r   r   r   ÚreturnÚNone)r$   zWidgetMetadata[T]r%   z
str | Noner^   zRegisterWidgetResult[T])r(   ÚWidgetStatesProtor^   r_   )r+   zset[str]r^   r_   )r^   r_   )r^   zlist[WidgetStateProto])r%   Ústrr^   Úbool)r%   ra   r5   z
Any | Noner^   r_   )r^   zdict[str, Any])r;   ra   r^   r   )r;   ra   r5   r   r^   r_   )r;   ra   r^   r_   )r;   ra   r^   rb   )r^   ra   )r^   zIterator[QueryParams])Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r#   r'   r*   r-   r0   r2   r4   Úpropertyr7   r<   r?   rA   rC   rI   r   rM   r[   r   r]   rK   r    r   r   r      s´   … ñð ÓØÓØ'Ó'óDðCØ)ðCØ5?ðCà	 óCóCó@ó3ó3ó
<ó;ð ò.ó ð.ó
$ó
%ó
!ó
&ó
GóóGóð ò+ó ñ+r    r   )Ú
__future__r   r   Ú
contextlibr   Útypingr   r   Úcollections.abcr   r   Ú streamlit.proto.WidgetStates_pb2r	   ÚWidgetStateProtor
   r`   Ústreamlit.runtime.state.commonr   r   r   Ú$streamlit.runtime.state.query_paramsr   Ú%streamlit.runtime.state.session_stater   r   rK   r    r   ú<module>rr      s7   ðõ #ã Ý %ß %áß2åPÝRßVÑVÝ@ÝB÷s+ò s+r    