o
    Zh                     @  s  U d dl mZ d dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZmZmZ d dlmZmZmZmZ d dlmZmZmZmZmZ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&m'Z' d dl(m)Z)m*Z*m+Z+m,Z, d dl-m.Z/ d dl0m1Z2 d dl3m4Z5 d dl6m7Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z> er>d dl?m@ZA d dlBmCZD d dlEmFZG d dlHmIZJ d dlKmLZM d dlNmOZP d dlQmRZS d dlTmUZV d dlWmXZY d dlZm[Z\ d dl]m^Z_ d dl`maZa d d lbmcZd d d!lemfZg d d"lhmiZj d d#lkmlZm d d$lnmoZp d d%lqmrZs d d&ltmuZv d d'lwmxZy d d(lzm{Z| d d)l}m~Z d d*lmZ d d+lmZ d d,lmZ d d-lmZ ed.Ze
G d/d0 d0Ze
G d1d2 d2eZ[e
d3d4G d5d6 d6e[Ze
d3d4G d7d8 d8e[eZed9e[d:d;ZG d<d= d=ee Zed>ed:d;ZG d?d@ d@ee ee Ze
d3d4G dAdB dBe[Ze
d3d4G dCdD dDeZe
d3d4G dEdF dFeZe
d3d4G dGdH dHeZe
d3d4G dIdJ dJeZe
d3d4G dKdL dLeZIe
d3d4G dMdN dNeZOe
d3d4G dOdP dPeZ1e
d3d4G dQdR dRe[ZRe
d3d4G dSdT dTeZUe
d3d4G dUdV dVe[Zeeef ZdWedX< eeee df ZdWedY< e
d3d4G dZd[ d[eZXe
d3d4G d\d] d]e[Z^e
d3d4G d^d_ d_e[eZe
d3d4G d`da daeZe
d3d4G dbdc dceZe
d3d4G ddde deeZe
d3d4G dfdg dge[Zfe
d3d4G dhdi die[Z4e
d3d4G djdk dke4Ze
d3d4G dldm dme4Ze
d3d4G dndo doe4Ze
d3d4G dpdq dqe[Zie
d3d4G drds dseee ZLe
d3d4G dtdu dueee Zeeef Ze
d3d4G dvdw dweZoe
d3d4G dxdy dyeee Zre
d3d4G dzd{ d{eee Zue
d3d4G d|d} d}eee Zed~eeeeeZe
d3d4G dd deee Z7e
d3d4G dd de[Ze
d3d4G dd de[Zxe
d3d4G dd deZ{e
d3d4G dd deZ~eeef ZdWed< e
d3d4G dd deZe
d3d4G dd de[Ze
d3d4G dd deZe
d3d4G dd dZFdddZdddZe
d3d4G dd deFZe
d3d4G dd deFZe
d3d4G dd deFZe
d3d4G dd deFZe
d3d4G dd deFZe
d3d4G dd deFZee[eFf ZdWed< dddZe
d3d4G dd deFZdddZdS )    )annotationsN)ABCabstractmethod)IteratorSequence)	dataclassfieldfieldsis_dataclass)datedatetimetime	timedelta)TYPE_CHECKINGAnyCallableGenericTypeVarUnioncastoverload)Self	TypeAlias)dataframe_utilutil)HeadingProtoTag)SelectSliderSerde)SliderSerde
SliderStep)DateInputSerdeDateWidgetReturnTimeInputSerde_parse_date_value)Alert)Checkbox)Markdown)Slider)WidgetStateWidgetStates)TESTING_KEYuser_key_from_element_id)	DataFrame)Arrow)Block)Button)ButtonGroup)	ChatInput)Code)ColorPicker)	DateInput)Element)	Exception)
ForwardMsg)Heading)Json)Metric)MultiSelect)NumberInput)Radio)	Selectbox)Text)TextArea)	TextInput)	TimeInput)Toast)SafeSessionState)AppTestTc                   @  s   e Zd ZdZdS )InitialValuez0Used to represent the initial value of a widget.N)__name__
__module____qualname____doc__ rK   rK   b/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/streamlit/testing/v1/element_tree.pyrF   W   s    rF   c                   @  s   e Zd ZU dZeddZded< eddZded< eddZded	< d
ed< e	d"ddZ
d#ddZee	d$ddZd%ddZddd&ddZd'd d!ZdS )(r4   aL  
    Element base class for testing.

    This class's methods and attributes are universal for all elements
    implemented in testing. For example, ``Caption``, ``Code``, ``Text``, and
    ``Title`` inherit from ``Element``. All widget classes also
    inherit from Element, but have additional methods specific to each
    widget type. See the ``AppTest`` class for the full list of supported
    elements.

    For all element classes, parameters of the original element can be obtained
    as properties. For example, ``Button.label``, ``Caption.help``, and
    ``Toast.icon``.

    Freprstrtyper   protoElementTreeroot
str | NonekeyElementProtoreturnNonec                 C     d S NrK   selfrQ   rS   rK   rK   rL   __init__~      zElement.__init__Iterator[Self]c                 c  s    | V  d S rZ   rK   r\   rK   rK   rL   __iter__   s   
zElement.__iter__c                 C  s   dS )z%The value or contents of the element.NrK   r`   rK   rK   rL   value   s   zElement.valuenamec                 C  s   t | j|S )z4Fallback attempt to get an attribute from the proto.)getattrrQ   )r\   rc   rK   rK   rL   __getattr__   s   zElement.__getattr__Ntimeoutrg   float | NonerD   c                C     | j j|dS )zRun the ``AppTest`` script which contains the element.

        Parameters
        ----------
        timeout
            The maximum number of seconds to run the script. None means
            use the AppTest's default.
        rf   rS   runr\   rg   rK   rK   rL   rk         	zElement.runc                 C  
   t | S rZ   r   repr_r`   rK   rK   rL   __repr__      
zElement.__repr__rQ   rV   rS   rR   rW   rX   )rW   r_   rW   r   )rc   rO   rW   r   rg   rh   rW   rD   rW   rO   )rG   rH   rI   rJ   r   rP   __annotations__rQ   rS   r   r]   ra   propertyrb   re   rk   rq   rK   rK   rK   rL   r4   g   s   
 

r4   FrM   c                   @  s$   e Zd ZdddZedd
dZdS )UnknownElementrQ   rV   rS   rR   rW   rX   c                 C  s8   | d}|d usJ t||| _|| _|| _d | _d S )NrP   )
WhichOneofrd   rQ   rS   rP   rU   r\   rQ   rS   tyrK   rK   rL   r]      s   

zUnknownElement.__init__r   c                 C  s>   z| j j}|d usJ || jj W S  ty   | jj Y S w rZ   )rS   session_staterQ   id
ValueErrorrb   r\   staterK   rK   rL   rb      s   zUnknownElement.valueNrs   rt   )rG   rH   rI   r]   rx   rb   rK   rK   rK   rL   ry      s    
ry   c                   @  sb   e Zd ZU dZeddZded< ded< ded	< d
ed< dddZdddZe	e
dddZdS )WidgetzWidget base class for testing.FrM   rO   r~   booldisabledrT   rU   r   _valuerQ   rS   rR   rW   rX   c                 C  s"   || _ || _t| j| _d | _d S rZ   )rQ   rS   r*   r~   rU   r   r[   rK   rK   rL   r]      s   
zWidget.__init__vr   c                 C  
   || _ | S zSet the value of the widget.r   r\   r   rK   rK   rL   	set_value      zWidget.set_valuer'   c                 C  rY   rZ   rK   r`   rK   rK   rL   _widget_state      zWidget._widget_stateN)rQ   r   rS   rR   rW   rX   )r   r   rW   r   rW   r'   )rG   rH   rI   rJ   r   r~   rw   r]   r   rx   r   r   rK   rK   rK   rL   r      s   
 

