
    g                    n   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rd 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             Ze	 G d1 d2e             ZZ e	d34       G d5 d6eZ             Z e	d34       G d7 d8eZe             Z ed9eZd:;      Z G d< d=ee         Z ed>ed:;      Z G d? d@ee   ee         Z e	d34       G dA dBeZ             Z e	d34       G dC dDe             Z e	d34       G dE dFe             Z e	d34       G dG dHe             Z e	d34       G dI dJe             Z e	d34       G dK dLe             ZH e	d34       G dM dNe             ZN e	d34       G dO dPe             Z0 e	d34       G dQ dReZ             ZQ e	d34       G dS dTe             ZT e	d34       G dU dVeZ             Zeeef   ZdWedX<   eeee   df   ZdWedY<    e	d34       G dZ d[e             ZW e	d34       G d\ d]eZ             Z] e	d34       G d^ d_eZe             Z e	d34       G d` dae             Z e	d34       G db dce             Z e	d34       G dd dee             Z e	d34       G df dgeZ             Ze e	d34       G dh dieZ             Z3 e	d34       G dj dke3             Z e	d34       G dl dme3             Z e	d34       G dn doe3             Z e	d34       G dp dqeZ             Zh e	d34       G dr dseee                ZK e	d34       G dt dueee                Zeeef   Z e	d34       G dv dwe             Zn e	d34       G dx dyeee                Zq e	d34       G dz d{eee                Zt e	d34       G d| d}eee                Z e	d34       G d~ deee&                Z6 e	d34       G d deZ             Z e	d34       G d deZ             Zw e	d34       G d de             Zz e	d34       G d de             Z}eeef   ZdWed<    e	d34       G d de             Z e	d34       G d deZ             Z e	d34       G d de             Z e	d34       G d d             ZEddZddZ e	d34       G d deE             Z e	d34       G d deE             Z e	d34       G d deE             Z e	d34       G d deE             Z e	d34       G d deE             Z e	d34       G d deE             ZeeZeEf   ZdWed<   ddZ e	d34       G d deE             ZddZy)    )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                      e Zd ZdZy)InitialValuez>This class is used to represent the initial value of a widget.N)__name__
__module____qualname____doc__     V/var/www/openai/venv/lib/python3.12/site-packages/streamlit/testing/v1/element_tree.pyrG   rG   W   s    HrM   rG   c                      e Zd ZU dZ ed      Zded<    ed      Zded<    ed      Zded	<   d
ed<   e	dd       Z
d Zee	dd              ZddZddddZd Zy)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keyc                     y NrL   selfrT   rV   s      rN   __init__zElement.__init__~   s    @CrM   c              #     K   |  y wrZ   rL   r\   s    rN   __iter__zElement.__iter__   s     
s   c                     y)z%The value or contents of the element.NrL   r_   s    rN   valuezElement.value   s     	rM   c                .    t        | j                  |      S )z3Fallback attempt to get an attribute from the proto)getattrrT   )r\   names     rN   __getattr__zElement.__getattr__   s    tzz4((rM   Ntimeoutc               :    | j                   j                  |      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.
        rg   rV   runr\   rh   s     rN   rk   zElement.run        yy}}W}--rM   c                ,    t        j                  |       S rZ   r   repr_r_   s    rN   __repr__zElement.__repr__       zz$rM   rT   ElementProtorV   rU   returnr   )re   rR   rv   r   rh   zfloat | Nonerv   rD   )rH   rI   rJ   rK   r   rS   __annotations__rT   rV   r   r]   r`   propertyrb   rf   rk   rq   rL   rM   rN   r4   r4   g   s~      5!D#!E"E3"5)D+)	OC C   ) .2 	. rM   r4   FrP   c                  &    e Zd ZddZedd       Zy)UnknownElementc                z    |j                  d      }|J t        ||      | _        || _        || _        d | _        y )NrS   )
WhichOneofrd   rT   rV   rS   rX   r\   rT   rV   tys       rN   r]   zUnknownElement.__init__   s?    f%~~UB'
		rM   c                    	 | j                   j                  }|J || j                  j                     S # t        $ r | j                  j
                  cY S w xY wrZ   )rV   session_staterT   id
ValueErrorrb   r\   states     rN   rb   zUnknownElement.value   sT    	$II++E$$$'' 	$::###	$s   25 AANrs   ru   )rH   rI   rJ   r]   ry   rb   rL   rM   rN   r{   r{      s     $ $rM   r{   c                  x    e Zd ZU dZ ed      Zded<   ded<   ded	<   d
ed<   ddZddZe	e
dd              Zy)WidgetzWidget base class for testing.FrP   rR   r   booldisabledrW   rX   r   _valuec                b    || _         || _        t        | j                        | _        d | _        y rZ   )rT   rV   r*   r   rX   r   r[   s      rN   r]   zWidget.__init__   s'    
	+DGG4rM   c                    || _         | S zSet the value of the widget.r   r\   vs     rN   	set_valuezWidget.set_value       rM   c                     y rZ   rL   r_   s    rN   _widget_statezWidget._widget_state   s    ,/rM   N)rT   r   rV   rU   )r   r   rv   r'   )rH   rI   rJ   rK   r   r   rx   r]   r   ry   r   r   rL   rM   rN   r   r      sE    (BN	OK
 /  /rM   r   El_coT)bound	covariantc                      e Zd ZddZddZedd       Zedd       Zedd       ZddZd Z	d Z
dd	Zedd
       Zy)ElementListc                    || _         y rZ   _list)r\   elss     rN   r]   zElementList.__init__   s	    &)
rM   c                ,    t        | j                        S rZ   )lenr   r_   s    rN   __len__zElementList.__len__   s    4::rM   c                    t        |       S rZ   )r   r_   s    rN   r   zElementList.len   s    4yrM   c                     y rZ   rL   r\   idxs     rN   __getitem__zElementList.__getitem__   s    .1rM   c                     y rZ   rL   r   s     rN   r   zElementList.__getitem__   s    =@rM   c                p    t        |t              rt        | j                  |         S | j                  |   S rZ   )
isinstanceslicer   r   r   s     rN   r   zElementList.__getitem__   s-    c5!tzz#//::c?"rM   c              #  8   K   | j                   E d {    y 7 wrZ   r   r_   s    rN   r`   zElementList.__iter__   s     ::s   c                ,    t        j                  |       S rZ   ro   r_   s    rN   rq   zElementList.__repr__   rr   rM   c                r    t        |t              r| j                  |j                  k(  S | j                  |k(  S rZ   )r   r   r   )r\   others     rN   __eq__zElementList.__eq__   s.    e[)::,,::&&rM   c                @    | D cg c]  }|j                    c}S c c}w rZ   )rb   )r\   es     rN   valueszElementList.values   s    !%&A&&&s   N)r   zSequence[El_co]rv   int)r   r   rv   r   )r   r   rv   zElementList[El_co])r   zint | slicerv   zEl_co | ElementList[El_co])r   zElementList[El_co] | objectrv   r   )rv   zSequence[Any])rH   rI   rJ   r]   r   ry   r   r   r   r`   rq   r   r   rL   rM   rN   r   r      sf    *   1 1@ @# ' ' 'rM   r   W_coc                      e Zd ZddZy)
WidgetListc                `    | j                   D ]  }|j                  |k(  s|c S  t        |      rZ   )r   rX   KeyError)r\   rX   r   s      rN   __call__zWidgetList.__call__   s,    Auu|  smrM   N)rX   rR   rv   r   )rH   rI   rJ   r   rL   rM   rN   r   r      s    rM   r   c                  N    e Zd ZU  ed      Zded<   ded<   d
dZedd       Zy	)	AlertBaseFrP   
AlertProtorT   rR   iconc                .    || _         d | _        || _        y rZ   )rT   rX   rV   r[   s      rN   r]   zAlertBase.__init__  s    
	rM   c                .    | j                   j                  S rZ   rT   bodyr_   s    rN   rb   zAlertBase.value      zzrM   NrT   r   rV   rU   rv   rR   	rH   rI   rJ   r   rT   rx   r]   ry   rb   rL   rM   rN   r   r     s/    5)E:)
I
  rM   r   c                        e Zd Zd fdZ xZS )Errorc                4    t         |   ||       d| _        y Nerrorsuperr]   rS   r\   rT   rV   	__class__s      rN   r]   zError.__init__      %	rM   r   rH   rI   rJ   r]   __classcell__r   s   @rN   r   r          rM   r   c                        e Zd Zd fdZ xZS )Warningc                4    t         |   ||       d| _        y Nwarningr   r   s      rN   r]   zWarning.__init__      %	rM   r   r   r   s   @rN   r   r          rM   r   c                        e Zd Zd fdZ xZS )Infoc                4    t         |   ||       d| _        y Ninfor   r   s      rN   r]   zInfo.__init__!  s    %	rM   r   r   r   s   @rN   r   r     s     rM   r   c                        e Zd Zd fdZ xZS )Successc                4    t         |   ||       d| _        y Nsuccessr   r   s      rN   r]   zSuccess.__init__(  r   rM   r   r   r   s   @rN   r   r   &  r   rM   r   c                       e Zd ZU dZded<    ed      Zded<   ded	<   ded
<   ded<   d fdZedd       Z	edd       Z
ddZddZ xZS )r.   z@A representation of ``st.button`` and ``st.form_submit_button``.r   r   FrP   ButtonProtorT   rR   labelhelpform_idc                B    t         |   ||       d| _        d| _        y )NFbuttonr   r]   r   rS   r   s      rN   r]   zButton.__init__8  s     %	rM   c                ^    t               }| j                  |_        | j                  |_        |S rZ   )r'   r   r   trigger_valuer\   wss     rN   r   zButton._widget_state=  s%    ];;	rM   c                    | j                   r| j                   S | j                  j                  }|sJ t        t        |t
           | j                           S )zThe value of the button. (bool))r   rV   r   r   r   r)   r   r   s     rN   rb   zButton.valueD  sF     ;;;;II++EL5eK09::rM   c                    || _         | S )zSet the value of the button.r   r   s     rN   r   zButton.set_valueN  r   rM   c                $    | j                  d      S )z$Set the value of the button to True.Tr   r_   s    rN   clickzButton.clickS      ~~d##rM   )rT   r   rV   rU   r   rv   r   )r   r   rv   r.   )rv   r.   )rH   rI   rJ   rK   rx   r   rT   r]   ry   r   rb   r   r   r   r   s   @rN   r.   r.   -  s`    JLE*E;*J
