o
    沪g                     @  sj  U d dl mZ d dlZd dlmZmZ d dl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 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(m)Z)m*Z*m+Z+ d dl,m-Z. d dl/m0Z1 d dl2m3Z4 d dl5m6Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z= er<d dl>m?Z@ d dlAmBZC d dlDmEZF d dlGmHZI d dlJmKZL d dlMmNZO d dlPmQZR d dlSmTZU d dlVmWZX d dlYmZZ[ d dl\m]Z^ d dl_m`Z` d d lambZc d d!ldmeZf d d"lgmhZi d d#ljmkZl d d$lmmnZo d d%lpmqZr d d&lsmtZu d d'lvmwZx d d(lymzZ{ d d)l|m}Z~ d d*lmZ d d+lmZ d d,lmZ d d-lmZ ed.Ze	G d/d0 d0Ze	G d1d2 d2eZZe	d3d4G d5d6 d6eZZe	d3d4G d7d8 d8eZeZed9eZd:d;ZG d<d= d=ee Zed>ed:d;ZG d?d@ d@ee ee Ze	d3d4G dAdB dBeZ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ZHe	d3d4G dMdN dNeZNe	d3d4G dOdP dPeZ0e	d3d4G dQdR dReZZQe	d3d4G dSdT dTeZTe	d3d4G dUdV dVeZZeeef ZdWedX< eeee df ZdWedY< e	d3d4G dZd[ d[eZWe	d3d4G d\d] d]eZZ]e	d3d4G d^d_ d_eZeZe	d3d4G d`da daeZe	d3d4G dbdc dceZe	d3d4G ddde deeZe	d3d4G dfdg dgeZZee	d3d4G dhdi dieZZ3e	d3d4G djdk dke3Ze	d3d4G dldm dme3Ze	d3d4G dndo doe3Ze	d3d4G dpdq dqeZZhe	d3d4G drds dseee ZKe	d3d4G dtdu dueee Zeeef Ze	d3d4G dvdw dweZne	d3d4G dxdy dyeee Zqe	d3d4G dzd{ d{eee Zte	d3d4G d|d} d}eee Ze	d3d4G d~d deee& Z6e	d3d4G dd deZZe	d3d4G dd deZZwe	d3d4G dd deZze	d3d4G dd deZ}eeef ZdWed< e	d3d4G dd deZe	d3d4G dd deZZe	d3d4G dd deZe	d3d4G dd dZEdddZdddZe	d3d4G dd deEZe	d3d4G dd deEZe	d3d4G dd deEZe	d3d4G dd deEZe	d3d4G dd deEZe	d3d4G dd deEZeeZeEf ZdWed< dddZe	d3d4G dd deEZdddZdS )    )annotationsN)ABCabstractmethod)Sequence)	dataclassfieldfieldsis_dataclass)datedatetimetime	timedelta)TYPE_CHECKINGAnyCallableGenericTypeVarUnioncastoverload)	TypeAlias)dataframe_utilutil)HeadingProtoTag)SelectSliderSerde)SliderSerde
SliderStepSliderValueT)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 )InitialValuez>This class is used to represent the initial value of a widget.N)__name__
__module____qualname____doc__ rJ   rJ   ]/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/streamlit/testing/v1/element_tree.pyrE   W   s    rE   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 Zee	d!ddZd"ddZddd#ddZdd ZdS )$r3   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ElementProtoc                 C     d S NrJ   selfrP   rR   rJ   rJ   rK   __init__~      zElement.__init__c                 c  s    | V  d S rW   rJ   rY   rJ   rJ   rK   __iter__   s   
zElement.__iter__returnc                 C  s   dS )z%The value or contents of the element.NrJ   r\   rJ   rJ   rK   value   s   zElement.valuenamec                 C  s   t | j|S )z3Fallback attempt to get an attribute from the proto)getattrrP   )rY   r`   rJ   rJ   rK   __getattr__   s   zElement.__getattr__Ntimeoutrd   float | NonerC   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.
        rc   rR   runrY   rd   rJ   rJ   rK   rh         	zElement.runc                 C  
   t | S rW   r   repr_r\   rJ   rJ   rK   __repr__      
zElement.__repr__rP   rU   rR   rQ   r^   r   )r`   rN   r^   r   rd   re   r^   rC   )rF   rG   rH   rI   r   rO   __annotations__rP   rR   r   rZ   r]   propertyr_   rb   rh   rn   rJ   rJ   rJ   rK   r3   g   s   
 
r3   FrL   c                   @  s$   e Zd ZdddZedd	d
ZdS )UnknownElementrP   rU   rR   rQ   c                 C  s8   | d}|d usJ t||| _|| _|| _d | _d S )NrO   )
WhichOneofra   rP   rR   rO   rT   rY   rP   rR   tyrJ   rJ   rK   rZ      s   

zUnknownElement.__init__r^   r   c                 C  s>   z| j j}|d usJ || jj W S  ty   | jj Y S w rW   )rR   session_staterP   id
ValueErrorr_   rY   staterJ   rJ   rK   r_      s   zUnknownElement.valueNrp   rq   )rF   rG   rH   rZ   rt   r_   rJ   rJ   rJ   rK   ru      s    
ru   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.FrL   rN   rz   booldisabledrS   rT   r   _valuerP   rR   rQ   c                 C  s"   || _ || _t| j| _d | _d S rW   )rP   rR   r)   rz   rT   r   rX   rJ   rJ   rK   rZ      s   
zWidget.__init__vc                 C  
   || _ | S zSet the value of the widget.r   rY   r   rJ   rJ   rK   	set_value      zWidget.set_valuer^   r&   c                 C  rV   rW   rJ   r\   rJ   rJ   rK   _widget_state      zWidget._widget_stateN)rP   r   rR   rQ   )r   r   r^   r&   )rF   rG   rH   rI   r   rz   rs   rZ   r   rt   r   r   rJ   rJ   rJ   rK   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 Z	dd Z