r   El_coT)bound	covariantc                   @  s   e Zd Zd'ddZd(dd	Zed(d
dZed)ddZed*ddZd+ddZd,ddZ	d-ddZ
d.dd Zd(d!d"Zed/d$d%Zd&S )0ElementListelsSequence[El_co]rW   rX   c                 C  s
   || _ d S rZ   _list)r\   r   rK   rK   rL   r]      rr   zElementList.__init__intc                 C  
   t | jS rZ   )lenr   r`   rK   rK   rL   __len__   rr   zElementList.__len__c                 C     t | S rZ   )r   r`   rK   rK   rL   r         zElementList.lenidxr   c                 C  rY   rZ   rK   r\   r   rK   rK   rL   __getitem__   r^   zElementList.__getitem__sliceElementList[El_co]c                 C  rY   rZ   rK   r   rK   rK   rL   r      r^   int | sliceEl_co | ElementList[El_co]c                 C  s"   t |trt| j| S | j| S rZ   )
isinstancer   r   r   r   rK   rK   rL   r      s   

Iterator[El_co]c                 c  s    | j E d H  d S rZ   r   r`   rK   rK   rL   ra      s   zElementList.__iter__rO   c                 C  rn   rZ   ro   r`   rK   rK   rL   rq      rr   zElementList.__repr__otherElementList[El_co] | objectr   c                 C  s    t |tr| j|jkS | j|kS rZ   )r   r   r   )r\   r   rK   rK   rL   __eq__   s   

zElementList.__eq__c                 C  s   t t| jS rZ   )hashtupler   r`   rK   rK   rL   __hash__   s   zElementList.__hash__Sequence[Any]c                 C  s   dd | D S )Nc                 S  s   g | ]}|j qS rK   rb   .0erK   rK   rL   
<listcomp>   s    z&ElementList.values.<locals>.<listcomp>rK   r`   rK   rK   rL   values      zElementList.valuesN)r   r   rW   rX   rW   r   )r   r   rW   r   )r   r   rW   r   )r   r   rW   r   )rW   r   rv   )r   r   rW   r   )rW   r   )rG   rH   rI   r]   r   rx   r   r   r   ra   rq   r   r   r   rK   rK   rK   rL   r      s     






r   W_coc                   @  s   e Zd ZdddZdS )	
WidgetListrU   rO   rW   r   c                 C  s&   | j D ]}|j|kr|  S qt|rZ   )r   rU   KeyError)r\   rU   r   rK   rK   rL   __call__   s
   

zWidgetList.__call__N)rU   rO   rW   r   )rG   rH   rI   r   rK   rK   rK   rL   r      s    r   c                   @  @   e Zd ZU eddZded< ded< dddZedddZdS )	AlertBaseFrM   
AlertProtorQ   rO   iconrS   rR   rW   rX   c                 C  s   || _ d | _|| _d S rZ   )rQ   rU   rS   r[   rK   rK   rL   r]        
zAlertBase.__init__c                 C     | j jS rZ   rQ   bodyr`   rK   rK   rL   rb     r   zAlertBase.valueNrQ   r   rS   rR   rW   rX   rv   	rG   rH   rI   r   rQ   rw   r]   rx   rb   rK   rK   rK   rL   r     s   
 
r   c                         e Zd Zd	 fddZ  ZS )
ErrorrQ   r   rS   rR   rW   rX   c                      t  || d| _d S Nerrorsuperr]   rP   r[   	__class__rK   rL   r]        
zError.__init__r   rG   rH   rI   r]   __classcell__rK   rK   r   rL   r         r   c                      r   )
WarningrQ   r   rS   rR   rW   rX   c                   r   Nwarningr   r[   r   rK   rL   r]     r   zWarning.__init__r   r   rK   rK   r   rL   r     r   r   c                      r   )
InforQ   r   rS   rR   rW   rX   c                   r   Ninfor   r[   r   rK   rL   r]   "  r   zInfo.__init__r   r   rK   rK   r   rL   r      r   r   c                      r   )
SuccessrQ   r   rS   rR   rW   rX   c                   r   Nsuccessr   r[   r   rK   rL   r]   )  r   zSuccess.__init__r   r   rK   rK   r   rL   r   '  r   r   c                      s   e Zd ZU dZded< eddZded< ded	< ded
< ded< d fddZedddZ	edddZ
dddZd ddZ  ZS )!r.   z@A representation of ``st.button`` and ``st.form_submit_button``.r   r   FrM   ButtonProtorQ   rO   labelhelpform_idrS   rR   rW   rX   c                   s   t  || d| _d| _d S )NFbuttonr   r]   r   rP   r[   r   rK   rL   r]   9     
zButton.__init__r'   c                 C     t  }| j|_| j|_|S rZ   )r'   r~   r   trigger_valuer\   wsrK   rK   rL   r   >     zButton._widget_statec                 C  s0   | j r| j S | jj}|sJ td|t | j S )zThe value of the button. (bool)r   )r   rS   r}   r   r)   r~   r   rK   rK   rL   rb   E  s
   zButton.valuer   c                 C  r   )zSet the value of the button.r   r   rK   rK   rL   r   N  r   zButton.set_valuec                 C  
   |  dS )z$Set the value of the button to True.Tr   r`   rK   rK   rL   clickS     
zButton.click)rQ   r   rS   rR   rW   rX   r   rW   r   )r   r   rW   r.   )rW   r.   )rG   rH   rI   rJ   rw   r   rQ   r]   rx   r   rb   r   r   r   rK   rK   r   rL   r.   .  s   
 
r.   c                      sl   e Zd ZU dZded< eddZded< ded	< d fddZdddZe	dddZ
e	dddZ  ZS )r0   z&A representation of ``st.chat_input``.rT   r   FrM   ChatInputProtorQ   rO   placeholderrS   rR   rW   rX   c                   r   N
chat_inputr   r[   r   rK   rL   r]   `  r   zChatInput.__init__r   c                 C  r   r   r   r   rK   rK   rL   r   d  r   zChatInput.set_valuer'   c                 C  s&   t  }| j|_| jd ur| j|j_|S rZ   )r'   r~   r   string_trigger_valuedatar   rK   rK   rL   r   i  s
   

zChatInput._widget_statec                 C  s*   | j r| j S | jj}|sJ |t | j S )zThe value of the widget. (str))r   rS   r}   r)   r~   r   rK   rK   rL   rb   q  s
   zChatInput.value)rQ   r   rS   rR   rW   rX   )r   rT   rW   r0   r   rW   rT   rG   rH   rI   rJ   rw   r   rQ   r]   r   rx   r   rb   r   rK   rK   r   rL   r0   X  s   
 
r0   c                      s   e Zd ZU dZded< eddZded< ded	< ded
< ded< d fddZed ddZ	ed!ddZ
d"ddZd#ddZd#ddZ  ZS )$r$   z$A representation of ``st.checkbox``.bool | Noner   FrM   CheckboxProtorQ   rO   r   r   r   rS   rR   rW   rX   c                   r   Ncheckboxr   r[   r   rK   rL   r]     r   zCheckbox.__init__r'   c                 C  r   rZ   r'   r~   rb   
bool_valuer   rK   rK   rL   r     r   zCheckbox._widget_stater   c                 C  0   | j dur| j S | jj}|sJ td|| j S )zThe value of the widget. (bool)Nr   r   rS   r}   r   r~   r   rK   rK   rL   rb     
   
zCheckbox.valuer   c                 C  r   r   r   r   rK   rK   rL   r     r   zCheckbox.set_valuec                 C  r   )z$Set the value of the widget to True.Tr   r`   rK   rK   rL   check  r   zCheckbox.checkc                 C  r   )z%Set the value of the widget to False.Fr   r`   rK   rK   rL   uncheck  r   zCheckbox.uncheckrQ   r   rS   rR   rW   rX   r   r   )r   r   rW   r$   )rW   r$   )rG   rH   rI   rJ   rw   r   rQ   r]   rx   r   rb   r   r   r   r   rK   rK   r   rL   r$   {  s   
 

r$   c                   @  sT   e Zd ZU dZeddZded< ded< ded	< d
ed< dddZedddZ	dS )r1   z A representation of ``st.code``.FrM   	CodeProtorQ   rO   languager   show_line_numbersrX   rU   rS   rR   rW   c                 C     || _ d | _|| _d| _d S NcoderQ   rU   rS   rP   r[   rK   rK   rL   r]        
zCode.__init__c                 C  r   zThe value of the element. (str))rQ   	code_textr`   rK   rK   rL   rb        z
Code.valueN)rQ   r   rS   rR   rW   rX   rv   )
rG   rH   rI   rJ   r   rQ   rw   r]   rx   rb   rK   rK   rK   rL   r1     s   
 