IL
   ; ;
$rM   r.   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d fd
ZddZe	dd       Z
e	dd       Z xZS )r0   z&A representation of ``st.chat_input``.rW   r   FrP   ChatInputProtorT   rR   placeholderc                4    t         |   ||       d| _        y N
chat_inputr   r   s      rN   r]   zChatInput.__init__`  s    % 	rM   c                    || _         | S r   r   r   s     rN   r   zChatInput.set_valued  r   rM   c                    t               }| j                  |_        | j                  | j                  |j                  _        |S rZ   )r'   r   r   string_trigger_valuedatar   s     rN   r   zChatInput._widget_statei  s5    ];;"+/;;B##(	rM   c                    | j                   r| j                   S | j                  j                  }|sJ |t           | j                     S )zThe value of the widget. (str))r   rV   r   r)   r   r   s     rN   rb   zChatInput.valueq  s?     ;;;;II++EL5%dgg..rM   )rT   r   rV   rU   )r   rW   rv   r0   r   rv   rW   rH   rI   rJ   rK   rx   r   rT   r]   r   ry   r   rb   r   r   s   @rN   r0   r0   X  sS    0!u-E>-!
   / /rM   r0   c                       e Zd ZU dZded<    ed      Zded<   ded	<   ded
<   ded<   d fdZedd       Z	edd       Z
ddZddZddZ xZS )r$   z$A representation of ``st.checkbox``.bool | Noner   FrP   CheckboxProtorT   rR   r   r   r   c                4    t         |   ||       d| _        y Ncheckboxr   r   s      rN   r]   zCheckbox.__init__  s    %	rM   c                ^    t               }| j                  |_        | j                  |_        |S rZ   r'   r   rb   
bool_valuer   s     rN   r   zCheckbox._widget_state  $    ]

	rM   c                    | j                   | j                   S | j                  j                  }|sJ t        t        || j
                           S )zThe value of the widget. (bool)r   rV   r   r   r   r   r   s     rN   rb   zCheckbox.value  C     ;;";;II++EL5eDGGn--rM   c                    || _         | S r   r   r   s     rN   r   zCheckbox.set_value  r   rM   c                $    | j                  d      S )z$Set the value of the widget to True.Tr   r_   s    rN   checkzCheckbox.check  r   rM   c                $    | j                  d      S )z%Set the value of the widget to False.Fr   r_   s    rN   uncheckzCheckbox.uncheck  s    ~~e$$rM   rT   r  rV   rU   r   r   )r   r   rv   r$   )rv   r$   )rH   rI   rJ   rK   rx   r   rT   r]   ry   r   rb   r   r  r  r   r   s   @rN   r$   r$   |  sf    . e,E=,J
IL   . .
$%rM   r$   c                  f    e Zd ZU dZ ed      Zded<   ded<   ded	<   d
ed<   ddZedd       Z	y)r1   z A representation of ``st.code``.FrP   	CodeProtorT   rR   languager   show_line_numbersNonerX   c                <    || _         d | _        || _        d| _        y NcoderT   rX   rV   rS   r[   s      rN   r]   zCode.__init__      
		rM   c                .    | j                   j                  S zThe value of the element. (str))rT   	code_textr_   s    rN   rb   z
Code.value  s     zz###rM   N)rT   r  rV   rU   r   )
rH   rI   rJ   rK   r   rT   rx   r]   ry   rb   rL   rM   rN   r1   r1     s=    *%(E9(M	I $ $rM   r1   c                       e Zd ZU dZded<   ded<   ded<   ded<    ed	      Zd
ed<   d fdZedd       Z	edd       Z
ddZddZ xZS )r2   z(A representation of ``st.color_picker``.rW   r   rR   r   r   r   FrP   ColorPickerProtorT   c                4    t         |   ||       d| _        y Ncolor_pickerr   r   s      rN   r]   zColorPicker.__init__  s    %"	rM   c                    | j                   | j                   S | j                  j                  }|sJ t        t        || j
                           S )z3The currently selected value as a hex string. (str))r   rV   r   r   rR   r   r   s     rN   rb   zColorPicker.value  sC     ;;";;II++EL5U477^,,rM   c                ^    t               }| j                  |_        | j                  |_        |S 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   s     rN   r   zColorPicker._widget_state  s&     ]**	rM   c                    || _         | S )z,Set the value of the widget as a hex string.r   r   s     rN   r   zColorPicker.set_value  r   rM   c                P    |j                  d      sd| }| j                  |      S )zESet the value of the widget as a hex string. May omit the "#" prefix.#)
startswithr   r   s     rN   pickzColorPicker.pick  s(    ||C A3A~~a  rM   )rT   r'  rV   rU   r   r   )r   rR   rv   r2   )rH   rI   rJ   rK   rx   r   rT   r]   ry   rb   r   r   r5  r   r   s   @rN   r2   r2     sb    2J
IL#/E/# - -  
!rM   r2   c                  D    e Zd ZU  ed      Zded<   ddZed	d       Zy)
	DataframeFrP   
ArrowProtorT   c                <    d | _         || _        || _        d| _        y Narrow_data_framerX   rT   rV   rS   r[   s      rN   r]   zDataframe.__init__  s    
	&	rM   c                T    t        j                  | j                  j                        S rZ   r    convert_arrow_bytes_to_pandas_dfrT   r  r_   s    rN   rb   zDataframe.value      >>tzzOOrM   NrT   r8  rV   rU   rv   PandasDataframer   rL   rM   rN   r7  r7    s,    5)E:)' P PrM   r7  r   SingleDateValue	DateValuec                       e Zd ZU dZded<    e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ZddZe	dd       Z
e	dd       Z xZS )r3   z&A representation of ``st.date_input``.zDateValue | None | InitialValuer   FrP   DateInputProtorT   rR   r   r   minmaxr   is_ranger   r   c                   t         |   ||       t               | _        d| _        t        j                  |j                  d      j                         | _        t        j                  |j                  d      j                         | _	        y )N
date_inputz%Y/%m/%d)
r   r]   rG   r   rS   r   strptimerH  r   rI  r   s      rN   r]   zDateInput.__init__  sd    %"n 	$$UYY
;@@B$$UYY
;@@BrM   c                    || _         | S r   r   r   s     rN   r   zDateInput.set_value  r   rM   c                    t               }| j                  |_        t        d       }|j                  | j                        |j
                  j                  d d  |S rZ   )r'   r   r   	serializerb   string_array_valuer  )r\   r   serdes      rN   r   zDateInput._widget_state  sF    ]t$(-

(C""1%	rM   c                    t        | j                  t              s't        | j                        \  }}|t	        |      S dS | j
                  j                  }|sJ || j                     S )z0The value of the widget. (date or Tuple of date)N)r   r   rG   r"   tuplerV   r   r   )r\   parsed_r   s       rN   rb   zDateInput.value%  s\     $++|4)$++6IFA$*$65=@D@II++EL5>!rM   )rT   rG  rV   rU   )r   rE  rv   r3   r   )rv   r    r  r   s   @rN   r3   r3     sl    0++!u-E>-J	I	IN
ILC
   " "rM   r3   c                  P    e Zd ZU ded<   ded<   ded<   ded<   ddZedd	       Zy
)r5   rR   messager   is_markdown	list[str]stack_trace
is_warningc                    d | _         || _        || _        d| _        |j                  | _        t        |j                        | _        y N	exception)rX   rV   rT   rS   message_is_markdownrY  listr[  r[   s      rN   r]   zException.__init__8  s?    	
	 44 1 12rM   c                    | j                   S rZ   )rX  r_   s    rN   rb   zException.valueA  s    ||rM   N)rT   ExceptionProtorV   rU   r   rH   rI   rJ   rx   r]   ry   rb   rL   rM   rN   r5   r5   1  s2    L3  rM   r5   c                  l    e Zd ZU  ed      Zded<   ded<   ded<   d	ed
<   ded<   ddZedd       Zy)HeadingBaseFrP   HeadingProtorT   rR   tagrW   anchorr   hide_anchorr  rX   c                <    || _         d | _        || _        || _        y rZ   r!  )r\   rT   rV   type_s       rN   r]   zHeadingBase.__init__O  s    
		rM   c                .    | j                   j                  S rZ   r   r_   s    rN   rb   zHeadingBase.valueU  r   rM   N)rT   rg  rV   rU   rl  rR   r   r   rL   rM   rN   rf  rf  F  s@    U+E<+	H	I  rM   rf  c                        e Zd Zd fdZ xZS )Headerc                (    t         |   ||d       y Nheaderr   r]   r   s      rN   r]   zHeader.__init__\  s    h/rM   rT   rg  rV   rU   r   r   s   @rN   ro  ro  Z  s    0 0rM   ro  c                        e Zd Zd fdZ xZS )	Subheaderc                (    t         |   ||d       y N	subheaderrs  r   s      rN   r]   zSubheader.__init__b  s    k2rM   rt  r   r   s   @rN   rv  rv  `  s    3 3rM   rv  c                        e Zd Zd fdZ xZS )Titlec                (    t         |   ||d       y Ntitlers  r   s      rN   r]   zTitle.__init__h  s    g.rM   rt  r   r   s   @rN   r{  r{  f  s    / /rM   r{  c                  N    e Zd ZU  ed      Zded<   ded<   d
dZedd       Zy	)r8   FrP   	JsonProtorT   r   expandedc                <    || _         d | _        || _        d| _        y Njsonr!  r[   s      rN   r]   zJson.__init__r  r"  rM   c                .    | j                   j                  S rZ   r   r_   s    rN   rb   z
Json.valuex  r   rM   N)rT   r  rV   rU   r   r   rL   rM   rN   r8   r8   l  s/    %(E9(N  rM   r8   c                  b    e Zd ZU  ed      Zded<   ded<   ded<   ded	<   dd
Zedd       Zy)r%   FrP   MarkdownProtorT   r   
is_caption
allow_htmlr  rX   c                <    || _         d | _        || _        d| _        y Nmarkdownr!  r[   s      rN   r]   zMarkdown.__init__  s    
		rM   c                .    | j                   j                  S rZ   r   r_   s    rN   rb   zMarkdown.value  r   rM   NrT   r  rV   rU   r   r   rL   rM   rN   r%   r%   }  s;     e,E=,	I  rM   r%   c                        e Zd Zd fdZ xZS )Captionc                4    t         |   ||       d| _        y Ncaptionr   r   s      rN   r]   zCaption.__init__  r   rM   r  r   r   s   @rN   r  r    r   rM   r  c                        e Zd Zd fdZ xZS )Dividerc                4    t         |   ||       d| _        y Ndividerr   r   s      rN   r]   zDivider.__init__  r   rM   r  r   r   s   @rN   r  r    r   rM   r  c                        e Zd Zd fdZ xZS )Latexc                4    t         |   ||       d| _        y Nlatexr   r   s      rN   r]   zLatex.__init__  r   rM   r  r   r   s   @rN   r  r    r   rM   r  c                  Z    e Zd ZU ded<   ded<   ded<   ded<   ded<   ddZedd	       Zy
)r9   MetricProtorT   rR   r   deltacolorr   c                <    || _         d | _        || _        d| _        y Nmetricr!  r[   s      rN   r]   zMetric.__init__  s    
		rM   c                .    | j                   j                  S rZ   r   r_   s    rN   rb   zMetric.value  r   rM   N)rT   r  rV   rU   r   rd  rL   rM   rN   r9   r9     s5    JJJ