d'ddZed(dd Zd!S ))ElementListelsSequence[El_co]c                 C  s
   || _ d S rW   _list)rY   r   rJ   rJ   rK   rZ      ro   zElementList.__init__r^   intc                 C  
   t | jS rW   )lenr   r\   rJ   rJ   rK   __len__   ro   zElementList.__len__c                 C     t | S rW   )r   r\   rJ   rJ   rK   r         zElementList.lenidxr   c                 C  rV   rW   rJ   rY   r   rJ   rJ   rK   __getitem__   r[   zElementList.__getitem__sliceElementList[El_co]c                 C  rV   rW   rJ   r   rJ   rJ   rK   r      r[   int | sliceEl_co | ElementList[El_co]c                 C  s"   t |trt| j| S | j| S rW   )
isinstancer   r   r   r   rJ   rJ   rK   r      s   

c                 c  s    | j E d H  d S rW   r   r\   rJ   rJ   rK   r]      s   zElementList.__iter__c                 C  rk   rW   rl   r\   rJ   rJ   rK   rn      ro   zElementList.__repr__otherElementList[El_co] | objectr   c                 C  s    t |tr| j|jkS | j|kS rW   )r   r   r   )rY   r   rJ   rJ   rK   __eq__   s   

zElementList.__eq__Sequence[Any]c                 C  s   dd | D S )Nc                 S  s   g | ]}|j qS rJ   r_   .0erJ   rJ   rK   
<listcomp>   s    z&ElementList.values.<locals>.<listcomp>rJ   r\   rJ   rJ   rK   values      zElementList.valuesN)r   r   r^   r   )r   r   r^   r   )r   r   r^   r   )r   r   r^   r   )r   r   r^   r   )r^   r   )rF   rG   rH   rZ   r   rt   r   r   r   r]   rn   r   r   rJ   rJ   rJ   rK   r      s    



r   W_coc                   @  s   e Zd ZdddZdS )	
WidgetListrT   rN   r^   r   c                 C  s&   | j D ]}|j|kr|  S qt|rW   )r   rT   KeyError)rY   rT   r   rJ   rJ   rK   __call__   s
   

zWidgetList.__call__N)rT   rN   r^   r   )rF   rG   rH   r   rJ   rJ   rJ   rK   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 )	AlertBaseFrL   
AlertProtorP   rN   iconrR   rQ   c                 C  s   || _ d | _|| _d S rW   )rP   rT   rR   rX   rJ   rJ   rK   rZ        
zAlertBase.__init__r^   c                 C     | j jS rW   rP   bodyr\   rJ   rJ   rK   r_     r   zAlertBase.valueNrP   r   rR   rQ   r^   rN   	rF   rG   rH   r   rP   rs   rZ   rt   r_   rJ   rJ   rJ   rK   r     s   
 
r   c                         e Zd Zd fddZ  ZS )ErrorrP   r   rR   rQ   c                      t  || d| _d S NerrorsuperrZ   rO   rX   	__class__rJ   rK   rZ        
zError.__init__r   rF   rG   rH   rZ   __classcell__rJ   rJ   r   rK   r         r   c                      r   )WarningrP   r   rR   rQ   c                   r   Nwarningr   rX   r   rJ   rK   rZ     r   zWarning.__init__r   r   rJ   rJ   r   rK   r     r   r   c                      r   )InforP   r   rR   rQ   c                   r   Ninfor   rX   r   rJ   rK   rZ   !  r   zInfo.__init__r   r   rJ   rJ   r   rK   r     r   r   c                      r   )SuccessrP   r   rR   rQ   c                   r   Nsuccessr   rX   r   rJ   rK   rZ   (  r   zSuccess.__init__r   r   rJ   rJ   r   rK   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   FrL   ButtonProtorP   rN   labelhelpform_idrR   rQ   c                   s   t  || d| _d| _d S )NFbuttonr   rZ   r   rO   rX   r   rJ   rK   rZ   8     
zButton.__init__r^   r&   c                 C     t  }| j|_| j|_|S rW   )r&   rz   r   trigger_valuerY   wsrJ   rJ   rK   r   =     zButton._widget_statec                 C  s0   | j r| j S | jj}|sJ tt|t | j S )zThe value of the button. (bool))r   rR   ry   r   r   r(   rz   r|   rJ   rJ   rK   r_   D  s
   zButton.valuer   c                 C  r   )zSet the value of the button.r   r   rJ   rJ   rK   r   N  r   zButton.set_valuec                 C  
   |  dS )z$Set the value of the button to True.Tr   r\   rJ   rJ   rK   clickS     