r1   c                      s   e Zd ZU dZded< ded< ded< ded< edd	Zd
ed< d fddZedddZ	edddZ
dddZdddZ  ZS ) r2   z(A representation of ``st.color_picker``.rT   r   rO   r   r   r   FrM   ColorPickerProtorQ   rS   rR   rW   rX   c                   r   Ncolor_pickerr   r[   r   rK   rL   r]     r   zColorPicker.__init__c                 C  r   )z3The currently selected value as a hex string. (str)NrO   r   r   rK   rK   rL   rb     r   zColorPicker.valuer'   c                 C  r   )Protobuf message representing the state of the widget, including
        any interactions that have happened.
        Should be the same as the frontend would produce for those interactions.
        r'   r~   rb   string_valuer   rK   rK   rL   r     s   zColorPicker._widget_stater   c                 C  r   )z,Set the value of the widget as a hex string.r   r   rK   rK   rL   r     r   zColorPicker.set_valuec                 C  s   | ds
d| }| |S )zESet the value of the widget as a hex string. May omit the "#" prefix.#)
startswithr   r   rK   rK   rL   pick  s   


zColorPicker.pick)rQ   r
  rS   rR   rW   rX   rv   r   )r   rO   rW   r2   )rG   rH   rI   rJ   rw   r   rQ   r]   rx   rb   r   r   r  r   rK   rK   r   rL   r2     s   
 

r2   c                   @  8   e Zd ZU eddZded< dd	d
ZedddZdS )	DataframeFrM   
ArrowProtorQ   rS   rR   rW   rX   c                 C     d | _ || _|| _d| _d S Narrow_data_framerU   rQ   rS   rP   r[   rK   rK   rL   r]     r  zDataframe.__init__PandasDataframec                 C     t | jjS rZ   r    convert_arrow_bytes_to_pandas_dfrQ   r   r`   rK   rK   rL   rb     r   zDataframe.valueNrQ   r  rS   rR   rW   rX   rW   r  r   rK   rK   rK   rL   r    
   
 
r  r   SingleDateValue	DateValuec                      s   e Zd ZU dZded< eddZded< ded	< d
ed< d
ed< ded< ded< ded< d! fddZd"ddZe	d#ddZ
e	d$dd Z  ZS )%r3   z&A representation of ``st.date_input``.zDateValue | None | InitialValuer   FrM   DateInputProtorQ   rO   r   r   minmaxr   is_ranger   r   rS   rR   rW   rX   c                   sH   t  || t | _d| _t|jd | _t|j	d | _	d S )N
date_inputz%Y/%m/%d)
r   r]   rF   r   rP   r   strptimer$  r   r%  r[   r   rK   rL   r]     s
   zDateInput.__init__r   r"  c                 C  r   r   r   r   rK   rK   rL   r     r   zDateInput.set_valuer'   c                 C  s2   t  }| j|_td }|| j|jjd d < |S rZ   )r'   r~   r   	serializerb   string_array_valuer   )r\   r   serderK   rK   rL   r     s
   zDateInput._widget_stater    c                 C  sH   t | jtst| j\}}|durt|S dS | jj}|sJ || j S )z0The value of the widget. (date or Tuple of date)N)r   r   rF   r"   r   rS   r}   r~   )r\   parsed_r   rK   rK   rL   rb   "  s   
zDateInput.value)rQ   r#  rS   rR   rW   rX   )r   r"  rW   r3   r   )rW   r    r   rK   rK   r   rL   r3      s    
 
r3   c                   @  sF   e Zd ZU ded< ded< ded< ded< dddZedddZdS )r5   rO   messager   is_markdown	list[str]stack_trace
is_warningrQ   ExceptionProtorS   rR   rW   rX   c                 C  s0   d | _ || _|| _d| _|j| _t|j| _d S N	exception)rU   rS   rQ   rP   message_is_markdownr/  listr1  r[   rK   rK   rL   r]   4  s   zException.__init__c                 C  s   | j S rZ   )r.  r`   rK   rK   rL   rb   =  s   zException.valueN)rQ   r3  rS   rR   rW   rX   rv   rG   rH   rI   rw   r]   rx   rb   rK   rK   rK   rL   r5   -  s   
 
	r5   c                   @  sX   e Zd ZU eddZded< ded< ded< d	ed
< ded< dddZedddZdS )HeadingBaseFrM   HeadingProtorQ   rO   tagrT   anchorr   hide_anchorrX   rU   rS   rR   type_rW   c                 C  s   || _ d | _|| _|| _d S rZ   r  )r\   rQ   rS   r>  rK   rK   rL   r]   K  r  zHeadingBase.__init__c                 C  r   rZ   r   r`   rK   rK   rL   rb   Q  r   zHeadingBase.valueN)rQ   r:  rS   rR   r>  rO   rW   rX   rv   r   rK   rK   rK   rL   r9  B  s   
 
r9  c                      r   )
HeaderrQ   r:  rS   rR   rW   rX   c                      t  ||d d S Nheaderr   r]   r[   r   rK   rL   r]   X     zHeader.__init__rQ   r:  rS   rR   rW   rX   r   rK   rK   r   rL   r?  V  r   r?  c                      r   )
	SubheaderrQ   r:  rS   rR   rW   rX   c                   r@  N	subheaderrC  r[   r   rK   rL   r]   ^  rD  zSubheader.__init__rE  r   rK   rK   r   rL   rF  \  r   rF  c                      r   )
TitlerQ   r:  rS   rR   rW   rX   c                   r@  NtitlerC  r[   r   rK   rL   r]   d  rD  zTitle.__init__rE  r   rK   rK   r   rL   rI  b  r   rI  c                   @  s@   e Zd ZU eddZded< ded< dddZedddZdS )r8   FrM   	JsonProtorQ   r   expandedrS   rR   rW   rX   c                 C  r  Njsonr  r[   rK   rK   rL   r]   n  r  zJson.__init__rO   c                 C  r   rZ   r   r`   rK   rK   rL   rb   t  r   z
Json.valueN)rQ   rL  rS   rR   rW   rX   rv   r   rK   rK   rK   rL   r8   h  s   
 
r8   c                   @  sP   e Zd ZU eddZded< ded< ded< ded	< dddZedddZdS )r%   FrM   MarkdownProtorQ   r   
is_caption
allow_htmlrX   rU   rS   rR   rW   c                 C  r  Nmarkdownr  r[   rK   rK   rL   r]     r  zMarkdown.__init__rO   c                 C  r   rZ   r   r`   rK   rK   rL   rb     r   zMarkdown.valueNrQ   rP  rS   rR   rW   rX   rv   r   rK   rK   rK   rL   r%   y  s   
 
r%   c                      r   )
CaptionrQ   rP  rS   rR   rW   rX   c                   r   Ncaptionr   r[   r   rK   rL   r]     r   zCaption.__init__rU  r   rK   rK   r   rL   rV    r   rV  c                      r   )
DividerrQ   rP  rS   rR   rW   rX   c                   r   Ndividerr   r[   r   rK   rL   r]     r   zDivider.__init__rU  r   rK   rK   r   rL   rY    r   rY  c                      r   )
LatexrQ   rP  rS   rR   rW   rX   c                   r   Nlatexr   r[   r   rK   rL   r]     r   zLatex.__init__rU  r   rK   rK   r   rL   r\    r   r\  c                   @  sN   e Zd ZU ded< ded< ded< ded< ded< dddZedddZdS )r9   MetricProtorQ   rO   r   deltacolorr   rS   rR   rW   rX   c                 C  r  Nmetricr  r[   rK   rK   rL   r]     r  zMetric.__init__c                 C  r   rZ   r   r`   rK   rK   rL   rb     r   zMetric.valueN)rQ   r_  rS   rR   rW   rX   rv   r8  rK   rK   rK   rL   r9     s   
 