I  rM   r9   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   d fdZedd       Z	edd       Z
edd       Zedd       ZddZddZddZ xZS )r/   zAA representation of button_group that is used by ``st.feedback``.list[T] | Noner   FrP   ButtonGroupProtorT   zlist[ButtonGroupProto.Option]optionsrR   r   c                h    t         |   ||       d| _        t        |j                        | _        y Nbutton_groupr   r]   rS   ra  r  r   s      rN   r]   zButtonGroup.__init__  s)    %"	EMM*rM   c                    t               }| j                  |_        | j                  |j                  j                  dd |S r.  Nr'   r   indicesint_array_valuer  r   s     rN   r   zButtonGroup._widget_state  5     ]%)\\"	rM   c                    | j                   | j                   S | j                  j                  }|sJ t        t        t
           || j                           S z6The currently selected values from the options. (list)r   rV   r   r   ra  rE   r   r   s     rN   rb   zButtonGroup.value  G     ;;";;II++EL5Qtww00rM   c                    | j                   D cg c],  }| j                  j                  | j                  |            . c}S c c}w zEThe indices of the currently selected values from the options. (list)rb   r  indexformat_funcr   s     rN   r  zButtonGroup.indices  <     BFLA""4#3#3A#67LLL   1Ac                    | j                   j                  }t        t        t        gt        f   |t
           | j                           S zCThe widget's formatting function for displaying options. (callable)rV   r   r   r   r   r)   r   r\   sss     rN   r  zButtonGroup.format_func  8     YY$$HcUCZ("[/$''*BCCrM   c                    || _         | S z/Set the value of the multiselect widget. (list)r   r   s     rN   r   zButtonGroup.set_value       rM   c                    | j                   }||v r| S |j                         }|j                  |       | j                  |       | 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news       rN   selectzButtonGroup.select  @     **<K,,.CJJqMNN3KrM   c                    | j                   }||vr| S |j                         }||v r|j                  |       ||v r| j                  |       | 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  s       rN   unselectzButtonGroup.unselect  Q     **GK,,.Cs(

1 s(NN3KrM   )rT   r  rV   rU   r   rv   list[T]rv   zSequence[int]rv   zCallable[[Any], Any])r   r  rv   ButtonGroup[T])r   rE   rv   r  rH   rI   rJ   rK   rx   r   rT   r]   ry   r   rb   r  r  r   r  r  r   r   s   @rN   r/   r/     s    K#/E/**L+
   1 1 M M D D