zButton.click)rP   r   rR   rQ   r   r^   r   )r   r   r^   r-   )r^   r-   )rF   rG   rH   rI   rs   r   rP   rZ   rt   r   r_   r   r   r   rJ   rJ   r   rK   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 )r/   z&A representation of ``st.chat_input``.rS   r   FrL   ChatInputProtorP   rN   placeholderrR   rQ   c                   r   N
chat_inputr   rX   r   rJ   rK   rZ   `  r   zChatInput.__init__r   r^   c                 C  r   r   r   r   rJ   rJ   rK   r   d  r   zChatInput.set_valuer&   c                 C  s&   t  }| j|_| jd ur| j|j_|S rW   )r&   rz   r   string_trigger_valuedatar   rJ   rJ   rK   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   rR   ry   r(   rz   r|   rJ   rJ   rK   r_   q  s
   zChatInput.value)rP   r   rR   rQ   )r   rS   r^   r/   r   r^   rS   rF   rG   rH   rI   rs   r   rP   rZ   r   rt   r   r_   r   rJ   rJ   r   rK   r/   X  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 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   FrL   CheckboxProtorP   rN   r   r   r   rR   rQ   c                   r   Ncheckboxr   rX   r   rJ   rK   rZ     r   zCheckbox.__init__r^   r&   c                 C  r   rW   r&   rz   r_   
bool_valuer   rJ   rJ   rK   r     r   zCheckbox._widget_stater   c                 C  0   | j dur| j S | jj}|sJ tt|| j S )zThe value of the widget. (bool)Nr   rR   ry   r   r   rz   r|   rJ   rJ   rK   r_     
   
zCheckbox.valuer   c                 C  r   r   r   r   rJ   rJ   rK   r     r   zCheckbox.set_valuec                 C  r   )z$Set the value of the widget to True.Tr   r\   rJ   rJ   rK   check  r   zCheckbox.checkc                 C  r   )z%Set the value of the widget to False.Fr   r\   rJ   rJ   rK   uncheck  r   zCheckbox.uncheckrP   r   rR   rQ   r   r   )r   r   r^   r#   )r^   r#   )rF   rG   rH   rI   rs   r   rP   rZ   rt   r   r_   r   r   r   r   rJ   rJ   r   rK   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 )r0   z A representation of ``st.code``.FrL   	CodeProtorP   rN   languager   show_line_numbersNonerT   rR   rQ   c                 C     || _ d | _|| _d| _d S NcoderP   rT   rR   rO   rX   rJ   rJ   rK   rZ        
zCode.__init__r^   c                 C  r   zThe value of the element. (str))rP   	code_textr\   rJ   rJ   rK   r_        z
Code.valueN)rP   r   rR   rQ   r   )
rF   rG   rH   rI   r   rP   rs   rZ   rt   r_   rJ   rJ   rJ   rK   r0     s   
 
r0   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 )r1   z(A representation of ``st.color_picker``.rS   r   rN   r   r   r   FrL   ColorPickerProtorP   rR   rQ   c                   r   Ncolor_pickerr   rX   r   rJ   rK   rZ     r   zColorPicker.__init__r^   c                 C  r   )z3The currently selected value as a hex string. (str)N)r   rR   ry   r   rN   rz   r|   rJ   rJ   rK   r_     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&   rz   r_   string_valuer   rJ   rJ   rK   r     s   zColorPicker._widget_stater   c                 C  r   )z,Set the value of the widget as a hex string.r   r   rJ   rJ   rK   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   rJ   rJ   rK   pick  s   


zColorPicker.pick)rP   r  rR   rQ   r   r   )r   rN   r^   r1   )rF   rG   rH   rI   rs   r   rP   rZ   rt   r_   r   r   r  r   rJ   rJ   r   rK   r1     s   
 	

r1   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 )	DataframeFrL   
ArrowProtorP   rR   rQ   c                 C     d | _ || _|| _d| _d S Narrow_data_framerT   rP   rR   rO   rX   rJ   rJ   rK   rZ     r   zDataframe.__init__r^   PandasDataframec                 C     t | jjS rW   r    convert_arrow_bytes_to_pandas_dfrP   r   r\   rJ   rJ   rK   r_     r   zDataframe.valueNrP   r  rR   rQ   r^   r  r   rJ   rJ   rJ   rK   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 )$r2   z&A representation of ``st.date_input``.zDateValue | None | InitialValuer   FrL   DateInputProtorP   rN   r   r
   minmaxr   is_ranger   r   rR   rQ   c                   sH   t  || t | _d| _t|jd | _t|j	d | _	d S )N
date_inputz%Y/%m/%d)
r   rZ   rE   r   rO   r   strptimer  r
   r  rX   r   rJ   rK   rZ     s
   zDateInput.__init__r   r  r^   c                 C  r   r   r   r   rJ   rJ   rK   r     r   zDateInput.set_valuer&   c                 C  s2   t  }| j|_td }|| j|jjd d < |S rW   )r&   rz   r   	serializer_   string_array_valuer   )rY   r   serderJ   rJ   rK   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   rE   r!   tuplerR   ry   rz   )rY   parsed_r}   rJ   rJ   rK   r_   %  s   
zDateInput.value)rP   r  rR   rQ   )r   r  r^   r2   r   )r^   r   r   rJ   rJ   r   rK   r2     s    
 
r2   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 )r4   rN   messager   is_markdown	list[str]stack_trace
is_warningrP   ExceptionProtorR   rQ   c                 C  s0   d | _ || _|| _d| _|j| _t|j| _d S N	exception)rT   rR   rP   rO   message_is_markdownr*  listr,  rX   rJ   rJ   rK   rZ   8  s   zException.__init__r^   c                 C  s   | j S rW   )r)  r\   rJ   rJ   rK   r_   A  s   zException.valueN)rP   r.  rR   rQ   r   rF   rG   rH   rs   rZ   rt   r_   rJ   rJ   rJ   rK   r4   1  s   
 
	r4   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 )HeadingBaseFrL   HeadingProtorP   rN   tagrS   anchorr   hide_anchorr   rT   rR   rQ   type_c                 C  s   || _ d | _|| _|| _d S rW   r   )rY   rP   rR   r9  rJ   rJ   rK   rZ   O  r   zHeadingBase.__init__r^   c                 C  r   rW   r   r\   rJ   rJ   rK   r_   U  r   zHeadingBase.valueN)rP   r5  rR   rQ   r9  rN   r   r   rJ   rJ   rJ   rK   r4  F  s   
 
r4  c                      r   )HeaderrP   r5  rR   rQ   c                      t  ||d d S Nheaderr   rZ   rX   r   rJ   rK   rZ   \     zHeader.__init__rP   r5  rR   rQ   r   rJ   rJ   r   rK   r:  Z  r   r:  c                      r   )	SubheaderrP   r5  rR   rQ   c                   r;  N	subheaderr>  rX   r   rJ   rK   rZ   b  r?  zSubheader.__init__r@  r   rJ   rJ   r   rK   rA  `  r   rA  c                      r   )TitlerP   r5  rR   rQ   c                   r;  Ntitler>  rX   r   rJ   rK   rZ   h  r?  zTitle.__init__r@  r   rJ   rJ   r   rK   rD  f  r   rD  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 )r7   FrL   	JsonProtorP   r   expandedrR   rQ   c                 C  r   Njsonr   rX   rJ   rJ   rK   rZ   r  r   zJson.__init__r^   rN   c                 C  r   rW   r   r\   rJ   rJ   rK   r_   x  r   z
Json.valueN)rP   rG  rR   rQ   r   r   rJ   rJ   rJ   rK   r7   l  s   
 
r7   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$   FrL   MarkdownProtorP   r   
is_caption
allow_htmlr   rT   rR   rQ   c                 C  r   Nmarkdownr   rX   rJ   rJ   rK   rZ     r   zMarkdown.__init__r^   rN   c                 C  r   rW   r   r\   rJ   rJ   rK   r_     r   zMarkdown.valueNrP   rK  rR   rQ   r   r   rJ   rJ   rJ   rK   r$   }  s   
 
