
    gM                        U d dl mZ d dlmZmZmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ e
rd d	lmZ d
Zded<   dZded<   eegZded<   e G d deeef                ZddZy)    )annotations)IterableIteratorMutableMapping)	dataclassfield)TYPE_CHECKINGFinal)parse)StreamlitAPIException)
ForwardMsg)get_script_run_ctx)SupportsKeysAndGetItemembedz
Final[str]EMBED_QUERY_PARAMembed_optionsEMBED_OPTIONS_QUERY_PARAMzFinal[list[str]]EMBED_QUERY_PARAMS_KEYSc                      e Zd ZU dZ ee      Zded<   ddZddZ	ddZ
ddZdd	Z	 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d"dZd#d$dZd Zy)%QueryParamszA lightweight wrapper of a dict that sends forwardMsgs when state changes.
    It stores str keys with str and List[str] values.
    )default_factoryzdict[str, list[str] | str]_query_paramsc                v    | j                          t        d | j                  j                         D              S )Nc              3  0   K   | ]  }|t         vr|  y wN)r   ).0keys     Y/var/www/openai/venv/lib/python3.12/site-packages/streamlit/runtime/state/query_params.py	<genexpr>z'QueryParams.__iter__.<locals>.<genexpr>1   s!      
011 0s   )_ensure_single_query_api_usediterr   keysselfs    r   __iter__zQueryParams.__iter__.   s7    **, 
))..0
 
 	
    c                   | j                          	 |t        v rt        t        |            | j                  |   }t        |t              rt        |      dk(  ry|d   S |S # t        $ r t        t        |            w xY w)zRetrieves a value for a given key in query parameters.
        Returns the last item in a list or an empty string if empty.
        If the key is not present, raise KeyError.
        r    )r    r   KeyErrormissing_key_error_messager   
isinstancelistlenr$   r   values      r   __getitem__zQueryParams.__getitem__7   s    
 	**,	;--8=>>&&s+E%&u:? !9$L 	;4S9::	;s   A	A# A# !A# #Bc                h    | j                          | j                  ||       | j                          y r   )r    _QueryParams__set_item_internal_send_query_param_msgr/   s      r   __setitem__zQueryParams.__setitem__L   s*    **,  e,""$r&   c                0   t        |t              rt        d| d      |t        v rt        d      t        |t              r7t        |t
              s'|D cg c]  }t        |       c}| j                  |<   y t        |      | j                  |<   y c c}w )Nz#You cannot set a query params key `z` to a dictionary.zVQuery param embed and embed_options (case-insensitive) cannot be set programmatically.)r,   dictr   r   r   strr   )r$   r   r0   items       r   __set_item_internalzQueryParams.__set_item_internalQ   s    eT"'5cU:LM  ))'h 
 eX&z%/E=B&CUTs4yU&CDs#&)%jDs# 'Ds   Bc                    | j                          	 |t        v rt        t        |            | j                  |= | j                          y # t        $ r t        t        |            w xY wr   )r    r   r*   r+   r   r4   r$   r   s     r   __delitem__zQueryParams.__delitem__b   sg    **,	;--8=>>""3'&&( 	;4S9::	;s   9A A*c               V   | j                          t        |d      r7t        |d      r+|j                         D ]  }| j                  |||           n|D ]  \  }}| j                  ||        |j	                         D ]  \  }}| j                  ||        | j                          y )Nr"   r1   )r    hasattrr"   r3   itemsr4   )r$   otherkwdsr   r0   s        r   updatezQueryParams.updatel   s     	**,5&!ge]&Czz|((eCj9 $ $
U((e4 $**,JC$$S%0 '""$r&   c                    | j                          || j                  vs|t        v rg S | j                  |   }t        |t              r|S |gS r   )r    r   r   r,   r-   r/   s      r   get_allzQueryParams.get_all   sO    **,d(((C3J,JI""3'"5$/u<eW<r&   c                    | j                          t        | j                  D ch c]  }|t        vs| c}      S c c}w r   )r    r.   r   r   r<   s     r   __len__zQueryParams.__len__   s@    **, ..U.S#=T2TS.U
 	
Us   ==c                L    | j                          t        | j                        S r   )r    r8   r   r#   s    r   __str__zQueryParams.__str__   s    **,4%%&&r&   c                
   t               }|y | j                          t               }t        j                  | j
                  d      |j                  _        |j                  j                  |_        |j                  |       y )NT)doseq)	r   r    r   r   	urlencoder   page_info_changedquery_stringenqueue)r$   ctxmsgs      r   r4   z!QueryParams._send_query_param_msg   si     ";**,l-2__d.
* 00==Cr&   c                h    | j                          | j                  d       | j                          y NT)preserve_embed)r    clear_with_no_forward_msgr4   r#   s    r   clearzQueryParams.clear   s+    **,&&d&;""$r&   c                x    | j                          | j                  D ci c]  }|t        vr|| |    c}S c c}w r   )r    r   r   r<   s     r   to_dictzQueryParams.to_dict   sL    **, ))
)11 cN)
 	
 
s   7c                    | j                          | j                  j                         }| j                  d       	 | j	                  |       y # t
        $ r	 || _         w xY wrS   )r    r   copyrU   rC   r   )r$   _dict	old_values      r   	from_dictzQueryParams.from_dict   s`    
 	**,&&++-	&&d&;	KK$ 	!*D	s   A A"c                "    || j                   |<   y r   )r   )r$   r   vals      r   set_with_no_forward_msgz#QueryParams.set_with_no_forward_msg   s    "%3r&   c                    | j                   j                         D ci c]  \  }}|t        v r|r|| c}}| _         y c c}}w r   )r   r@   r   )r$   rT   r   r0   s       r   rU   z%QueryParams.clear_with_no_forward_msg   sK     #00668
8
U--. J8
 
s   ?c                >    t               }|y |j                          y r   )r   !mark_production_query_params_used)r$   rP   s     r   r    z)QueryParams._ensure_single_query_api_used   s     ";--/r&   N)returnzIterator[str]r   r8   rd   r8   )r   r8   r0   zstr | Iterable[str]rd   None)r   r8   rd   rf   ) )rA   \Iterable[tuple[str, str | Iterable[str]]] | SupportsKeysAndGetItem[str, str | Iterable[str]]rB   r8   )r   r8   rd   z	list[str])rd   int)rd   r8   )rd   rf   )rd   zdict[str, str])r[   rh   )r   r8   r_   zlist[str] | strrd   rf   )F)rT   boolrd   rf   )__name__
__module____qualname____doc__r   r7   r   __annotations__r%   r1   r5   r3   r=   rC   rE   rG   rI   r4   rV   rX   r]   r`   rU   r    rg   r&   r   r   r   &   s     16d0KM-K
;*%
1"; >@%;%
 %(=
'%

;&
0r&   r   c                    d|  dS )Nzst.query_params has no key "z".rg   )r   s    r   r+   r+      s    )#b11r&   Nre   )
__future__r   collections.abcr   r   r   dataclassesr   r   typingr	   r
   urllibr   streamlit.errorsr   streamlit.proto.ForwardMsg_pb2r   7streamlit.runtime.scriptrunner_utils.script_run_contextr   	_typeshedr   r   ro   r   r   r8   r   r+   rg   r&   r   <module>rz      s    # > > ( '  2 5 V0 !( : '(7 : 7- )  b0.c* b0 b0J2r&   