rM   r/   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   ded<   d fdZedd       Z	edd       Z
edd       Zedd       ZddZddZddZ xZS )Multiselectz'A representation of ``st.multiselect``.r  r   FrP   MultiSelectProtorT   rR   r   rZ  r  r   max_selectionsr   r   c                h    t         |   ||       d| _        t        |j                        | _        y Nmultiselectr  r   s      rN   r]   zMultiselect.__init__  s)    %!	EMM*rM   c                    t               }| j                  |_        | j                  |j                  j                  dd |S r  r  r   s     rN   r   zMultiselect._widget_state  r  rM   c                    | j                   | j                   S | j                  j                  }|sJ t        t        t
           || j                           S r  r  r   s     rN   rb   zMultiselect.value*  r  rM   c                    | j                   D cg c],  }| j                  j                  | j                  |            . c}S c c}w r  r  r   s     rN   r  zMultiselect.indices4  r  r  c                    | j                   j                  }t        t        t        gt        f   |t
           | j                           S r  r  r  s     rN   r  zMultiselect.format_func9  r  rM   c                    || _         | S r  r   r   s     rN   r   zMultiselect.set_value?  r  rM   c                    | j                   }||v r| S |j                         }|j                  |       | j                  |       | S r  r  r  s       rN   r  zMultiselect.selectE  r  rM   c                    | j                   }||vr| S |j                         }||v r|j                  |       ||v r| j                  |       | S r  r  r  s       rN   r  zMultiselect.unselectT  r  rM   )rT   r  rV   rU   r   r  r  r  )r   r  rv   Multiselect[T])r   rE   rv   r  r  r   s   @rN   r  r    s    1#/E/J
IL+
   1 1 M M D D
rM   r  c                       e Zd ZU dZded<    e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ZddZe	dd       Z
e	dd       ZddZddZ xZS )r;   z(A representation of ``st.number_input``.zNumber | None | InitialValuer   FrP   NumberInputProtorT   rR   r   Number | NonerH  rI  Numberstepr   r   c                    t         |   ||       t               | _        d| _        |j
                  r|j                  nd | _        |j                  r|j                  | _        y d | _        y Nnumber_input)	r   r]   rG   r   rS   has_minrH  has_maxrI  r   s      rN   r]   zNumberInput.__init__u  sL    %"n"	 %5994 %5994rM   c                    || _         | S )z0Set the value of the ``st.number_input`` widget.r   r   s     rN   r   zNumberInput.set_value|  r   rM   c                v    t               }| j                  |_        | j                  | j                  |_        |S rZ   )r'   r   rb   double_valuer   s     rN   r   zNumberInput._widget_state  .    ]::!"jjBO	rM   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   rG   rV   r   r   r   s     rN   rb   zNumberInput.value  sB     $++|4;;II++EL5 >!rM   c                    | j                   | S t        | j                   | j                  z   | j                  xs t	        d            }| j                  |      S )zDIncrement the ``st.number_input`` widget as if the user clicked "+".inf)rb   rH  r  rI  floatr   r   s     rN   	incrementzNumberInput.increment  sF    ::K

TYY&(@E%LA~~a  rM   c                    | j                   | S t        | j                   | j                  z
  | j                  xs t	        d            }| j                  |      S )zDDecrement the ``st.number_input`` widget as if the user clicked "-".z-inf)rb   rI  r  rH  r  r   r   s     rN   	decrementzNumberInput.decrement  sF    ::K

TYY&(AE&MB~~a  rM   )rT   r  rV   rU   )r   r  rv   r;   r   )rv   r  )rv   r;   rH   rI   rJ   rK   rx   r   rT   r]   r   ry   r   rb   r   r  r   r   s   @rN   r;   r;   h  sx    2((#/E/J		
L
IL8
   	" 	"!!rM   r;   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   ded<   d fdZedd       Z	edd       Z
edd       ZddZedd       Z xZS )r<   z!A representation of ``st.radio``.T | None | InitialValuer   FrP   
RadioProtorT   rR   r   rZ  r  r   
horizontalr   r   c                    t         |   ||       t               | _        d| _        t        |j                        | _        y Nradior   r]   rG   r   rS   ra  r  r   s      rN   r]   zRadio.__init__  s2    %"n	EMM*rM   c                    | j                   y| j                  j                  | j                  | j                               S ))The index of the current selection. (int)Nr  r_   s    rN   r  zRadio.index  s5     ::||!!$"2"24::">??rM   c                    t        | j                  t              s| j                  S | j                  j                  }|sJ t        t        || j                           S z4The currently selected value from the options. (Any)r   r   rG   rV   r   r   rE   r   r   s     rN   rb   zRadio.value  G     $++|4;;II++EL55>**rM   c                    | j                   j                  }t        t        t        gt        f   |t
           | j                           S r  r  r  s     rN   r  zRadio.format_func  r  rM   c                    || _         | S zSet the selection by value.r   r   s     rN   r   zRadio.set_value  r   rM   c                v    t               }| j                  |_        | j                  | j                  |_        |S r-  r'   r   r  	int_valuer   s     rN   r   zRadio._widget_state  0     ]::!::BL	rM   )rT   r  rV   rU   rv   
int | Nonerv   T | Noner  )r   r  rv   zRadio[T]r   )rH   rI   rJ   rK   rx   r   rT   r]   ry   r  rb   r  r   r   r   r   s   @rN   r<   r<     s    +##5)E:)J
IL+ @ @ + + D D

 	 	rM   r<   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   d fdZedd       Z	edd       Z
edd       ZddZddZddZedd       Z xZS )r=   z%A representation of ``st.selectbox``.r  r   FrP   SelectboxProtorT   rR   r   rZ  r  r   r   c                    t         |   ||       t               | _        d| _        t        |j                        | _        y N	selectboxr  r   s      rN   r]   zSelectbox.__init__  s2    %"n	EMM*rM   c                    | j                   yt        | j                        dk(  ry| j                  j                  | j	                  | j                               S )r  Nr   )rb   r   r  r  r  r_   s    rN   r  zSelectbox.index  sI     ::t||!||!!$"2"24::">??rM   c                    t        | j                  t              s| j                  S | j                  j                  }|sJ t        t        || j                           S r  r  r   s     rN   rb   zSelectbox.value  r  rM   c                    | j                   j                  }t        t        t        gt        f   |t
           | j                           S r  r  r  s     rN   r  zSelectbox.format_func  r  rM   c                    || _         | S r  r   r   s     rN   r   zSelectbox.set_value  r   rM   c                $    | j                  |      S r  r   r   s     rN   r  zSelectbox.select  s    ~~a  rM   c                    || j                  d      S | j                  t        t        | j                  |               S )zSet the selection by index.N)r   r   rE   r  )r\   r  s     rN   select_indexzSelectbox.select_index  s5    =>>$''~~d1dll5&9:;;rM   c                v    t               }| j                  |_        | j                  | j                  |_        |S r-  r  r   s     rN   r   zSelectbox._widget_state  r  rM   )rT   r  rV   rU   r  r  r  )r   r  rv   Selectbox[T])r  r  rv   r*  r   )rH   rI   rJ   rK   rx   r   rT   r]   ry   r  rb   r  r   r  r(  r   r   r   s   @rN   r=   r=     s    /##!u-E>-J
IL+ @ @ + + D D

!< 	 	rM   r=   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   ded<   d fdZddZe	dd       Z
e	dd       Ze	dd       ZddZ xZS )SelectSliderz)A representation of ``st.select_slider``.zT | Sequence[T] | Noner   FrP   SliderProtorT   rR   r   SliderProto.DataType.ValueType	data_typerZ  r  r   r   c                h    t         |   ||       d| _        t        |j                        | _        y Nselect_sliderr  r   s      rN   r]   zSelectSlider.__init__7  s)    %#	EMM*rM   c                    || _         | S )z$Set the (single) selection by value.r   r   s     rN   r   zSelectSlider.set_value<  r   rM   c           	        t        | j                  g d      }	 |j                  | j                  | j                              }t               }| j                  |_        ||j                  j                  d d  |S # t
        t        f$ r` 	 |j                  | j                  D cg c]  }| j                  |       nc c}w c}      }n#  t        d| j                         xY wY w xY w)NFzCould not find index for )r   r  rP  r  rb   r   	TypeErrorr'   r   double_array_valuer  )r\   rR  r   valr   s        rN   r   zSelectSlider._widget_stateA  s    !$,,E:	K 0 0 <=A ]()""1%	 I& 	KKOOdjj$QjsT%5%5c%:j$QRK #<TZZL!IJJ 	Ks5   *A9 9C(	C"B;
:CC(C""C('C(c                    | j                   | j                   S | j                  j                  }|sJ || j                     S z?The currently selected value or range. (Any or Sequence of Any)r   rV   r   r   r   s     rN   rb   zSelectSlider.valueQ  <     ;;";;II++EL5>!rM   c                    | j                   j                  }t        t        t        gt        f   |t
           | j                           S r  r  r  s     rN   r  zSelectSlider.format_func\  r  rM   c                (    | j                  ||g      S )z#Set the ranged selection by values.r   r\   loweruppers      rN   	set_rangezSelectSlider.set_rangeb  s    ~~uen--rM   rT   r-  rV   rU   )r   T | Sequence[T]rv   SelectSlider[T]r   )rv   rC  r  )r?  rE   r@  rE   rv   rD  )rH   rI   rJ   rK   rx   r   rT   r]   r   ry   r   rb   r  rA  r   r   s   @rN   r,  r,  *  s    3""E*E;*J--
IL+

   " " D D
.rM   r,  c                       e Zd ZU dZded<    e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Z	 	 	 	 ddZe	dd       Z
e	dd       Z	 	 	 	 	 	 ddZ xZS )r&   z"A representation of ``st.slider``.z,SliderValueT | Sequence[SliderValueT] | Noner   FrP   r-  rT   rR   r   r.  r/  r   rH  rI  r   r  r   r   c                4    t         |   ||       d| _        y Nsliderr   r   s      rN   r]   zSlider.__init__v  s    %	rM   c                    || _         | S )z%Set the (single) value of the slider.r   r   s     rN   r   zSlider.set_valuez  s     rM   c                    | j                   j                  }t        g |dd       }|j                  | j                        }t               }| j                  |_        ||j                  j                  d d  |S )NT)	rT   r/  r   rP  rb   r'   r   r6  r  )r\   r/  rR  r   r   s        rN   r   zSlider._widget_state  s`    JJ((	B	46OODJJ']()""1%	rM   c                    | j                   | j                   S | j                  j                  }|sJ || j                     S r9  r:  r   s     rN   rb   zSlider.value  r;  rM   c                (    | j                  ||g      S )z#Set the ranged value of the slider.r   r>  s      rN   rA  zSlider.set_range  s     ~~uen--rM   rB  )r   %SliderValueT | Sequence[SliderValueT]rv   Slider[SliderValueT]r   )rv   rM  )r?  r   r@  r   rv   rN  )rH   rI   rJ   rK   rx   r   rT   r]   r   ry   r   rb   rA  r   r   s   @rN   r&   r&   g  s    ,88E*E;*J--		

IL6	   " ".!.*6.	.rM   r&   c                  D    e Zd ZU  ed      Zded<   ddZed	d       Zy)
TableFrP   r8  rT   c                <    d | _         || _        || _        d| _        y Narrow_tabler<  r[   s      rN   r]   zTable.__init__  s    
	!	rM   c                T    t        j                  | j                  j                        S rZ   r>  r_   s    rN   rb   zTable.value  r@  rM   NrA  rB  r   rL   rM   rN   rP  rP    s,    5)E:)" P PrM   rP  c                  R    e Zd ZU  ed      Zded<   dZded<   d