r9   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< d' fddZed(ddZ	ed)ddZ
ed*ddZed+ddZd,d d!Zd-d#d$Zd-d%d&Z  ZS ).r/   zAA representation of button_group that is used by ``st.feedback``.list[T] | Noner   FrM   ButtonGroupProtorQ   zlist[ButtonGroupProto.Option]optionsrO   r   rS   rR   rW   rX   c                   $   t  || d| _t|j| _d S Nbutton_groupr   r]   rP   r7  rf  r[   r   rK   rL   r]        zButtonGroup.__init__r'   c                 C  $   t  }| j|_| j|jjdd< |S r  N)r'   r~   indicesint_array_valuer   r   rK   rK   rL   r        zButtonGroup._widget_statelist[T]c                 C  r   6The currently selected values from the options. (list)Nrq  r   r   rK   rK   rL   rb     r   zButtonGroup.valueSequence[int]c                       fdd j D S )EThe indices of the currently selected values from the options. (list)c                      g | ]} j  |qS rK   rf  indexformat_funcr   r   r`   rK   rL   r         z'ButtonGroup.indices.<locals>.<listcomp>r   r`   rK   r`   rL   rn       zButtonGroup.indicesCallable[[Any], Any]c                 C     | j j}td|t | j S zCThe widget's formatting function for displaying options. (callable)r~  rS   r}   r   r)   r~   r\   ssrK   rK   rL   rz       zButtonGroup.format_funcr   ButtonGroup[T]c                 C  r   z/Set the value of the multiselect widget. (list)r   r   rK   rK   rL   r        zButtonGroup.set_valuerE   c                 C  2   | j }||v r	| S | }|| | | | S z
        Add a selection to the widget. Do nothing if the value is already selected.        If testing a multiselect widget with repeated options, use ``set_value``        instead.
        rb   copyappendr   r\   r   currentnewrK   rK   rL   select     

zButtonGroup.selectc                 C  B   | j }||vr	| S | }||v r|| ||v s| | | S z
        Remove a selection from the widget. Do nothing if the value is not        already selected. If a value is selected multiple times, the first        instance is removed.
        rb   r  remover   r  rK   rK   rL   unselect     

zButtonGroup.unselect)rQ   re  rS   rR   rW   rX   r   rW   rq  rW   rt  rW   r~  )r   rq  rW   r  )r   rE   rW   r  )rG   rH   rI   rJ   rw   r   rQ   r]   rx   r   rb   rn  rz  r   r  r  r   rK   rK   r   rL   r/     s$   
 


r/   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< d. fddZed/ddZ	ed0ddZ
ed1ddZed2d d!Zed3d#d$Zd4d'd(Zd5d*d+Zd5d,d-Z  ZS )6Multiselectz'A representation of ``st.multiselect``.rd  r   FrM   MultiSelectProtorQ   rO   r   r0  rf  r   max_selectionsr   r   rS   rR   rW   rX   c                   rg  Nmultiselectrj  r[   r   rK   rL   r]     rk  zMultiselect.__init__r'   c                 C  rl  rm  )r'   r~   r   r*  r   r   rK   rK   rL   r     rp  zMultiselect._widget_staterq  c                 C  r   rr  r   r   rK   rK   rL   rb   #  r   zMultiselect.valuert  c                   ru  )rv  c                   rw  rK   rx  r{  r`   rK   rL   r   /  r|  z'Multiselect.indices.<locals>.<listcomp>r   r`   rK   r`   rL   rn  ,  r}  zMultiselect.indicesSequence[str]c                   ru  )rs  c                      g | ]}  |qS rK   rz  r{  r`   rK   rL   r   4      z&Multiselect.values.<locals>.<listcomp>r   r`   rK   r`   rL   r   1  r}  zMultiselect.valuesr~  c                 C  r  r  r  r  rK   rK   rL   rz  6  r  zMultiselect.format_funcr   Multiselect[T]c                 C  r   r  r   r   rK   rK   rL   r   <  r  zMultiselect.set_valuerE   c                 C  r  r  r  r  rK   rK   rL   r  B  r  zMultiselect.selectc                 C  r  r  r  r  rK   rK   rL   r  P  r  zMultiselect.unselect)rQ   r  rS   rR   rW   rX   r   r  r  )rW   r  r  )r   rq  rW   r  )r   rE   rW   r  )rG   rH   rI   rJ   rw   r   rQ   r]   rx   r   rb   rn  r   rz  r   r  r  r   rK   rK   r   rL   r    s.   
 


r  c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< d
ed< ded< ded< ded< d# fddZd$ddZe	d%ddZ
e	d&ddZd'dd Zd'd!d"Z  ZS )(r;   z(A representation of ``st.number_input``.zNumber | None | InitialValuer   FrM   NumberInputProtorQ   rO   r   Number | Noner$  r%  Numberstepr   r   rS   rR   rW   rX   c                   sJ   t  || t | _d| _|jr|jnd | _|jr |j| _d S d | _d S Nnumber_input)	r   r]   rF   r   rP   has_minr$  has_maxr%  r[   r   rK   rL   r]   p  s
   zNumberInput.__init__r   c                 C  r   )z0Set the value of the ``st.number_input`` widget.r   r   rK   rK   rL   r   w  r   zNumberInput.set_valuer'   c                 C  $   t  }| j|_| jd ur| j|_|S rZ   )r'   r~   rb   double_valuer   rK   rK   rL   r   |  
   
zNumberInput._widget_statec                 C  ,   t | jts	| jS | jj}|sJ || j S )z8Get the current value of the ``st.number_input`` widget.r   r   rF   rS   r}   r~   r   rK   rK   rL   rb     s
   
zNumberInput.valuec                 C  s4   | j du r| S t| j | j | jptd}| |S )zDIncrement the ``st.number_input`` widget as if the user clicked "+".Ninf)rb   r$  r  r%  floatr   r   rK   rK   rL   	increment     

zNumberInput.incrementc                 C  s4   | j du r| S t| j | j | jptd}| |S )zDDecrement the ``st.number_input`` widget as if the user clicked "-".Nz-inf)rb   r%  r  r$  r  r   r   rK   rK   rL   	decrement  r  zNumberInput.decrement)rQ   r  rS   rR   rW   rX   )r   r  rW   r;   r   )rW   r  )rW   r;   rG   rH   rI   rJ   rw   r   rQ   r]   r   rx   r   rb   r  r  r   rK   rK   r   rL   r;   c  s$   
 


r;   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< d& fddZed'ddZ	ed(ddZ
ed)ddZd*d!d"Zed+d$d%Z  ZS ),r<   z!A representation of ``st.radio``.T | None | InitialValuer   FrM   
RadioProtorQ   rO   r   r0  rf  r   
horizontalr   r   rS   rR   rW   rX   c                   ,   t  || t | _d| _t|j| _d S Nradior   r]   rF   r   rP   r7  rf  r[   r   rK   rL   r]        zRadio.__init__
int | Nonec                 C  s"   | j du rdS | j| | j S ))The index of the current selection. (int)N)rb   rf  ry  rz  r`   rK   rK   rL   ry    s   
zRadio.indexT | Nonec                 C  2   t | jts	| jS | jj}|sJ td|| j S z4The currently selected value from the options. (Any)rE   r   r   rF   rS   r}   r   r~   r   rK   rK   rL   rb     
   zRadio.valuer~  c                 C  r  r  r  r  rK   rK   rL   rz    r  zRadio.format_funcr   Radio[T]c                 C  r   zSet the selection by value.r   r   rK   rK   rL   r     r   zRadio.set_valuer'   c                 C  s$   t  }| j|_| jdur| j|_|S rm  )r'   r~   ry  	int_valuer   rK   rK   rL   r     s
   
zRadio._widget_state)rQ   r  rS   rR   rW   rX   rW   r  rW   r  r  )r   r  rW   r  r   )rG   rH   rI   rJ   rw   r   rQ   r]   rx   ry  rb   rz  r   r   r   rK   rK   r   rL   r<     s&   
 
r<   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< d) fddZed*ddZ	ed+ddZ
ed,ddZd-dd Zd-d!d"Zd.d$d%Zed/d'd(Z  ZS )0r=   z%A representation of ``st.selectbox``.r  r   FrM   SelectboxProtorQ   rO   r   r0  rf  r   r   rS   rR   rW   rX   c                   r  N	selectboxr  r[   r   rK   rL   r]     r  zSelectbox.__init__r  c                 C  s4   | j du rdS t| jdkrdS | j| | j S )r  Nr   )rb   r   rf  ry  rz  r`   rK   rK   rL   ry    s
   
