
    ȯei$                    N   U d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZ erd d	lmZ eee   z  Zeeef   eeeef      z  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"	 	 	 	 	 	 	 	 ddZ#	 	 	 	 ddZ$y)    )annotations)IterableIteratorMappingMutableMapping)	dataclassfield)TYPE_CHECKINGFinalcast)parse)StreamlitAPIException!StreamlitQueryParamDictValueError)
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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_factorydict[str, list[str] | str]_query_paramsc                Z    | j                          t        d | j                  D              S )Nc              3  L   K   | ]  }|j                         t        vr|  y wN)lowerr   ).0keys     f/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/streamlit/runtime/state/query_params.py	<genexpr>z'QueryParams.__iter__.<locals>.<genexpr>4   s'      
yy{"99 
s   "$)_ensure_single_query_api_usediterr   selfs    r#   __iter__zQueryParams.__iter__1   s.    **, 
))
 
 	
    c                $   | j                          |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    r   KeyErrormissing_key_error_messager   
isinstancelistlenr(   r"   values      r#   __getitem__zQueryParams.__getitem__:   s    
 	**,99;114S9::
	;&&s+E%&u:? Ry L 	;4S9::	;s   -A1 *A1 /A1 1Bc                h    | j                          | j                  ||       | j                          y r   )r%   _set_item_internal_send_query_param_msgr3   s      r#   __setitem__zQueryParams.__setitem__O   s*    **,U+""$r*   c                2    t        | j                  ||       y r   )_set_item_in_dictr   r3   s      r#   r7   zQueryParams._set_item_internalT   s    $,,c59r*   c                    | j                          |j                         t        v rt        t	        |            	 | j
                  |= | j                          y # t        $ r t        t	        |            w xY wr   )r%   r    r   r.   r/   r   r8   r(   r"   s     r#   __delitem__zQueryParams.__delitem__W   sm    **,99;114S9::	;""3'&&( 	;4S9::	;s   A A8c               n   | j                          t        |d      rCt        |d      r7t        d|      }|j                         D ]  }| j	                  |||           n|D ]  \  }}| j	                  ||        |j                         D ]  \  }}| j	                  ||        | j                          y )Nkeysr5   0SupportsKeysAndGetItem[str, str | Iterable[str]])r%   hasattrr   r@   r7   itemsr8   )r(   otherkwdsr"   r4   s        r#   updatezQueryParams.updatea   s     	**,5&!ge]&CKUSEzz| 9''U3Z89 $ 4
U''U34**, 	0JC##C/	0""$r*   c                    | j                          || j                  vs|j                         t        v rg S | j                  |   }t	        |t
              r|S |gS r   )r%   r   r    r   r0   r1   r3   s      r#   get_allzQueryParams.get_allv   sU    **,d(((CIIK;R,RI""3'"5$/u<eW<r*   c                    | j                          t        | j                  D ch c]  }|j                         t        vr| c}      S c c}w r   )r%   r2   r   r    r   r=   s     r#   __len__zQueryParams.__len__}   sM    **,  --99;&== 
 	
s   A
c                L    | j                          t        | j                        S r   )r%   strr   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#   r8   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_msgr8   r'   s    r#   clearzQueryParams.clear   s+    **,&&d&;""$r*   c                    | j                          | j                  D ci c]  }|j                         t        vr|| |     c}S c c}w r   )r%   r   r    r   r=   s     r#   to_dictzQueryParams.to_dict   sM    **, ))
yy{"99 cN
 	
 
s   #Ac                    | j                          | j                  j                         }| j                  d       	 | j	                  |       y # t
        $ r	 || _         w xY wrX   )r%   r   copyrZ   rF   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]   \  }}|j                         t        v r|r||" c}}| _         y c c}}w r   )r   rC   r    r   )r(   rY   r"   r4   s       r#   rZ   z%QueryParams.clear_with_no_forward_msg   sL     #00668
Uyy{55. J
 
s   %Ac                >    t               }|y |j                          y r   )r   !mark_production_query_params_used)r(   rU   s     r#   r%   z)QueryParams._ensure_single_query_api_used   s     ";--/r*   N)returnzIterator[str]r"   rL   ri   rL   )r"   rL   r4   str | Iterable[str]ri   None)r"   rL   ri   rl   ) )rD   \Iterable[tuple[str, str | Iterable[str]]] | SupportsKeysAndGetItem[str, str | Iterable[str]]rE   rL   ri   rl   )r"   rL   ri   z	list[str])ri   int)ri   rL   )ri   rl   )ri   zdict[str, str])r`   rn   ri   rl   )r"   rL   rd   zlist[str] | strri   rl   )F)rY   boolri   rl   )__name__
__module____qualname____doc__r	   dictr   __annotations__r)   r5   r9   r7   r>   rF   rH   rJ   rM   r8   r[   r]   rb   re   rZ   r%   rm   r*   r#   r   r   )   s     16d0KM-K
;*%
:; >@%;%
 % 
%*=
'%

; 
	&
0r*   r   c                    d|  dS )Nzst.query_params has no key "z".rm   )r"   s    r#   r/   r/      s    )#b11r*   c                   t        |t              rt        |      |j                         t        v rt        d      t        |t              r-t        |t              s|D cg c]  }t        |       c}| |<   yt        |      | |<   yc c}w )zSet an item in a dictionary.zVQuery param embed and embed_options (case-insensitive) cannot be set programmatically.N)r0   ru   r   r    r   r   r   rL   )target_dictr"   r4   items       r#   r;   r;      sy     %/44
yy{--#d
 	

 %":eS+A278$CI8Cu:C 9s   !B	c           	     D   i }t        | d      r@t        | d      r4t        d|       } | j                         D ]  }| |   }t        |||        n| D ]  \  }}||v rt	        |t
              rt        |      ||   }t	        |t              s|g}t	        |t              r9t	        |t              s)|j                  |D cg c]  }t        |       c}       n|j                  t        |             |||<   t        |||        t        j                  |d      S c c}w )z5Convert query params into a URL-encoded query string.r@   r5   rA   TrO   )rB   r   r@   r;   r0   ru   r   r1   r   rL   extendappendr   rQ   )query_paramsprocessed_paramsr"   r4   current_valrz   s         r#   process_query_paramsr      s!   
 46|V$})M>
  $$& 	<C %E.U;	< ' 	@JC&&eT*;C@@.s3!+t4#.-KeX.z%7M&&e'DdD	'DE&&s5z2(3 %!"2C?#	@& ??+488 (Es   =D
Nrj   )ry   r   r"   rL   r4   rk   ri   rl   )r~   rn   ri   rL   )%
__future__r   collections.abcr   r   r   r   dataclassesr   r	   typingr
   r   r   urllibr   streamlit.errorsr   r   streamlit.proto.ForwardMsg_pb2r   7streamlit.runtime.scriptrunner_utils.script_run_contextr   	_typeshedr   rL   QueryParamValuetupleQueryParamsInputr   rv   r   r   r   r/   r;   r   rm   r*   r#   <module>r      s    # G G ( - -  U 5 V0%3/08E#BV<W3XX  !( : '(7 : 7- )  Y0.c* Y0 Y0x2&+&25&>Q&	&&"97"9 	"9r*   