dZedd	       Z	y)r>   FrP   	TextProtorT   Nr  rX   c                .    || _         || _        d| _        y Ntext)rT   rV   rS   r[   s      rN   r]   zText.__init__  s    
		rM   c                .    | j                   j                  S r$  r   r_   s    rN   rb   z
Text.value  s     zzrM   )rT   rV  rV   rU   r   )
rH   rI   rJ   r   rT   rx   rX   r]   ry   rb   rL   rM   rN   r>   r>     s4    %(E9(C
  rM   r>   c                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   ded<   d fdZddZe	dd       Z
e	dd       ZddZ xZS )r?   z%A representation of ``st.text_area``.str | None | InitialValuer   FrP   TextAreaProtorT   rR   r   r   	max_charsr   r   r   c                R    t         |   ||       t               | _        d| _        y N	text_arear   r]   rG   r   rS   r   s      rN   r]   zTextArea.__init__  s"    %"n	rM   c                    || _         | S r   r   r   s     rN   r   zTextArea.set_value  r   rM   c                v    t               }| j                  |_        | j                  | j                  |_        |S rZ   r/  r   s     rN   r   zTextArea._widget_state  r  rM   c                    t        | j                  t              s| j                  S | j                  j                  }|sJ || j
                     S z&The current value of the widget. (str)r  r   s     rN   rb   zTextArea.value  @     $++|4;;II++EL5>!rM   c                p    | j                   rt        |      | j                   kD  r| S | j                  |      S zv
        Set the value of the widget only if the value does not exceed the        maximum allowed characters.
        r^  r   r   r   s     rN   inputzTextArea.input  .     >>c!ft~~5K~~a  rM   )rT   r]  rV   rU   )r   rW   rv   r?   r   r  )r   rR   rv   r?   rH   rI   rJ   rK   rx   r   rT   r]   r   ry   r   rb   rk  r   r   s   @rN   r?   r?     sl    /%% e,E=,JN
IL 

   " "!rM   r?   c                       e Zd ZU dZded<    e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ZddZe	dd       Z
e	dd       ZddZ xZS )r@   z&A representation of ``st.text_input``.r\  r   FrP   TextInputProtorT   rR   r   r   r^  autocompleter   r   r   c                R    t         |   ||       t               | _        d| _        y N
text_inputrb  r   s      rN   r]   zTextInput.__init__   "    %"n 	rM   c                    || _         | S r   r   r   s     rN   r   zTextInput.set_value  r   rM   c                v    t               }| j                  |_        | j                  | j                  |_        |S rZ   r/  r   s     rN   r   zTextInput._widget_state
  r  rM   c                    t        | j                  t              s| j                  S | j                  j                  }|sJ || j
                     S rf  r  r   s     rN   rb   zTextInput.value  rg  rM   c                p    | j                   rt        |      | j                   kD  r| S | j                  |      S ri  rj  r   s     rN   rk  zTextInput.input  rl  rM   )rT   ro  rV   rU   )r   rW   rv   r@   r   r  )r   rR   rv   r@   rm  r   s   @rN   r@   r@     sr    0%%!u-E>-JN
IL!

   " "!rM   r@   	TimeValuec                       e Zd ZU dZded<    ed      Zded<   ded	<   d
ed<   ded<   ded<   d fdZddZe	dd       Z
e	dd       ZddZddZ xZS )rA   z&A representation of ``st.time_input``.zTimeValue | None | InitialValuer   FrP   TimeInputProtorT   rR   r   r   r  r   r   c                R    t         |   ||       t               | _        d| _        y N
time_inputrb  r   s      rN   r]   zTimeInput.__init__6  rt  rM   c                    || _         | S r   r   r   s     rN   r   zTimeInput.set_value;  r   rM   c                    t               }| j                  |_        t        d       }|j                  | j                        }|||_        |S rZ   )r'   r   r!   rP  rb   r0  )r\   r   rR  serialized_values       rN   r   zTimeInput._widget_state@  sC    ]t$ ??4::6'.BO	rM   c                    t        | j                  t              s2| j                  }t        |t              r|j	                         }|S |}|S | j
                  j                  }|sJ || j                     S )z'The current value of the widget. (time))r   r   rG   r   r   rV   r   r   )r\   r   r   s      rN   rb   zTimeInput.valueK  sd     $++|4A&q(3AH :;AHII++EL5>!rM   c                    | j                   | S t        j                  t        j                         | j                         t        | j                        z   }| j                  |j                               S )zSelect the next available time.seconds	rb   r   combiner   todayr   r  r   r   r\   dts     rN   r   zTimeInput.incrementW  P    ::KdjjlDJJ7)DII:VV~~bggi((rM   c                    | j                   | S t        j                  t        j                         | j                         t        | j                        z
  }| j                  |j                               S )z#Select the previous available time.r  r  r  s     rN   r  zTimeInput.decrement^  r  rM   )rT   r{  rV   rU   )r   zTimeValue | Nonerv   rA   r   )rv   ztime | None)rv   rA   r  r   s   @rN   rA   rA   +  sk    0++!u-E>-J
I
IL!

   	" 	"))rM   rA   c                  N    e Zd ZU  ed      Zded<   ded<   d
dZedd       Zy	)rB   FrP   
ToastProtorT   rR   r   c                <    || _         d | _        || _        d| _        y Ntoastr!  r[   s      rN   r]   zToast.__init__k  s    
		rM   c                .    | j                   j                  S rZ   r   r_   s    rN   rb   zToast.valueq  r   rM   N)rT   r  rV   rU   r   r   rL   rM   rN   rB   rB   f  s/    5)E:)