zSelectbox.indexr  c                 C  r  r  r  r   rK   rK   rL   rb     r  zSelectbox.valuer~  c                 C  r  r  r  r  rK   rK   rL   rz     r  zSelectbox.format_funcr   Selectbox[T]c                 C  r   r  r   r   rK   rK   rL   r     r   zSelectbox.set_valuec                 C  s
   |  |S r  r   r   rK   rK   rL   r    r   zSelectbox.selectry  c                 C  s(   |du r	|  dS |  td| j| S )zSet the selection by index.NrE   )r   r   rf  )r\   ry  rK   rK   rL   select_index  s   
zSelectbox.select_indexr'   c                 C  s8   t  }| j|_| jdurt| jdkr| j| j |_|S )r  Nr   )r'   r~   ry  r   rf  r  r   rK   rK   rL   r     s
   zSelectbox._widget_state)rQ   r  rS   rR   rW   rX   r  r  r  )r   r  rW   r  )ry  r  rW   r  r   )rG   rH   rI   rJ   rw   r   rQ   r]   rx   ry  rb   rz  r   r  r  r   r   rK   rK   r   rL   r=     s(   
 	


r=   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< d( fddZd)ddZe	d*ddZ
e	d+ddZe	d,d!d"Zd-d&d'Z  ZS ).SelectSliderz)A representation of ``st.select_slider``.zT | Sequence[T] | Noner   FrM   SliderProtorQ   rO   r   SliderProto.DataType.ValueType	data_typer0  rf  r   r   rS   rR   rW   rX   c                   rg  Nselect_sliderrj  r[   r   rK   rL   r]   /  rk  zSelectSlider.__init__r   T | Sequence[T]SelectSlider[T]c                 C  r   )z$Set the (single) selection by value.r   r   rK   rK   rL   r   4  r   zSelectSlider.set_valuer'   c              	     s   t  jg d}z|  j}W n& ttfy8   z| fdd jD }W n   td j Y nw t } j|_||j	j
d d < |S )NFc                   r  rK   r  )r   valr`   rK   rL   r   @  r  z.SelectSlider._widget_state.<locals>.<listcomp>zCould not find index for )r   rf  r)  rz  rb   r   	TypeErrorr'   r~   double_array_valuer   )r\   r+  r   r   rK   r`   rL   r   9  s   zSelectSlider._widget_statec                 C  *   | j dur| j S | jj}|sJ || j S z?The currently selected value or range. (Any or Sequence of Any)Nr   rS   r}   r~   r   rK   rK   rL   rb   I  
   

zSelectSlider.valuer~  c                 C  r  r  r  r  rK   rK   rL   rz  S  r  zSelectSlider.format_funclowerrE   upperc                 C     |  ||gS )z#Set the ranged selection by values.r   r\   r  r  rK   rK   rL   	set_rangeY  r   zSelectSlider.set_rangerQ   r  rS   rR   rW   rX   )r   r  rW   r  r   )rW   r  r  )r  rE   r  rE   rW   r  )rG   rH   rI   rJ   rw   r   rQ   r]   r   rx   r   rb   rz  r  r   rK   rK   r   rL   r  "  s$   
 
	r  SliderValueTc                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< ded< ded< d' fddZd(ddZe	d)dd Z
e	d*d!d"Zd+d%d&Z  ZS ),r&   z"A representation of ``st.slider``.z,SliderValueT | Sequence[SliderValueT] | Noner   FrM   r  rQ   rO   r   r  r  r  r$  r%  r   r  r   r   rS   rR   rW   rX   c                   r   Nsliderr   r[   r   rK   rL   r]   p  r   zSlider.__init__r   %SliderValueT | Sequence[SliderValueT]Slider[SliderValueT]c                 C  r   )z%Set the (single) value of the slider.r   r   rK   rK   rL   r   t  s   zSlider.set_valuer'   c                 C  sD   | j j}tg |dd }|| j}t }| j|_||jjd d < |S )NT)	rQ   r  r   r)  rb   r'   r~   r  r   )r\   r  r+  r   r   rK   rK   rL   r   {  s   zSlider._widget_statec                 C  r  r  r  r   rK   rK   rL   rb     r  zSlider.valuer  r  c                 C  r  )z#Set the ranged value of the slider.r   r  rK   rK   rL   r    s   zSlider.set_ranger  )r   r  rW   r  r   )rW   r  )r  r  r  r  rW   r  )rG   rH   rI   rJ   rw   r   rQ   r]   r   rx   r   rb   r  r   rK   rK   r   rL   r&   a  s$   
 

	r&   c                   @  r  )TableFrM   r  rQ   rS   rR   rW   rX   c                 C  r  Narrow_tabler  r[   rK   rK   rL   r]     r  zTable.__init__r  c                 C  r  rZ   r  r`   rK   rK   rL   rb     r   zTable.valueNr  r  r   rK   rK   rK   rL   r    r   r  c                   @  sD   e Zd ZU eddZded< dZded< dddZedddZ	dS )r>   FrM   	TextProtorQ   NrX   rU   rS   rR   rW   c                 C  s   || _ || _d| _d S Ntext)rQ   rS   rP   r[   rK   rK   rL   r]     r   zText.__init__rO   c                 C  r   r  r   r`   rK   rK   rL   rb     r	  z
Text.value)rQ   r  rS   rR   rW   rX   rv   )
rG   rH   rI   r   rQ   rw   rU   r]   rx   rb   rK   rK   rK   rL   r>     s   
 
r>   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< d  fddZd!ddZe	d"ddZ
e	d#ddZd$ddZ  ZS )%r?   z%A representation of ``st.text_area``.str | None | InitialValuer   FrM   TextAreaProtorQ   rO   r   r   	max_charsr   r   r   rS   rR   rW   rX   c                       t  || t | _d| _d S N	text_arear   r]   rF   r   rP   r[   r   rK   rL   r]        
zTextArea.__init__r   rT   c                 C  r   r   r   r   rK   rK   rL   r     r   zTextArea.set_valuer'   c                 C  r  rZ   r  r   rK   rK   rL   r     r  zTextArea._widget_statec                 C  r  z&The current value of the widget. (str)r  r   rK   rK   rL   rb     
   
zTextArea.valuec                 C  "   | j rt|| j kr| S | |S zv
        Set the value of the widget only if the value does not exceed the        maximum allowed characters.
        r  r   r   r   rK   rK   rL   input     
zTextArea.input)rQ   r  rS   rR   rW   rX   )r   rT   rW   r?   r   r   )r   rO   rW   r?   rG   rH   rI   rJ   rw   r   rQ   r]   r   rx   r   rb   r  r   rK   rK   r   rL   r?     s    
 
	r?   c                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< ded< ded< d! fddZd"ddZe	d#ddZ
e	d$ddZd%dd Z  ZS )&r@   z&A representation of ``st.text_input``.r  r   FrM   TextInputProtorQ   rO   r   r   r  autocompleter   r   r   rS   rR   rW   rX   c                   r  N
text_inputr  r[   r   rK   rL   r]     r  zTextInput.__init__r   rT   c                 C  r   r   r   r   rK   rK   rL   r     r   zTextInput.set_valuer'   c                 C  r  rZ   r  r   rK   rK   rL   r     r  zTextInput._widget_statec                 C  r  r  r  r   rK   rK   rL   rb   
  r  zTextInput.valuec                 C  r  r  r  r   rK   rK   rL   r    r  zTextInput.input)rQ   r  rS   rR   rW   rX   )r   rT   rW   r@   r   r   )r   rO   rW   r@   r   rK   rK   r   rL   r@     s"   
 
	r@   	TimeValuec                      s   e Zd ZU dZded< eddZded< ded	< d