r$   c                      r   )CaptionrP   rK  rR   rQ   c                   r   Ncaptionr   rX   r   rJ   rK   rZ     r   zCaption.__init__rP  r   rJ   rJ   r   rK   rQ    r   rQ  c                      r   )DividerrP   rK  rR   rQ   c                   r   Ndividerr   rX   r   rJ   rK   rZ     r   zDivider.__init__rP  r   rJ   rJ   r   rK   rT    r   rT  c                      r   )LatexrP   rK  rR   rQ   c                   r   Nlatexr   rX   r   rJ   rK   rZ     r   zLatex.__init__rP  r   rJ   rJ   r   rK   rW    r   rW  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 )r8   MetricProtorP   rN   r   deltacolorr   rR   rQ   c                 C  r   Nmetricr   rX   rJ   rJ   rK   rZ     r   zMetric.__init__r^   c                 C  r   rW   r   r\   rJ   rJ   rK   r_     r   zMetric.valueN)rP   rZ  rR   rQ   r   r3  rJ   rJ   rJ   rK   r8     s   
 
r8   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   FrL   ButtonGroupProtorP   zlist[ButtonGroupProto.Option]optionsrN   r   rR   rQ   c                   $   t  || d| _t|j| _d S Nbutton_groupr   rZ   rO   r2  ra  rX   r   rJ   rK   rZ        zButtonGroup.__init__r^   r&   c                 C  $   t  }| j|_| j|jjdd< |S r  Nr&   rz   indicesint_array_valuer   r   rJ   rJ   rK   r        zButtonGroup._widget_statelist[T]c                 C  4   | j dur| j S | jj}|sJ ttt || j S z6The currently selected values from the options. (list)Nr   rR   ry   r   r2  rD   rz   r|   rJ   rJ   rK   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 rJ   ra  indexformat_funcr   r   r\   rJ   rK   r         z'ButtonGroup.indices.<locals>.<listcomp>r   r\   rJ   r\   rK   rj       zButtonGroup.indicesCallable[[Any], Any]c                 C  &   | j j}tttgtf |t | j S zCThe widget's formatting function for displaying options. (callable)rR   ry   r   r   r   r(   rz   rY   ssrJ   rJ   rK   rx       zButtonGroup.format_funcr   ButtonGroup[T]c                 C  r   z/Set the value of the multiselect widget. (list)r   r   rJ   rJ   rK   r        zButtonGroup.set_valuerD   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.
        r_   copyappendr   rY   r   currentnewrJ   rJ   rK   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.
        r_   r  remover   r  rJ   rJ   rK   unselect     

zButtonGroup.unselect)rP   r`  rR   rQ   r   r^   rm  r^   rr  r^   r|  )r   rm  r^   r  )r   rD   r^   r  rF   rG   rH   rI   rs   r   rP   rZ   rt   r   r_   rj  rx  r   r  r  r   rJ   rJ   r   rK   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d,ddZ
ed-ddZed.dd Zd/d#d$Zd0d&d'Zd0d(d)Z  ZS )1Multiselectz'A representation of ``st.multiselect``.r_  r   FrL   MultiSelectProtorP   rN   r   r+  ra  r   max_selectionsr   r   rR   rQ   c                   rb  Nmultiselectre  rX   r   rJ   rK   rZ     rf  zMultiselect.__init__r^   r&   c                 C  rg  rh  ri  r   rJ   rJ   rK   r     rl  zMultiselect._widget_staterm  c                 C  rn  ro  rp  r|   rJ   rJ   rK   r_   *  rq  zMultiselect.valuerr  c                   rs  )rt  c                   ru  rJ   rv  ry  r\   rJ   rK   r   7  rz  z'Multiselect.indices.<locals>.<listcomp>r   r\   rJ   r\   rK   rj  4  r{  zMultiselect.indicesr|  c                 C  r}  r~  r  r  rJ   rJ   rK   rx  9  r  zMultiselect.format_funcr   Multiselect[T]c                 C  r   r  r   r   rJ   rJ   rK   r   ?  r  zMultiselect.set_valuerD   c                 C  r  r  r  r  rJ   rJ   rK   r  E  r  zMultiselect.selectc                 C  r  r  r  r  rJ   rJ   rK   r  T  r  zMultiselect.unselect)rP   r  rR   rQ   r   r  r  r  )r   rm  r^   r  )r   rD   r^   r  r  rJ   rJ   r   rK   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   FrL   NumberInputProtorP   rN   r   Number | Noner  r  Numberstepr   r   rR   rQ   c                   sJ   t  || t | _d| _|jr|jnd | _|jr |j| _d S d | _d S Nnumber_input)	r   rZ   rE   r   rO   has_minr  has_maxr  rX   r   rJ   rK   rZ   u  s
   zNumberInput.__init__r   r^   c                 C  r   )z0Set the value of the ``st.number_input`` widget.r   r   rJ   rJ   rK   r   |  r   zNumberInput.set_valuer&   c                 C  $   t  }| j|_| jd ur| j|_|S rW   )r&   rz   r_   double_valuer   rJ   rJ   rK   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   rE   rR   ry   rz   r|   rJ   rJ   rK   r_     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)r_   r  r  r  floatr   r   rJ   rJ   rK   	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)r_   r  r  r  r  r   r   rJ   rJ   rK   	decrement  r  zNumberInput.decrement)rP   r  rR   rQ   )r   r  r^   r:   r   )r^   r  )r^   r:   rF   rG   rH   rI   rs   r   rP   rZ   r   rt   r   r_   r  r  r   rJ   rJ   r   rK   r:   h  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   FrL   
RadioProtorP   rN   r   r+  ra  r   
horizontalr   r   rR   rQ   c                   ,   t  || t | _d| _t|j| _d S Nradior   rZ   rE   r   rO   r2  ra  rX   r   rJ   rK   rZ        zRadio.__init__r^   
int | Nonec                 C  s"   | j du rdS | j| | j S ))The index of the current selection. (int)N)r_   ra  rw  rx  r\   rJ   rJ   rK   rw    s   
zRadio.indexT | Nonec                 C  2   t | jts	| jS | jj}|sJ tt|| j S z4The currently selected value from the options. (Any)r   r   rE   rR   ry   r   rD   rz   r|   rJ   rJ   rK   r_     
   zRadio.valuer|  c                 C  r}  r~  r  r  rJ   rJ   rK   rx    r  zRadio.format_funcr   Radio[T]c                 C  r   zSet the selection by value.r   r   rJ   rJ   rK   r     r   zRadio.set_valuer&   c                 C  $   t  }| j|_| jdur| j|_|S rh  r&   rz   rw  	int_valuer   rJ   rJ   rK   r     
   
zRadio._widget_state)rP   r  rR   rQ   r^   r  r^   r  r  )r   r  r^   r  r   )rF   rG   rH   rI   rs   r   rP   rZ   rt   rw  r_   rx  r   r   r   rJ   rJ   r   rK   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 )/r<   z%A representation of ``st.selectbox``.r  r   FrL   SelectboxProtorP   rN   r   r+  ra  r   r   rR   rQ   c                   r  N	selectboxr  rX   r   rJ   rK   rZ     r  zSelectbox.__init__r^   r  c                 C  s4   | j du rdS t| jdkrdS | j| | j S )r  Nr   )r_   r   ra  rw  rx  r\   rJ   rJ   rK   rw    s
   
zSelectbox.indexr  c                 C  r  r  r  r|   rJ   rJ   rK   r_     r  zSelectbox.valuer|  c                 C  r}  r~  r  r  rJ   rJ   rK   rx    r  zSelectbox.format_funcr   Selectbox[T]c                 C  r   r  r   r   rJ   rJ   rK   r     r   zSelectbox.set_valuec                 C  s
   |  |S r  r   r   rJ   rJ   rK   r    r   zSelectbox.selectrw  c                 C  s(   |du r	|  dS |  tt| j| S )zSet the selection by index.N)r   r   rD   ra  )rY   rw  rJ   rJ   rK   select_index  s   
zSelectbox.select_indexr&   c                 C  r  rh  r  r   rJ   rJ   rK   r     r  zSelectbox._widget_state)rP   r  rR   rQ   r  r  r  )r   r  r^   r  )rw  r  r^   r  r   )rF   rG   rH   rI   rs   r   rP   rZ   rt   rw  r_   rx  r   r  r  r   r   rJ   rJ   r   rK   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   FrL   SliderProtorP   rN   r   SliderProto.DataType.ValueType	data_typer+  ra  r   r   rR   rQ   c                   rb  Nselect_sliderre  rX   r   rJ   rK   rZ   7  rf  zSelectSlider.__init__r   T | Sequence[T]r^   SelectSlider[T]c                 C  r   )z$Set the (single) selection by value.r   r   rJ   rJ   rK   r   <  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                   s   g | ]}  |qS rJ   )rx  )r   valr\   rJ   rK   r   H  s    z.SelectSlider._widget_state.<locals>.<listcomp>zCould not find index for )r   ra  r#  rx  r_   r{   	TypeErrorr&   rz   double_array_valuer   )rY   r%  r   r   rJ   r\   rK   r   A  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   rR   ry   rz   r|   rJ   rJ   rK   r_   Q  
   

zSelectSlider.valuer|  c                 C  r}  r~  r  r  rJ   rJ   rK   rx  \  r  zSelectSlider.format_funclowerrD   upperc                 C     |  ||gS )z#Set the ranged selection by values.r   rY   r  r  rJ   rJ   rK   	set_rangeb  r   zSelectSlider.set_rangerP   r  rR   rQ   )r   r  r^   r  r   )r^   r  r  )r  rD   r  rD   r^   r  )rF   rG   rH   rI   rs   r   rP   rZ   r   rt   r   r_   rx  r  r   rJ   rJ   r   rK   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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   FrL   r  rP   rN   r   r  r  r   r  r  r   r  r   r   rR   rQ   c                   r   Nsliderr   rX   r   rJ   rK   rZ   v  r   zSlider.__init__r   %SliderValueT | Sequence[SliderValueT]r^   Slider[SliderValueT]c                 C  r   )z%Set the (single) value of the slider.r   r   rJ   rJ   rK   r   z  s   zSlider.set_valuer&   c                 C  sD   | j j}tg |dd }|| j}t }| j|_||jjd d < |S )NT)	rP   r  r   r#  r_   r&   rz   r  r   )rY   r  r%  r   r   rJ   rJ   rK   r     s   zSlider._widget_statec                 C  r  r  r  r|   rJ   rJ   rK   r_     r  zSlider.valuer  r  c                 C  r  )z#Set the ranged value of the slider.r   r  rJ   rJ   rK   r    s   zSlider.set_ranger  )r   r  r^   r  r   )r^   r  )r  r   r  r   r^   r  )rF   rG   rH   rI   rs   r   rP   rZ   r   rt   r   r_   r  r   rJ   rJ   r   rK   r%   g  s$   
 


r%   c                   @  r  )TableFrL   r  rP   rR   rQ   c                 C  r  Narrow_tabler  rX   rJ   rJ   rK   rZ     r   zTable.__init__r^   r  c                 C  r  rW   r  r\   rJ   rJ   rK   r_     r   zTable.valueNr  r  r   rJ   rJ   rJ   rK   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=   FrL   	TextProtorP   Nr   rT   rR   rQ   c                 C  s   || _ || _d| _d S Ntext)rP   rR   rO   rX   rJ   rJ   rK   rZ     r   zText.__init__r^   rN   c                 C  r   r  r   r\   rJ   rJ   rK   r_     r  z
Text.value)rP   r  rR   rQ   r   )
rF   rG   rH   r   rP   rs   rT   rZ   rt   r_   rJ   rJ   rJ   rK   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   FrL   TextAreaProtorP   rN   r   r   	max_charsr   r   r   rR   rQ   c                       t  || t | _d| _d S N	text_arear   rZ   rE   r   rO   rX   r   rJ   rK   rZ        
zTextArea.__init__r   rS   r^   c                 C  r   r   r   r   rJ   rJ   rK   r     r   zTextArea.set_valuer&   c                 C  r  rW   r  r   rJ   rJ   rK   r     r  zTextArea._widget_statec                 C  r  z&The current value of the widget. (str)r  r|   rJ   rJ   rK   r_     
   
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   rJ   rJ   rK   input     
zTextArea.input)rP   r  rR   rQ   )r   rS   r^   r>   r   r   )r   rN   r^   r>   rF   rG   rH   rI   rs   r   rP   rZ   r   rt   r   r_   r  r   rJ   rJ   r   rK   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   FrL   TextInputProtorP   rN   r   r   r  autocompleter   r   r   rR   rQ   c                   r  N
text_inputr  rX   r   rJ   rK   rZ      r  zTextInput.__init__r   rS   r^   c                 C  r   r   r   r   rJ   rJ   rK   r     r   zTextInput.set_valuer&   c                 C  r  rW   r  r   rJ   rJ   rK   r   
  r  zTextInput._widget_statec                 C  r  r  r  r|   rJ   rJ   rK   r_     r  zTextInput.valuec                 C  r  r  r  r   rJ   rJ   rK   r    r  zTextInput.input)rP   r  rR   rQ   )r   rS   r^   r?   r   r   )r   rN   r^   r?   r  rJ   rJ   r   rK   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 )&r@   z&A representation of ``st.time_input``.zTimeValue | None | InitialValuer   FrL   TimeInputProtorP   rN   r   r   r  r   r   rR   rQ   c                   r  N
time_inputr  rX   r   rJ   rK   rZ   6  r  zTimeInput.__init__r   TimeValue | Noner^   c                 C  r   r   r   r   rJ   rJ   rK   r   ;  r   zTimeInput.set_valuer&   c                 C  s4   t  }| j|_td }|| j}|d ur||_|S rW   )r&   rz   r    r#  r_   r	  )rY   r   r%  serialized_valuerJ   rJ   rK   r   @  s   zTimeInput._widget_statetime | Nonec                 C  sJ   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   rE   r   r   rR   ry   rz   )rY   r   r}   rJ   rJ   rK   r_   K  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	r_   r   combiner
   todayr   r  r   r   rY   dtrJ   rJ   rK   r  W     
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  rJ   rJ   rK   r  ^  r  zTimeInput.decrement)rP   r  rR   rQ   )r   r  r^   r@   r   )r^   r  )r^   r@   r  rJ   rJ   r   rK   r@   +  s    
 


r@   c                   @  r   )rA   FrL   
ToastProtorP   rN   r   rR   rQ   c                 C  r   Ntoastr   rX   rJ   rJ   rK   rZ   k  r   zToast.__init__r^   c                 C  r   rW   r   r\   rJ   rJ   rK   r_   q  r   zToast.valueN)rP   r  rR   rQ   r   r   rJ   rJ   rJ   rK   rA   f  s   
 
rA   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   FrL   r   rP   rN   r   r   r   rR   rQ   c                   s   t  || d | _d| _d S Ntoggler   rX   r   rJ   rK   rZ     r   zToggle.__init__r^   r&   c                 C  r   rW   r   r   rJ   rJ   rK   r     r   zToggle._widget_stater   c                 C  r   )z'The current value of the widget. (bool)Nr   r|   rJ   rJ   rK   r_     r   zToggle.valuer   c                 C  r   r   r   r   rJ   rJ   rK   r     r   zToggle.set_valuer   r   r   )r   r   r^   r  )rF   rG   rH   rI   rs   r   rP   rZ   rt   r   r_   r   r   rJ   rJ   r   rK   r  v  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	d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dd/d0Zedd2d3Zedd5d6Zedd8d9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ddbdcZ%eddedfZ&eddhdiZ'eddkdlZ(eddndoZ)eddqdrZ*eddtduZ+eddwdxZ,eddzd{Z-edd}d~Z.edddZ/edddZ0edddZ1edddZ2edddZ3edddZ4edddZ5dddZ6dddddZ7dd 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``.
    rN   rO   zdict[int, Node]childrenFrL   r   rP   rQ   rR   BlockProto | Nonec                 C  sB   i | _ || _|r|d}|d ur|| _nd| _nd| _|| _d S )NrO   	containerunknown)r  rP   rv   rO   rR   rw   rJ   rJ   rK   rZ     s   

zBlock.__init__r^   r   c                 C  r   rW   )r   r  r\   rJ   rJ   rK   r     ro   zBlock.__len__c                 c  s(    | V  | j D ]
}| j | E d H  qd S rW   r  )rY   	child_idxrJ   rJ   rK   r]     s
   
zBlock.__iter__kNodec                 C  s
   | j | S rW   r  )rY   r  rJ   rJ   rK   r     ro   zBlock.__getitem__rS   c                 C  rV   rW   rJ   r\   rJ   rJ   rK   rT     r   z	Block.keyWidgetList[Button]c                 C     t | dS )Nr   r   getr\   rJ   rJ   rK   r     r   zBlock.buttonWidgetList[ButtonGroup[Any]]c                 C  r   rc  r!  r\   rJ   rJ   rK   rd    r   zBlock.button_groupElementList[Caption]c                 C  r   rR  r   r"  r\   rJ   rJ   rK   rS    r   zBlock.captionWidgetList[ChatInput]c                 C  r   r   r!  r\   rJ   rJ   rK   r     r   zBlock.chat_inputSequence[ChatMessage]c                 C  r   Nchat_messager"  r\   rJ   rJ   rK   r)    r   zBlock.chat_messageWidgetList[Checkbox]c                 C  r   r   r!  r\   rJ   rJ   rK   r     r   zBlock.checkboxElementList[Code]c                 C  r   r   r%  r\   rJ   rJ   rK   r     r   z
Block.codeWidgetList[ColorPicker]c                 C  r   r  r!  r\   rJ   rJ   rK   r    r   zBlock.color_pickerSequence[Column]c                 C  r   Ncolumnr*  r\   rJ   rJ   rK   columns  r   zBlock.columnsElementList[Dataframe]c                 C  r   r  r%  r\   rJ   rJ   rK   	dataframe  r   zBlock.dataframeWidgetList[DateInput]c                 C  r   )Nr!  r!  r\   rJ   rJ   rK   r!    r   zBlock.date_inputElementList[Divider]c                 C  r   rU  r%  r\   rJ   rJ   rK   rV    r   zBlock.dividerElementList[Error]c                 C  r   r   r%  r\   rJ   rJ   rK   r     r   zBlock.errorElementList[Exception]c                 C  r   r/  r%  r\   rJ   rJ   rK   r0    r   zBlock.exceptionSequence[Expander]c                 C  r   Nexpanderr*  r\   rJ   rJ   rK   r:  	  r   zBlock.expanderElementList[Header]c                 C  r   r<  r%  r\   rJ   rJ   rK   r=    r   zBlock.headerElementList[Info]c                 C  r   r   r%  r\   rJ   rJ   rK   r     r   z
Block.infoElementList[Json]c                 C  r   rI  r%  r\   rJ   rJ   rK   rJ    r   z
Block.jsonElementList[Latex]c                 C  r   rX  r%  r\   rJ   rJ   rK   rY    r   zBlock.latexElementList[Markdown]c                 C  r   rN  r%  r\   rJ   rJ   rK   rO    r   zBlock.markdownElementList[Metric]c                 C  r   r]  r%  r\   rJ   rJ   rK   r^  !  r   zBlock.metricWidgetList[Multiselect[Any]]c                 C  r   r  r!  r\   rJ   rJ   rK   r  %  r   zBlock.multiselectWidgetList[NumberInput]c                 C  r   r  r!  r\   rJ   rJ   rK   r  )  r   zBlock.number_inputWidgetList[Radio[Any]]c                 C  r   r  r!  r\   rJ   rJ   rK   r  -  r   zBlock.radioWidgetList[SelectSlider[Any]]c                 C  r   r  r!  r\   rJ   rJ   rK   r  1  r   zBlock.select_sliderWidgetList[Selectbox[Any]]c                 C  r   r  r!  r\   rJ   rJ   rK   r  5  r   zBlock.selectboxWidgetList[Slider[Any]]c                 C  r   r  r!  r\   rJ   rJ   rK   r  9  r   zBlock.sliderSequence[Status]c                 C  r   Nstatusr*  r\   rJ   rJ   rK   rI  =  r   zBlock.statusElementList[Subheader]c                 C  r   rB  r%  r\   rJ   rJ   rK   rC  A  r   zBlock.subheaderElementList[Success]c                 C  r   r   r%  r\   rJ   rJ   rK   r   E  r   zBlock.successElementList[Table]c                 C  r   r  r%  r\   rJ   rJ   rK   tableI  r   zBlock.tableSequence[Tab]c                 C  r   Ntabr*  r\   rJ   rJ   rK   tabsM  r   z
Block.tabsElementList[Text]c                 C  r   r  r%  r\   rJ   rJ   rK   r  Q  r   z
Block.textWidgetList[TextArea]c                 C  r   r  r!  r\   rJ   rJ   rK   r  U  r   zBlock.text_areaWidgetList[TextInput]c                 C  r   r   r!  r\   rJ   rJ   rK   r  Y  r   zBlock.text_inputWidgetList[TimeInput]c                 C  r   r  r!  r\   rJ   rJ   rK   r  ]  r   zBlock.time_inputElementList[Title]c                 C  r   rE  r%  r\   rJ   rJ   rK   rF  a  r   zBlock.titleElementList[Toast]c                 C  r   r  r%  r\   rJ   rJ   rK   r  e  r   zBlock.toastWidgetList[Toggle]c                 C  r   r  r!  r\   rJ   rJ   rK   r  i  r   zBlock.toggleElementList[Warning]c                 C  r   r   r%  r\   rJ   rJ   rK   r   m  r   zBlock.warningelement_typeSequence[Node]c                   s    fdd| D S )Nc                   s   g | ]	}|j  kr|qS rJ   )rO   r   rZ  rJ   rK   r   r  s    zBlock.get.<locals>.<listcomp>rJ   )rY   rZ  rJ   r\  rK   r"  q  s   z	Block.getNrc   rd   re   rC   c                C  rf   )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.
        rc   rg   ri   rJ   rJ   rK   rh   t  rj   z	Block.runc                 C  r   rW   )rm   r\   rJ   rJ   rK   rn     s   zBlock.__repr__)rP   r  rR   rQ   r   )r  r   r^   r  r   )r^   r  )r^   r#  )r^   r$  )r^   r&  )r^   r'  )r^   r+  )r^   r,  )r^   r-  )r^   r.  )r^   r2  )r^   r4  )r^   r5  )r^   r6  )r^   r7  )r^   r8  )r^   r;  )r^   r<  )r^   r=  )r^   r>  )r^   r?  )r^   r@  )r^   rA  )r^   rB  )r^   rC  )r^   rD  )r^   rE  )r^   rF  )r^   rG  )r^   rJ  )r^   rK  )r^   rL  )r^   rN  )r^   rR  )r^   rS  )r^   rT  )r^   rU  )r^   rV  )r^   rW  )r^   rX  )r^   rY  )rZ  rN   r^   r[  rr   )9rF   rG   rH   rI   rs   r   rP   rR   rZ   r   r]   r   rt   rT   r   rd  rS  r   r)  r   r   r  r1  r3  r!  rV  r   r0  r:  r=  r   rJ  rY  rO  r^  r  r  r  r  r  r  rI  rC  r   rM  rQ  r  r  r  r  rF  r  r  r   r"  rh   rn   rJ   rJ   rJ   rK   r,     s   
 




r,   r^   rN   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rA| 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 rW   )rM   ra   r`   default)r   fdefaultsrY   rJ   rK   	<genexpr>  s    zrepr_.<locals>.<genexpr>c                 3  s$    | ]\}}| vr||fV  qd S rW   rJ   )r   r`  r   )rb  rJ   rK   rc    s   " =
r   ,
    (z
))r   rF   setr	   r   __dict__itemsr   dictformat_dictr  jointextwrapindent)rY   	classnamefields_valsreprs
field_namer_   linefield_reprsrJ   ra  rK   rm     s"   

rm   ddict[Any, Any]c                 C  sT   g }|   D ]\}}| d|}|| qd|}t|d}d| d}|S )Nz: rf  rg  z{
z
})rk  r  rn  ro  rp  )rw  linesr  r   ru  rrJ   rJ   rK   rm    s   
rm  c                   @  s   e Zd ZdZ	ddd	d
ZdS )SpecialBlockz4Base class for the sidebar and main body containers.NrP   r  rR   rQ   rO   rS   c                 C  sT   i | _ || _|r|| _n|r"|dr"|d}|d usJ || _nd| _|| _d S )NrO   r  )r  rP   rO   rv   rR   )rY   rP   rR   rO   rx   rJ   rJ   rK   rZ     s   

zSpecialBlock.__init__rW   )rP   r  rR   rQ   rO   rS   )rF   rG   rH   rI   rZ   rJ   rJ   rJ   rK   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``.FrL   rN   rO   BlockProto.ChatMessagerP   r`   avatarrR   rQ   c                 C  ,   i | _ || _|| _d| _|j| _|j| _d S r(  )r  rP   rR   rO   r`   r~  rX   rJ   rJ   rK   rZ        zChatMessage.__init__N)rP   r}  rR   rQ   	rF   rG   rH   rI   r   rO   rs   rP   rZ   rJ   rJ   rJ   rK   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``.FrL   rN   rO   BlockProto.ColumnrP   r  weightgaprR   rQ   c                 C  r  r/  )r  rP   rR   rO   r  r  rX   rJ   rJ   rK   rZ     r  zColumn.__init__N)rP   r  rR   rQ   r  rJ   rJ   rJ   rK   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 )ExpanderFrL   rN   rO   BlockProto.ExpandablerP   r   r   rR   rQ   c                 C  r  r9  r  rP   rR   rO   r   r   rX   rJ   rJ   rK   rZ     s   zExpander.__init__NrP   r  rR   rQ   )rF   rG   rH   r   rO   rs   rP   rZ   rJ   rJ   rJ   rK   r    s   
 r  c                   @  sX   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 Z	dS )StatusFrL   rN   rO   r  rP   r   r   rR   rQ   c                 C  r  rH  r  rX   rJ   rJ   rK   rZ     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\   rJ   rJ   rK   r}     s   


zStatus.stateNr  )
rF   rG   rH   r   rO   rs   rP   rZ   rt   r}   rJ   rJ   rJ   rK   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``.FrL   rN   rO   BlockProto.TabrP   r   rR   rQ   c                 C  s$   i | _ || _|| _d| _|j| _d S rO  )r  rP   rR   rO   r   rX   rJ   rJ   rK   rZ   (  s
   zTab.__init__N)rP   r  rR   rQ   r  rJ   rJ   rJ   rK   r     s   
 r  r  nodeWidgetState | Nonec                 C  s   t | tr| jS d S rW   )r   r~   r   )r  rJ   rJ   rK   get_widget_state7  s   
r  c                   @  sz   e Zd ZU dZedddZd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 ddZdd ZdS )!rQ   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)rM   r_  zAppTest | None_runnerc                 C  s   i | _ | | _d| _d S )NrR   )r  rR   rO   r\   rJ   rJ   rK   rZ   Y  r   zElementTree.__init__r^   r,   c                 C     | d }t |tsJ |S )Nr   r   r,   )rY   mrJ   rJ   rK   main^     zElementTree.mainc                 C  r  )N   r  )rY   srJ   rJ   rK   sidebard  r  zElementTree.sidebarrB   c                 C  s   | j d usJ | j jS rW   )r  ry   r\   rJ   rJ   rK   ry   j  s   zElementTree.session_stater'   c                 C  s0   t  }| D ]}t|}|d ur|j| q|S rW   )r'   r  widgetsr  )rY   r   r  wrJ   rJ   rK   get_widget_stateso  s   zElementTree.get_widget_statesrc   rd   re   rC   c                C  s&   | j dusJ |  }| j j||dS )r]  Nrc   )r  r  _run)rY   rd   widget_statesrJ   rJ   rK   rh   x  s   	zElementTree.runc                 C  r   rW   )rm  r  r\   rJ   rJ   rK   rn     ro   zElementTree.__repr__)r^   r,   )r^   rB   )r^   r'   rr   )rF   rG   rH   rI   r   r  rs   rZ   rt   r  r  ry   r  rh   rn   rJ   rJ   rJ   rK   rQ   >  s   
 
	rQ   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)rO   rR   rP   r  event)r   r     r[  rO   new_elementalert)rR   zUnknown alert type with format r  r  r   rd  r   r   r   r  r!  r0  headingzUnknown heading type with tag rJ  rO  zUnknown markdown type r^  r  r  r  r  r  zSlider with unknown type r  r  r  r  r  	add_blockr)  r0  
expandablerP  )rP   rR   )prQ   r{  r  HasFieldmetadata
delta_pathr[  rv   r  r  formatr   FormatERRORr   INFOr   SUCCESSr   WARNINGr   r{   r  r  r  r  r-   r   r.   rd  r/   r   r   rO   r   	StyleTypeTOGGLEr  r#   r0   r   r1   r  r2   r!  r4   r0  r  r6  r   	TITLE_TAGr_   rD  
HEADER_TAGr:  SUBHEADER_TAGrA  r7   rJ  rO  rZ  rK  TypeNATIVEr$   CAPTIONrQ  LATEXrW  DIVIDERrT  r8   r^  r  r  r:   r  r;   r  r<   r  r  r  SLIDERr%   SELECT_SLIDERr  r=   r  r>   r  r?   r  r@   r  rA   r  ru   r  r|  r)  r  r0  r  r   r  r  r  rP  r,   r"  r   )r  rR   msgr  r[  eltrx   r  new_nodestyleblockbtycurrent_noder   r  childplaceholder_blockrJ   rJ   rK   parse_tree_from_messages  s   




























r  r   )rw  rx  )r  r  r^   r  )r  r  r^   rQ   )
__future__r   ro  abcr   r   collections.abcr   dataclassesr   r   r   r	   r   r
   r   r   typingr   r   r   r   r   r   r   r   typing_extensionsr   	streamlitr   r   streamlit.elements.headingr   (streamlit.elements.widgets.select_sliderr   !streamlit.elements.widgets.sliderr   r   r   'streamlit.elements.widgets.time_widgetsr   r   r    r!   streamlit.proto.Alert_pb2r"   r   streamlit.proto.Checkbox_pb2r#   r   streamlit.proto.Markdown_pb2r$   rK  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.   r`  streamlit.proto.ChatInput_pb2r/   r   streamlit.proto.Code_pb2r0   r   streamlit.proto.ColorPicker_pb2r1   r  streamlit.proto.DateInput_pb2r2   r  streamlit.proto.Element_pb2r3   rU   streamlit.proto.Exception_pb2r4   r.  streamlit.proto.ForwardMsg_pb2r5   streamlit.proto.Heading_pb2r6   r5  streamlit.proto.Json_pb2r7   rG  streamlit.proto.Metric_pb2r8   rZ  streamlit.proto.MultiSelect_pb2r9   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_pb2r@   r  streamlit.proto.Toast_pb2rA   r  *streamlit.runtime.state.safe_session_staterB   streamlit.testing.v1.app_testrC   rD   rE   ru   r~   r   r   r   r   r   r   r   r   r   r  r  rs   r  r4  r:  rA  rD  rQ  rT  rW  r  r   r  r  r  r  r  r  rm   rm  r{  r|  r  r  r  r  r  r  rQ   r  rJ   rJ   rJ   rK   <module>   s>  (5(	*#-/-TW=;G<644:& 
f
"
K