I  rM   rB   c                       e Zd ZU dZded<    ed      Zded<   ded	<   ded
<   ded<   d fdZedd       Z	edd       Z
ddZ xZS )Togglez"A representation of ``st.toggle``.r  r   FrP   r  rT   rR   r   r   r   c                B    t         |   ||       d | _        d| _        y Ntoggler   r   s      rN   r]   zToggle.__init__  s     %	rM   c                ^    t               }| j                  |_        | j                  |_        |S rZ   r  r   s     rN   r   zToggle._widget_state  r  rM   c                    | j                   | j                   S | j                  j                  }|sJ t        t        || j
                           S )z'The current value of the widget. (bool)r  r   s     rN   rb   zToggle.value  r  rM   c                    || _         | S r   r   r   s     rN   r   zToggle.set_value  r   rM   r  r   r   )r   r   rv   r  )rH   rI   rJ   rK   rx   r   rT   r]   ry   r   rb   r   r   r   s   @rN   r  r  v  s\    , e,E=,J
IL
   . .rM   r  c                     e Zd ZU dZded<   ded<    ed      Zded	<    ed      Zd
ed<   	 	 	 	 d>dZd?dZ	d Z
d@dZedAd       ZedBd       ZedCd       ZedDd       ZedEd       ZedFd       ZedGd       ZedHd       ZedId       ZedJd       ZedKd       ZedLd       ZedMd       ZedNd       ZedOd       ZedPd       ZedQd        ZedRd!       ZedSd"       ZedTd#       Z edUd$       Z!edVd%       Z"edWd&       Z#edXd'       Z$edYd(       Z%edZd)       Z&ed[d*       Z'ed\d+       Z(ed]d,       Z)ed^d-       Z*ed_d.       Z+ed`d/       Z,edad0       Z-edbd1       Z.edcd2       Z/eddd3       Z0eded4       Z1edfd5       Z2edgd6       Z3edhd7       Z4edid8       Z5djd9Z6d:d;dkd<Z7d= Z8y:)lr-   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``.
    rR   rS   zdict[int, Node]childrenFrP   r   rT   rU   rV   c                    i | _         || _        |r1|j                  d      }||| _        || _        y d| _        || _        y d| _        || _        y )NrS   	containerunknown)r  rT   r}   rS   rV   r~   s       rN   r]   zBlock.__init__  s\    
 
!!&)B~	 	 (	 	 "DI	rM   c                ,    t        | j                        S rZ   )r   r  r_   s    rN   r   zBlock.__len__  s    4==!!rM   c              #  h   K   |  | j                   D ]  }| j                   |   E d {     y 7 wrZ   r  )r\   	child_idxs     rN   r`   zBlock.__iter__  s.     
I}}Y/// '/s   &202c                     | j                   |   S rZ   r  )r\   ks     rN   r   zBlock.__getitem__  s    }}QrM   c                     y rZ   rL   r_   s    rN   rX   z	Block.key  s    rM   c                6    t        | j                  d            S )Nr   r   getr_   s    rN   r   zBlock.button      $((8,--rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.button_group      $((>233rM   c                6    t        | j                  d            S r  r   r  r_   s    rN   r  zBlock.caption      488I.//rM   c                6    t        | j                  d            S r   r  r_   s    rN   r   zBlock.chat_input      $((<011rM   c                $    | j                  d      S Nchat_messager  r_   s    rN   r  zBlock.chat_message  s    xx''rM   c                6    t        | j                  d            S r
  r  r_   s    rN   r  zBlock.checkbox  s    $((:.//rM   c                6    t        | j                  d            S r  r  r_   s    rN   r   z
Block.code      488F+,,rM   c                6    t        | j                  d            S r)  r  r_   s    rN   r*  zBlock.color_picker  r  rM   c                $    | j                  d      S Ncolumnr  r_   s    rN   columnszBlock.columns      xx!!rM   c                6    t        | j                  d            S r:  r  r_   s    rN   	dataframezBlock.dataframe  s    488$6788rM   c                6    t        | j                  d            S )NrL  r  r_   s    rN   rL  zBlock.date_input  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.divider  r  rM   c                6    t        | j                  d            S r   r  r_   s    rN   r   zBlock.error      488G,--rM   c                6    t        | j                  d            S r^  r  r_   s    rN   r_  zBlock.exception      488K011rM   c                $    | j                  d      S Nexpanderr  r_   s    rN   r  zBlock.expander	  s    xx
##rM   c                6    t        | j                  d            S rq  r  r_   s    rN   rr  zBlock.header      488H-..rM   c                6    t        | j                  d            S r   r  r_   s    rN   r   z
Block.info  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  z
Block.json  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.latex  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.markdown  s    488J/00rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.metric!  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.multiselect%  s    $((=122rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.number_input)  r  rM   c                6    t        | j                  d            S r	  r  r_   s    rN   r
  zBlock.radio-  s    $((7+,,rM   c                6    t        | j                  d            S r1  r  r_   s    rN   r2  zBlock.select_slider1  s    $((?344rM   c                6    t        | j                  d            S r   r  r_   s    rN   r!  zBlock.selectbox5      $((;/00rM   c                6    t        | j                  d            S rG  r  r_   s    rN   rH  zBlock.slider9  r  rM   c                $    | j                  d      S Nstatusr  r_   s    rN   r  zBlock.status=  r  rM   c                6    t        | j                  d            S rx  r  r_   s    rN   ry  zBlock.subheaderA  r  rM   c                6    t        | j                  d            S r   r  r_   s    rN   r   zBlock.successE  r  rM   c                6    t        | j                  d            S rR  r  r_   s    rN   tablezBlock.tableI  s    488M233rM   c                $    | j                  d      S Ntabr  r_   s    rN   tabsz
Block.tabsM  s    xxrM   c                6    t        | j                  d            S rX  r  r_   s    rN   rY  z
Block.textQ  r  rM   c                6    t        | j                  d            S r`  r  r_   s    rN   ra  zBlock.text_areaU  r  rM   c                6    t        | j                  d            S rr  r  r_   s    rN   rs  zBlock.text_inputY  r  rM   c                6    t        | j                  d            S r}  r  r_   s    rN   r~  zBlock.time_input]  r  rM   c                6    t        | j                  d            S r}  r  r_   s    rN   r~  zBlock.titlea  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.toaste  r  rM   c                6    t        | j                  d            S r  r  r_   s    rN   r  zBlock.togglei  r  rM   c                6    t        | j                  d            S r   r  r_   s    rN   r   zBlock.warningm  r  rM   c                L    | D cg c]  }|j                   |k(  s| c}S c c}w rZ   )rS   )r\   element_typer   s      rN   r  z	Block.getq  s%    :4a166\#94:::s   !!Nrg   c               :    | j                   j                  |      S zRun the script with updated widget values.

        Parameters
        ----------
        timeout
            The maximum number of seconds to run the script. None means
            use the AppTest's default.
        rg   rj   rl   s     rN   rk   z	Block.runt  rm   rM   c                    t        |       S rZ   )rp   r_   s    rN   rq   zBlock.__repr__  s    T{rM   )rT   BlockProto | NonerV   rU   r   )r  r   rv   Noder  )rv   zWidgetList[Button])rv   zWidgetList[ButtonGroup[Any]])rv   zElementList[Caption])rv   zWidgetList[ChatInput])rv   zSequence[ChatMessage])rv   zWidgetList[Checkbox])rv   zElementList[Code])rv   zWidgetList[ColorPicker])rv   zSequence[Column])rv   zElementList[Dataframe])rv   zWidgetList[DateInput])rv   zElementList[Divider])rv   zElementList[Error])rv   zElementList[Exception])rv   zSequence[Expander])rv   zElementList[Header])rv   zElementList[Info])rv   zElementList[Json])rv   zElementList[Latex])rv   zElementList[Markdown])rv   zElementList[Metric])rv   zWidgetList[Multiselect[Any]])rv   zWidgetList[NumberInput])rv   zWidgetList[Radio[Any]])rv   zWidgetList[SelectSlider[Any]])rv   zWidgetList[Selectbox[Any]])rv   zWidgetList[Slider[Any]])rv   zSequence[Status])rv   zElementList[Subheader])rv   zElementList[Success])rv   zElementList[Table])rv   zSequence[Tab])rv   zElementList[Text])rv   zWidgetList[TextArea])rv   zWidgetList[TextInput])rv   zWidgetList[TimeInput])rv   zElementList[Title])rv   zElementList[Toast])rv   zWidgetList[Toggle])rv   zElementList[Warning])r  rR   rv   zSequence[Node]rw   )9rH   rI   rJ   rK   rx   r   rT   rV   r]   r   r`   r   ry   rX   r   r  r  r   r  r  r   r*  r  r  rL  r  r   r_  r  rr  r   r  r  r  r  r  r  r
  r2  r!  rH  r  ry  r   r  r  rY  ra  rs  r~  r~  r  r  r   r  rk   rq   rL   rM   rN   r-   r-     s    IE"E3"5)D+)  $"0
   
 . . 4 4 0 0 2 2 ( ( 0 0 - - 4 4 " " 9 9 2 2 0 0 . . 2 2 $ $ / / - - - - . . 1 1 / / 3 3 4 4 - - 5 5 1 1 . . " " 2 2 0 0 4 4   - - 1 1 2 2 2 2 . . . . . . 0 0; .2 	.rM   r-   c                     j                   j                  }dddg t               i gt               r fdt	               D        }n#fd j
                  j                         D        }g }|D ]>  \  }}t        |t              r| dt        |       }n| d|}|j                  |       @ d|d   z   |d<   d	j                  |      }t        j                  |d
      }| d| dS )ziA custom repr similar to `streamlit.util.repr_` but that shows tree
    structure using indentation.
    N Fc              3     K   | ]m  }|j                   r_t        |j                        |j                  k7  r<t        |j                        vr$|j                  t        |j                        f o y wrZ   )rQ   rd   re   default).0fdefaultsr\   s     rN   	<genexpr>zrepr_.<locals>.<genexpr>  s^      