ed< ded< ded< d" fddZd#ddZe	d$ddZ
e	d%ddZd&ddZd&d d!Z  ZS )'rA   z&A representation of ``st.time_input``.zTimeValue | None | InitialValuer   FrM   TimeInputProtorQ   rO   r   r   r  r   r   rS   rR   rW   rX   c                   r  N
time_inputr  r[   r   rK   rL   r]   -  r  zTimeInput.__init__r   TimeValue | Nonec                 C  r   r   r   r   rK   rK   rL   r   2  r   zTimeInput.set_valuer'   c                 C  s4   t  }| j|_td }|| j}|d ur||_|S rZ   )r'   r~   r!   r)  rb   r  )r\   r   r+  serialized_valuerK   rK   rL   r   7  s   zTimeInput._widget_statetime | Nonec                 C  sB   t | jts| j}t |tr| S |S | jj}|sJ || j S )z'The current value of the widget. (time))r   r   rF   r   r   rS   r}   r~   )r\   r   r   rK   rK   rL   rb   B  s   
zTimeInput.valuec                 C  s:   | j du r| S tt | j t| jd }| | S )zSelect the next available time.Nseconds	rb   r   combiner   todayr   r  r   r   r\   dtrK   rK   rL   r  L     
zTimeInput.incrementc                 C  s:   | j du r| S tt | j t| jd }| | S )z#Select the previous available time.Nr  r  r  rK   rK   rL   r  S  r  zTimeInput.decrement)rQ   r  rS   rR   rW   rX   )r   r	  rW   rA   r   )rW   r  )rW   rA   r  rK   rK   r   rL   rA   "  s    
 


	rA   c                   @  r   )rB   FrM   
ToastProtorQ   rO   r   rS   rR   rW   rX   c                 C  r  Ntoastr  r[   rK   rK   rL   r]   `  r  zToast.__init__c                 C  r   rZ   r   r`   rK   rK   rL   rb   f  r   zToast.valueN)rQ   r  rS   rR   rW   rX   rv   r   rK   rK   rK   rL   rB   [  s   
 
rB   c                      s|   e Zd ZU dZded< eddZded< ded	< ded
< ded< d fddZedddZ	edddZ
dddZ  ZS )Togglez"A representation of ``st.toggle``.r   r   FrM   r   rQ   rO   r   r   r   rS   rR   rW   rX   c                   s   t  || d | _d| _d S Ntoggler   r[   r   rK   rL   r]   v  r   zToggle.__init__r'   c                 C  r   rZ   r   r   rK   rK   rL   r   {  r   zToggle._widget_stater   c                 C  r   )z'The current value of the widget. (bool)Nr   r   r   rK   rK   rL   rb     r   zToggle.valuer   c                 C  r   r   r   r   rK   rK   rL   r     r   zToggle.set_valuer   r   r   )r   r   rW   r  )rG   rH   rI   rJ   rw   r   rQ   r]   rx   r   rb   r   r   rK   rK   r   rL   r  k  s   
 r  c                   @  s  e Zd ZU dZded< ded< eddZded	< eddZd
ed< dddZdddZ	dddZ
dddZedddZeddd Zedd"d#Zedd%d&Zedd(d)Zedd+d,Zedd.d/Zedd1d2Zedd4d5Zedd7d8Zedd:d;Zedd=d>Zedd@dAZeddCdDZeddFdGZeddIdJZeddLdMZeddOdPZeddRdSZeddUdVZ eddXdYZ!edd[d\Z"edd^d_Z#eddadbZ$eddddeZ%eddgdhZ&eddjdkZ'eddmdnZ(eddpdqZ)eddsdtZ*eddvdwZ+eddydzZ,edd|d}Z-edddZ.edddZ/edddZ0edddZ1edddZ2edddZ3edddZ4edddZ5dddZ6dddddZ7dddZ8dS )r-   ad  A container of other elements.

    Elements within a Block can be inspected and interacted with. This follows
    the same syntax as inspecting and interacting within an ``AppTest`` object.

    For all container classes, parameters of the original element can be
    obtained as properties. For example, ``ChatMessage.avatar`` and
    ``Tab.label``.
    rO   rP   zdict[int, Node]childrenFrM   r   rQ   rR   rS   BlockProto | NonerW   rX   c                 C  sB   i | _ || _|r|d}|d ur|| _nd| _nd| _|| _d S )NrP   	containerunknown)r  rQ   rz   rP   rS   r{   rK   rK   rL   r]     s   

zBlock.__init__r   c                 C  r   rZ   )r   r  r`   rK   rK   rL   r     rr   zBlock.__len__Iterator[Node]c                 c  s(    | V  | j D ]
}| j | E d H  qd S rZ   r  )r\   	child_idxrK   rK   rL   ra     s
   
zBlock.__iter__kNodec                 C  s
   | j | S rZ   r  )r\   r!  rK   rK   rL   r     rr   zBlock.__getitem__rT   c                 C  rY   rZ   rK   r`   rK   rK   rL   rU     r   z	Block.keyWidgetList[Button]c                 C     t | dS )Nr   r   getr`   rK   rK   rL   r     r   zBlock.buttonWidgetList[ButtonGroup[Any]]c                 C  r$  rh  r%  r`   rK   rK   rL   ri    r   zBlock.button_groupElementList[Caption]c                 C  r$  rW  r   r&  r`   rK   rK   rL   rX    r   zBlock.captionWidgetList[ChatInput]c                 C  r$  r   r%  r`   rK   rK   rL   r     r   zBlock.chat_inputSequence[ChatMessage]c                 C  r   Nchat_messager&  r`   rK   rK   rL   r-    r   zBlock.chat_messageWidgetList[Checkbox]c                 C  r$  r   r%  r`   rK   rK   rL   r     r   zBlock.checkboxElementList[Code]c                 C  r$  r  r)  r`   rK   rK   rL   r    r   z
Block.codeWidgetList[ColorPicker]c                 C  r$  r  r%  r`   rK   rK   rL   r    r   zBlock.color_pickerSequence[Column]c                 C  r   Ncolumnr.  r`   rK   rK   rL   columns  r   zBlock.columnsElementList[Dataframe]c                 C  r$  r  r)  r`   rK   rK   rL   	dataframe  r   zBlock.dataframeWidgetList[DateInput]c                 C  r$  )Nr'  r%  r`   rK   rK   rL   r'    r   zBlock.date_inputElementList[Divider]c                 C  r$  rZ  r)  r`   rK   rK   rL   r[    r   zBlock.dividerElementList[Error]c                 C  r$  r   r)  r`   rK   rK   rL   r     r   zBlock.errorElementList[Exception]c                 C  r$  r4  r)  r`   rK   rK   rL   r5    r   zBlock.exceptionSequence[Expander]c                 C  r   Nexpanderr.  r`   rK   rK   rL   r>    r   zBlock.expanderElementList[Header]c                 C  r$  rA  r)  r`   rK   rK   rL   rB    r   zBlock.headerElementList[Info]c                 C  r$  r   r)  r`   rK   rK   rL   r     r   z
Block.infoElementList[Json]c                 C  r$  rN  r)  r`   rK   rK   rL   rO  	  r   z
Block.jsonElementList[Latex]c                 C  r$  r]  r)  r`   rK   rK   rL   r^    r   zBlock.latexElementList[Markdown]c                 C  r$  rS  r)  r`   rK   rK   rL   rT    r   zBlock.markdownElementList[Metric]c                 C  r$  rb  r)  r`   rK   rK   rL   rc    r   zBlock.metricWidgetList[Multiselect[Any]]c                 C  r$  r  r%  r`   rK   rK   rL   r    r   zBlock.multiselectWidgetList[NumberInput]c                 C  r$  r  r%  r`   rK   rK   rL   r    r   zBlock.number_inputWidgetList[Radio[Any]]c                 C  r$  r  r%  r`   rK   rK   rL   r  !  r   zBlock.radioWidgetList[SelectSlider[Any]]c                 C  r$  r  r%  r`   rK   rK   rL   r  %  r   zBlock.select_sliderWidgetList[Selectbox[Any]]c                 C  r$  r  r%  r`   rK   rK   rL   r  )  r   zBlock.selectboxWidgetList[Slider[Any]]c                 C  r$  r  r%  r`   rK   rK   rL   r  -  r   zBlock.sliderSequence[Status]c                 C  r   Nstatusr.  r`   rK   rK   rL   rM  1  r   zBlock.statusElementList[Subheader]c                 C  r$  rG  r)  r`   rK   rK   rL   rH  5  r   zBlock.subheaderElementList[Success]c                 C  r$  r   r)  r`   rK   rK   rL   r   9  r   zBlock.successElementList[Table]c                 C  r$  r  r)  r`   rK   rK   rL   table=  r   zBlock.tableSequence[Tab]c                 C  r   Ntabr.  r`   rK   rK   rL   tabsA  r   z
Block.tabsElementList[Text]c                 C  r$  r  r)  r`   rK   rK   rL   r  E  r   z
Block.textWidgetList[TextArea]c                 C  r$  r  r%  r`   rK   rK   rL   r  I  r   zBlock.text_areaWidgetList[TextInput]c                 C  r$  r  r%  r`   rK   rK   rL   r  M  r   zBlock.text_inputWidgetList[TimeInput]c                 C  r$  r  r%  r`   rK   rK   rL   r  Q  r   zBlock.time_inputElementList[Title]c                 C  r$  rJ  r)  r`   rK   rK   rL   rK  U  r   zBlock.titleElementList[Toast]c                 C  r$  r  r)  r`   rK   rK   rL   r  Y  r   zBlock.toastWidgetList[Toggle]c                 C  r$  r  r%  r`   rK   rK   rL   r  ]  r   zBlock.toggleElementList[Warning]c                 C  r$  r   r)  r`   rK   rK   rL   r   a  r   zBlock.warningelement_typeSequence[Node]c                   s    fdd| D S )Nc                   s   g | ]	}|j  kr|qS rK   )rP   r   r^  rK   rL   r   f  s    zBlock.get.<locals>.<listcomp>rK   )r\   r^  rK   r`  rL   r&  e  s   z	Block.getNrf   rg   rh   rD   c                C  ri   )Run the script with updated widget values.

        Parameters
        ----------
        timeout
            The maximum number of seconds to run the script. None means
            use the AppTest's default.
        rf   rj   rl   rK   rK   rL   rk   h  rm   z	Block.runc                 C  r   rZ   )rp   r`   rK   rK   rL   rq   s  s   zBlock.__repr__)rQ   r  rS   rR   rW   rX   r   )rW   r  )r!  r   rW   r"  r   )rW   r#  )rW   r'  )rW   r(  )rW   r*  )rW   r+  )rW   r/  )rW   r0  )rW   r1  )rW   r2  )rW   r6  )rW   r8  )rW   r9  )rW   r:  )rW   r;  )rW   r<  )rW   r?  )rW   r@  )rW   rA  )rW   rB  )rW   rC  )rW   rD  )rW   rE  )rW   rF  )rW   rG  )rW   rH  )rW   rI  )rW   rJ  )rW   rK  )rW   rN  )rW   rO  )rW   rP  )rW   rR  )rW   rV  )rW   rW  )rW   rX  )rW   rY  )rW   rZ  )rW   r[  )rW   r\  )rW   r]  )r^  rO   rW   r_  ru   rv   )9rG   rH   rI   rJ   rw   r   rQ   rS   r]   r   ra   r   rx   rU   r   ri  rX  r   r-  r   r  r  r5  r7  r'  r[  r   r5  r>  rB  r   rO  r^  rT  rc  r  r  r  r  r  r  rM  rH  r   rQ  rU  r  r  r  r  rK  r  r  r   r&  rk   rq   rK   rK   rK   rL   r-     s   
 





r-   r\   objectrW   rO   c                   s   j j}dddg t i g tr fddtD }n fddj D }g }|D ]\}}t|tr@| dt	| n| d|}|
| q.d|d	  |d	< d
|}t|d}| d| dS )ziA custom repr similar to `streamlit.util.repr_` but that shows tree
    structure using indentation.
    N Fc                 3  sJ    | ] }|j r"t|j|jkr"t|j vr|jt|jfV  qd S rZ   )rN   rd   rc   default)r   fdefaultsr\   rK   rL   	<genexpr>  s    zrepr_.<locals>.<genexpr>c                 3  s$    | ]\}}| vr||fV  qd S rZ   rK   )r   re  r   )rg  rK   rL   rh    s   " =
r   ,
    (z
))r   rG   setr
   r	   __dict__itemsr   dictformat_dictr  jointextwrapindent)r\   	classnamefields_valsreprs
field_namerb   linefield_reprsrK   rf  rL   rp   w  s$   
rp   ddict[Any, Any]c                 C  sP   g }|   D ]\}}| d|}|| qd|}t|d}d| dS )Nz: rk  rl  z{
z
})rp  r  rs  rt  ru  )r|  linesr!  r   rz  rrK   rK   rL   rr    s   
rr  c                   @  s   e Zd ZdZ	ddddZdS )SpecialBlockz4Base class for the sidebar and main body containers.NrQ   r  rS   rR   rP   rT   rW   rX   c                 C  sT   i | _ || _|r|| _n|r"|dr"|d}|d usJ || _nd| _|| _d S )NrP   r  )r  rQ   rP   rz   rS   )r\   rQ   rS   rP   r|   rK   rK   rL   r]     s   

zSpecialBlock.__init__rZ   )rQ   r  rS   rR   rP   rT   rW   rX   )rG   rH   rI   rJ   r]   rK   rK   rK   rL   r    s    r  c                   @  sP   e Zd ZU dZeddZded< eddZded< ded< ded	< dddZdS )ChatMessagez(A representation of ``st.chat_message``.FrM   rO   rP   BlockProto.ChatMessagerQ   rc   avatarrS   rR   rW   rX   c                 C  ,   i | _ || _|| _d| _|j| _|j| _d S r,  )r  rQ   rS   rP   rc   r  r[   rK   rK   rL   r]        zChatMessage.__init__N)rQ   r  rS   rR   rW   rX   	rG   rH   rI   rJ   r   rP   rw   rQ   r]   rK   rK   rK   rL   r       
 r  c                   @  sP   e Zd ZU dZeddZded< eddZded< ded	< ded
< dddZdS )Columnz3A representation of a column within ``st.columns``.FrM   rO   rP   BlockProto.ColumnrQ   r  weightgaprS   rR   rW   rX   c                 C  r  r3  )r  rQ   rS   rP   r  r  r[   rK   rK   rL   r]     r  zColumn.__init__N)rQ   r  rS   rR   rW   rX   r  rK   rK   rK   rL   r    r  r  c                   @  sL   e Zd ZU eddZded< eddZded< ded< ded< dddZdS )ExpanderFrM   rO   rP   BlockProto.ExpandablerQ   r   r   rS   rR   rW   rX   c                 C  r  r=  r  rQ   rS   rP   r   r   r[   rK   rK   rL   r]     s   zExpander.__init__NrQ   r  rS   rR   rW   rX   )rG   rH   rI   r   rP   rw   rQ   r]   rK   rK   rK   rL   r    s   
 r  c                   @  sZ   e Zd ZU eddZded< eddZded< ded< ded< dddZedddZ	dS )StatusFrM   rO   rP   r  rQ   r   r   rS   rR   rW   rX   c                 C  r  rL  r  r[   rK   rK   rL   r]      s   zStatus.__init__c                 C  s2   | j dkrdS | j dkrdS | j dkrdS td)Nspinnerrunningz:material/check:completez:material/error:r   zUnknown Status state)r   r   r`   rK   rK   rL   r     s   


zStatus.stateNr  rv   )
rG   rH   rI   r   rP   rw   rQ   r]   rx   r   rK   rK   rK   rL   r    s   
 
r  c                   @  sH   e Zd ZU dZeddZded< eddZded< ded< dddZdS )Tabz+A representation of tab within ``st.tabs``.FrM   rO   rP   BlockProto.TabrQ   r   rS   rR   rW   rX   c                 C  s$   i | _ || _|| _d| _|j| _d S rS  )r  rQ   rS   rP   r   r[   rK   rK   rL   r]     s
   zTab.__init__N)rQ   r  rS   rR   rW   rX   r  rK   rK   rK   rL   r    s   
 r  r"  nodeWidgetState | Nonec                 C  s   t | tr| jS d S rZ   )r   r   r   )r  rK   rK   rL   get_widget_state*  s   