!vvaff%2aff%X5	 VVWT166*+!s   A3A6c              3  6   K   | ]  \  }}|vs||f  y wrZ   rL   )r  r  r   r  s      rN   r  zrepr_.<locals>.<genexpr>  s#     W,A&1aQhEV1v,As   	=
r   ,
    (z
))r   rH   setr
   r	   __dict__itemsr   dictformat_dictr  jointextwrapindent)	r\   	classnamefields_valsreprs
field_namerb   linefield_reprsr  s	   `       @rN   rp   rp     s     ''IUBr:HD
D\
 XDMM,?,?,AWE(
EeT" \;u#5"67D \5),DT ) eAhE!H**U#K//+w7K[+c**rM   c                    g }| j                         D ]  \  }}| d|}|j                  |        dj                  |      }t        j                  |d      }d| d}|S )Nz: r  r  z{
z
})r  r  r  r  r  )dlinesr  r   r  rs         rN   r  r    sh    E	1Bqe}T  	

5A7#A
qcAHrM   c                  &    e Zd ZdZ	 d	 	 	 	 	 ddZy)SpecialBlockz4Base class for the sidebar and main body containers.Nc                    i | _         || _        |r|| _        || _        y |r5|j                  d      r$|j                  d      }|J || _        || _        y d| _        || _        y )NrS   r  )r  rT   rS   r}   rV   )r\   rT   rV   rS   r   s        rN   r]   zSpecialBlock.__init__  sq     
DI 	 u''/!!&)B>!>DI 	 "DI	rM   rZ   )rT   r  rV   rU   rS   rW   )rH   rI   rJ   rK   r]   rL   rM   rN   r  r    s+    >  	   	rM   r  c                  n    e Zd ZU dZ ed      Zded<    ed      Zded<   ded<   ded	<   	 	 	 	 dd
Zy)ChatMessagez(A representation of ``st.chat_message``.FrP   rR   rS   BlockProto.ChatMessagerT   re   avatarc                    i | _         || _        || _        d| _        |j                  | _        |j
                  | _        y r  )r  rT   rV   rS   re   r  r[   s      rN   r]   zChatMessage.__init__  s6    
 
	"	JJ	llrM   N)rT   r  rV   rU   	rH   rI   rJ   rK   r   rS   rx   rT   r]   rL   rM   rN   r  r    sE    25!D#!$)u$5E!5
IK
#%
# 
#rM   r  c                  n    e Zd ZU dZ ed      Zded<    ed      Zded<   ded	<   ded
<   	 	 	 	 ddZy)Columnz3A representation of a column within ``st.columns``.FrP   rR   rS   BlockProto.ColumnrT   r  weightgapc                    i | _         || _        || _        d| _        |j                  | _        |j
                  | _        y r  )r  rT   rV   rS   r  r  r[   s      rN   r]   zColumn.__init__  s6    
 
		ll99rM   N)rT   r  rV   rU   r  rL   rM   rN   r  r    sE    =5!D#!$%0E0M	H
 
 
rM   r  c                  b    e Zd ZU  ed      Zded<    ed      Zded<   ded<   ded<   dd	Zy
)ExpanderFrP   rR   rS   BlockProto.ExpandablerT   r   r   c                    i | _         || _        || _        d| _        |j                  | _        |j
                  | _        y r  r  rT   rV   rS   r   r   r[   s      rN   r]   zExpander.__init__  s6    
	 	JJ	[[
rM   NrT   r#  rV   rU   )rH   rI   rJ   r   rS   rx   rT   r]   rL   rM   rN   r"  r"    s0    5!D#!#(e#4E 4
IJ!rM   r"  c                  r    e Zd ZU  ed      Zded<    ed      Zded<   ded<   ded<   dd	Zed
        Z	y)StatusFrP   rR   rS   r#  rT   r   r   c                    i | _         || _        || _        d| _        |j                  | _        |j
                  | _        y r  r%  r[   s      rN   r]   zStatus.__init__  s4    
		JJ	[[
rM   c                x    | j                   dk(  ry| j                   dk(  ry| j                   dk(  ryt        d      )Nspinnerrunningz:material/check:completez:material/error:r   zUnknown Status state)r   r   r_   s    rN   r   zStatus.state  s=    99	!YY,,YY,,344rM   Nr&  )
rH   rI   rJ   r   rS   rx   rT   r]   ry   r   rL   rM   rN   r(  r(    sD    5!D#!#(e#4E 4
IJ! 5 5rM   r(  c                  d    e Zd ZU dZ ed      Zded<    ed      Zded<   ded<   	 	 	 	 dd	Zy
)Tabz+A representation of tab within ``st.tabs``.FrP   rR   rS   BlockProto.TabrT   r   c                ^    i | _         || _        || _        d| _        |j                  | _        y r  )r  rT   rV   rS   r   r[   s      rN   r]   zTab.__init__(  s+    
 
		[[
rM   N)rT   r0  rV   rU   r  rL   rM   rN   r/  r/     s?    55!D#!!u-E>-J	!	! 	!rM   r/  r  c                <    t        | t              r| j                  S y rZ   )r   r   r   )nodes    rN   get_widget_stater4  7  s    $!!!rM   c                      e Zd ZU dZ edd      Zded<   d Zedd       Z	edd	       Z
edd
       ZddZddddZd Zy)rU   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)rQ   r  zAppTest | None_runnerc                .    i | _         | | _        d| _        y )NrV   )r  rV   rS   r_   s    rN   r]   zElementTree.__init__Y  s    		rM   c                4    | d   }t        |t              sJ |S )Nr   r   r-   )r\   ms     rN   mainzElementTree.main^       G!U###rM   c                4    | d   }t        |t              sJ |S )N   r9  )r\   ss     rN   sidebarzElementTree.sidebard  r<  rM   c                J    | j                   J | j                   j                  S rZ   )r6  r   r_   s    rN   r   zElementTree.session_statej  s"    ||'''||)))rM   c                z    t               }| D ]+  }t        |      }||j                  j                  |       - |S rZ   )r(   r4  widgetsr  )r\   r   r3  ws       rN   get_widget_stateszElementTree.get_widget_stateso  s;    ^D &A}

!!!$ 
 	rM   rg   c               x    | j                   J | j                         }| j                   j                  ||      S r  )r6  rE  _run)r\   rh   widget_statess      rN   rk   zElementTree.runx  s<     ||'''..0||   @@rM   c                ,    t        | j                        S rZ   )r  r  r_   s    rN   rq   zElementTree.__repr__  s    4==))rM   )rv   r-   )rv   rC   )rv   r(   rw   )rH   rI   rJ   rK   r   r6  rx   r]   ry   r;  r@  r   rE  rk   rq   rL   rM   rN   rU   rU   >  sp    . $=G^=
  
  
 * * .2 A*rM   rU   c                <   t               }t        d|d      t        d|d      t        d|d      d|_        | D ]  }|j                  d      s|j                  j
                  }|j                  }|j                  d      d	k(  r	|j                  }|j                  d      }|d
k(  r|j                  j                  }|t        j                  j                  k(  rt        |j                  |      }n}|t        j                  j                  k(  rt!        |j                  |      }nG|t        j                  j"                  k(  rt%        |j                  |      }n|t        j                  j&                  k(  rt)        |j                  |      }nt+        d|j                  j                         |dk(  rt-        |j.                  |      }n|dk(  rt1        |j2                  |      }n}|dk(  rt5        |j6                  |      }n_|dk(  rt9        |j:                  |      }nA|dk(  rt=        |j>                  |      }n#|dk(  re|j@                  jB                  }	|	tD        jF                  jH                  k(  rtK        |j@                  |      }ntM        |j@                  |      }n|dk(  rtO        |jP                  |      }n|dk(  rtS        |jT                  |      }n}|dk(  rtW        |jX                  |      }n_|dk(  rt[        |j\                  |      }nA|dk(  r |j^                  j`                  tb        jd                  jf                  k(  rti        |j^                  |      }n|j^                  j`                  tb        jj                  jf                  k(  rtm        |j^                  |      }n|j^                  j`                  tb        jn                  jf                  k(  rtq        |j^                  |      }n]t+        d|j^                  j`                         |dk(  rts        |jt                  |      }n|dk(  rJ|jv                  jx                  tz        j|                  j~                  k(  rt        |jv                  |      }n|jv                  jx                  tz        j|                  j                  k(  rt        |jv                  |      }n|jv                  jx                  tz        j|                  j                  k(  rt        |jv                  |      }n9|jv                  jx                  tz        j|                  j                  k(  rt        |jv                  |      }nt+        d|jv                  jx                         |dk(  rt        |j                  |      }n|dk(  rt        |j                  |      }n|dk(  rt        |j                  |      }ns|dk(  rt        |j                  |      }nU|d k(  rt        |j                  |      }n7|d!k(  r|j                  jB                  t        j|                  j                  k(  rt        |j                  |      }n|j                  jB                  t        j|                  j                  k(  rt        |j                  |      }nt+        d"|j                         |d#k(  rt        |j                  |      }nh|d$k(  rt        |j                  |      }nJ|d%k(  rt        |j                  |      }n,|d&k(  rt        |j                  |      }n|d'k(  rt        |j                  |      }nt        ||      }n|j                  d      d(k(  r|j                  }
|
j                  d      }|d)k(  rt        |
j                  |      }n|d*k(  rt        |
j                  |      }nx|d+k(  rF|
j                  j                  rt        |
j                  |      }nEt        |
j                  |      }n-|d,k(  rt        |
j                  |      }nt        |
|-      }n9|}|dd. D ]G  }|j                  }|j                  |      }|t        d|-      }|||<   t        |t              sJ |}I t        |t              r1|j                  j                  |d.         }||j                  |_        ||j                  |d.   <    |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)rS   rV   rT   r@  event)r   r>     r  rS   new_elementalert)rV   zUnknown alert type with format r;  rS  r   r  r   r  r   r*  rL  r_  headingzUnknown heading type with tag r  r  zUnknown markdown type r  r  r  r
  r!  rH  zSlider with unknown type rY  ra  rs  r~  r  	add_blockr  r  
expandabler  )rT   rV   )prU   r  r  HasFieldmetadata
delta_pathr  r}   rM  rN  formatr   FormatERRORr   INFOr   SUCCESSr   WARNINGr   r   r7  r;  rP  rS  r.   r   r/   r  r0   r   r  rS   r  	StyleTypeTOGGLEr  r$   r1   r   r2   r*  r3   rL  r5   r_  rO  rh  r   	TITLE_TAGrb   r{  
HEADER_TAGro  SUBHEADER_TAGrv  r8   r  r  r  r  TypeNATIVEr%   CAPTIONr  LATEXr  DIVIDERr  r9   r  r  r  r;   r  r<   r
  r=   r!  rH  r-  SLIDERr&   SELECT_SLIDERr,  r>   rY  r?   ra  r@   rs  rA   r~  rB   r  r{   rP  r  r  r  r  rQ  r   r(  r"  r/  r  r-   r  r   )messagesrV   msgrU  r  eltr   rV  new_nodestyleblockbtycurrent_noder   r  childplaceholder_blocks                    rN   parse_tree_from_messagesrr    s    =DV$d;YT>W4t<DM ||G$\\,,
		F#}4##C'BW}))Z..444$SYYT:Hz00555#CIID9Hz00888&syyt<Hz00888&syyt<H$9#)):J:J9KL  ))$S%9%9E}$ t<x!#**48~%&s'7'7dC|#$S^^$?z!))M33:::%cll>H'4@Hvt4~%&s'7'7dC|#$S^^$?{"$S]]>y;;??o&?&?&E&EE$S[[t<H[[__(B(B(H(HH%ckk=H[[__(E(E(K(KK(4@H$'EckkooEV%WXXvt4z!<<,,0B0B0I0II'4@H\\..-2D2D2L2LL&s||$?H\\..-2D2D2J2JJ$S\\=H\\..-2D2D2L2LL&s||$?H$01J1J0KL  x!#**48}$&sTB~%&s'7'7dCw 6{"$S]]>x::??k&6&6&=&==%cjjt<HZZ__(8(8(F(FF+CJJTBH$'@%MNNvt4{"#CMM=|#$S^^$?|#$S^^$?w 6)#D9f%4OOE""6*Cn$&u'9'9E!%,,T:$##((%e&6&6TBH'(8(8tDHuyyt4 u48 "cr?C#,,HLL%E}Dt4 %eU+++ L # h& , 5 5 9 9*R. I ,$5$>$>!08jn-S V KrM   r   )r  zdict[Any, Any])r3  r  rv   zWidgetState | None)rh  zlist[ForwardMsg]rv   rU   )
__future__r   r  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%   r  streamlit.proto.Slider_pb2r&   r-   streamlit.proto.WidgetStates_pb2r'   r(   streamlit.runtime.state.commonr)   r*   pandasr+   rC  streamlit.proto.Arrow_pb2r,   r8  streamlit.proto.Block_pb2r-   
BlockProtostreamlit.proto.Button_pb2r.   r   streamlit.proto.ButtonGroup_pb2r/   r  streamlit.proto.ChatInput_pb2r0   r   streamlit.proto.Code_pb2r1   r  streamlit.proto.ColorPicker_pb2r2   r'  streamlit.proto.DateInput_pb2r3   rG  streamlit.proto.Element_pb2r4   rt   streamlit.proto.Exception_pb2r5   rc  streamlit.proto.ForwardMsg_pb2r6   streamlit.proto.Heading_pb2r7   rg  streamlit.proto.Json_pb2r8   r  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>   rV  streamlit.proto.TextArea_pb2r?   r]  streamlit.proto.TextInput_pb2r@   ro  streamlit.proto.TimeInput_pb2rA   r{  streamlit.proto.Toast_pb2rB   r  *streamlit.runtime.state.safe_session_staterC   streamlit.testing.v1.app_testrD   rE   rG   r{   r   r   r   r   r   r   r   r   r   r   r7  rD  rx   rE  rf  ro  rv  r{  r  r  r  r  r   r  r  r,  rP  ry  r  rp   r  r  r  r  r"  r(  r/  r  r4  rU   rr  rL   rM   rN   <module>r     s   #  # $ > > 4 4	 	 	 ( * 6 F 
  : B B < F P3==@OI:OICI9C:@OO=I:FII=K5CL 	 	 	 2 c 2  2 j $W $ $( 0Wc 0 00 	w$7%''%. %'P vVt4T"GDM     I   i   9   i   '$V '$ '$T  /  /  /F *%v *% *%Z $7 $ $* ,!& ,! ,!^ P P P #4>2 2_h.GMN	9 N *" *" *"Z   ( '3  & 0[ 0 0
 3 3 3
 /K / /
 7    w  $ h   h   H   W  $ Q&'!* Q Qh T&'!* T Tn 
sEz	 :!& :! :!z 8FGAJ 8 8v D
 D DN 9.671: 9. 9.x 3.VW\* 3. 3.l PG P P 7    1!v 1! 1!h 1! 1! 1!h T8^,	9 , 7) 7) 7)t G   #V # #L b b bJ+D 5  , #% # #* U  * !u ! !" 5U 5 54 !% ! !& 'i ' H*% H* H*VYrM   