r  c                   @  s~   e Zd ZU dZedddZded< dd	d
Zed ddZ	ed ddZ
ed!ddZd"ddZddd#ddZd$ddZdS )%rR   ax  A tree of the elements produced by running a streamlit script.

    Elements can be queried in three ways:
    - By element type, using `.foo` properties to get a list of all of that element,
    in the order they appear in the app
    - By user key, for widgets, by calling the above list with a key: `.foo(key='bar')`
    - Positionally, using list indexing syntax (`[...]`) to access a child of a
    block element. Not recommended because the exact tree structure can be surprising.

    Element queries made on a block container will return only the elements
    descending from that block.

    Returned elements have methods for accessing whatever attributes are relevant.
    For very simple elements this may be only its value, while complex elements
    like widgets have many.

    Widgets provide a fluent API for faking frontend interaction and rerunning
    the script with the new widget values. All widgets provide a low level `set_value`
    method, along with higher level methods specific to that type of widget.
    After an interaction, calling `.run()` will update the AppTest with the
    results of that script run.
    FN)rN   rd  zAppTest | None_runnerrW   rX   c                 C  s   i | _ | | _d| _d S )NrS   )r  rS   rP   r`   rK   rK   rL   r]   K  r   zElementTree.__init__r-   c                 C     | d }t |tsJ |S )Nr   r   r-   )r\   mrK   rK   rL   mainP     zElementTree.mainc                 C  r  )N   r  )r\   srK   rK   rL   sidebarV  r  zElementTree.sidebarrC   c                 C  s   | j d usJ | j jS rZ   )r  r}   r`   rK   rK   rL   r}   \  s   zElementTree.session_stater(   c                 C  s0   t  }| D ]}t|}|d ur|j| q|S rZ   )r(   r  widgetsr  )r\   r   r  wrK   rK   rL   get_widget_statesa  s   zElementTree.get_widget_statesrf   rg   rh   rD   c                C  s&   | j dusJ |  }| j j||dS )ra  Nrf   )r  r  _run)r\   rg   widget_statesrK   rK   rL   rk   j  s   	zElementTree.runrO   c                 C  r   rZ   )rr  r  r`   rK   rK   rL   rq   x  rr   zElementTree.__repr__)rW   rX   )rW   r-   )rW   rC   )rW   r(   ru   rv   )rG   rH   rI   rJ   r   r  rw   r]   rx   r  r  r}   r  rk   rq   rK   rK   rK   rL   rR   0  s   
 

	rR   messageslist[ForwardMsg]c                 C  sP  t  }td|ddtd|ddtd|ddd|_| D ]	}|ds$q|jj}|j}|dd	kr|j}|d}|d
kr|j	j
}|tjjkrRt|j	|d}n|tjjkrat|j	|d}ny|tjjkrpt|j	|d}nj|tjjkrt|j	|d}n[td|j	j
 |dkrt|j|d}nE|dkrt|j|d}n8|dkrt|j|d}n+|dkrt|j|d}n|dkrt|j|d}n|dkr|j j!}	|	t"j#j$krt%|j |d}nt&|j |d}n|dkrt'|j(|d}n|dkrt)|j*|d}n|dkrt+|j,|d}n|dkr t-|j.|d}n|dkrd|j/j0t1j2j3kr7t4|j/|d}n|j/j0t1j5j3krIt6|j/|d}n|j/j0t1j7j3kr[t8|j/|d}ntd|j/j0 |dkrrt9|j:|d}nh|dkr|j;j<t=j>j?krt@|j;|d}nQ|j;j<t=j>jAkrtB|j;|d}n?|j;j<t=j>jCkrtD|j;|d}n-|j;j<t=j>jEkrtF|j;|d}ntd|j;j< |dkrtG|jH|d}n|dkrtI|jJ|d}n|dkrtK|jL|d}n|dkrtM|jN|d}n|d kr
tO|jP|d}n|d!kr9|jQj!tRj>jSkr tT|jQ|d}n|jQj!tRj>jUkr1tV|jQ|d}ntd"|jQ |d#krFtW|jX|d}n|d$krStY|jZ|d}n|d%kr`t[|j\|d}nz|d&krmt]|j^|d}nm|d'krzt_|j`|d}n`ta||d}nY|dd(kr|jb}
|
d}|d)krtc|
jd|d}n<|d*krte|
jf|d}n/|d+kr|
jgjhrti|
jg|d}ntj|
jg|d}n|d,krtk|
jl|d}ntm|
|d-}nq|}|dd. D ]$}|j}|n|}|du rtmd|d-}|||< to|tmsJ |}qto|tmr|jn|d. }|dur|j|_||j|d. < q|S )/zTransform a list of `ForwardMsg` into a tree matching the implicit
    tree structure of blocks and elements in a streamlit app.

    Returns the root of the tree, which acts as the entrypoint for the query
    and interaction API.
    r  N)rP   rS   rQ   r  event)r   r     r`  rP   new_elementalert)rS   zUnknown alert type with format r  r  r   ri  r   r   r  r  r'  r5  headingzUnknown heading type with tag rO  rT  zUnknown markdown type rc  r  r  r  r  r  zSlider with unknown type r  r  r  r  r  	add_blockr-  r4  
expandablerT  )rQ   rS   )prR   r  r  HasFieldmetadata
delta_pathr`  rz   r  r  formatr   FormatERRORr   INFOr   SUCCESSr   WARNINGr   r   r  r  r  r  r.   r   r/   ri  r0   r   r   rP   r   	StyleTypeTOGGLEr  r$   r1   r  r2   r  r3   r'  r5   r5  r  r;  r   	TITLE_TAGrb   rI  
HEADER_TAGr?  SUBHEADER_TAGrF  r8   rO  rT  r^  rP  TypeNATIVEr%   CAPTIONrV  LATEXr\  DIVIDERrY  r9   rc  r  r  r;   r  r<   r  r=   r  r  r  SLIDERr&   SELECT_SLIDERr  r>   r  r?   r  r@   r  rA   r  rB   r  ry   r  r  r-  r  r4  r  r   r  r  r  rT  r-   r&  r   )r  rS   msgr  r`  eltr|   alert_formatnew_nodestyleblockbtycurrent_noder   r  childplaceholder_blockrK   rK   rL   parse_tree_from_messages|  s   




























r  )r\   rb  rW   rO   )r|  r}  rW   rO   )r  r"  rW   r  )r  r  rW   rR   )
__future__r   rt  abcr   r   collections.abcr   r   dataclassesr   r   r	   r
   r   r   r   r   typingr   r   r   r   r   r   r   r   typing_extensionsr   r   	streamlitr   r   streamlit.elements.headingr   (streamlit.elements.widgets.select_sliderr   !streamlit.elements.widgets.sliderr   r   'streamlit.elements.widgets.time_widgetsr   r    r!   r"   streamlit.proto.Alert_pb2r#   r   streamlit.proto.Checkbox_pb2r$   r   streamlit.proto.Markdown_pb2r%   rP  streamlit.proto.Slider_pb2r&   r   streamlit.proto.WidgetStates_pb2r'   r(   streamlit.runtime.state.commonr)   r*   pandasr+   r  streamlit.proto.Arrow_pb2r,   r  streamlit.proto.Block_pb2r-   
BlockProtostreamlit.proto.Button_pb2r.   r   streamlit.proto.ButtonGroup_pb2r/   re  streamlit.proto.ChatInput_pb2r0   r   streamlit.proto.Code_pb2r1   r   streamlit.proto.ColorPicker_pb2r2   r
  streamlit.proto.DateInput_pb2r3   r#  streamlit.proto.Element_pb2r4   rV   streamlit.proto.Exception_pb2r5   r3  streamlit.proto.ForwardMsg_pb2r6   streamlit.proto.Heading_pb2r7   r:  streamlit.proto.Json_pb2r8   rL  streamlit.proto.Metric_pb2r9   r_  streamlit.proto.MultiSelect_pb2r:   r  streamlit.proto.NumberInput_pb2r;   r  streamlit.proto.Radio_pb2r<   r  streamlit.proto.Selectbox_pb2r=   r  streamlit.proto.Text_pb2r>   r  streamlit.proto.TextArea_pb2r?   r  streamlit.proto.TextInput_pb2r@   r  streamlit.proto.TimeInput_pb2rA   r  streamlit.proto.Toast_pb2rB   r  *streamlit.runtime.state.safe_session_staterC   streamlit.testing.v1.app_testrD   rE   rF   ry   r   r   r   r   r   r   r   r   r   r   r  r!  rw   r"  r9  r?  rF  rI  rV  rY  r\  r  r   r  r  r  r  r  r  r  rp   rr  r  r  r  r  r  r  r"  r  rR   r  rK   rK   rK   rL   <module>   s@  (5)	)",.,QY<:F;5338% 
f
#

K