
    &eF                    l   U d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dl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'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- d dl.m/Z0 d dl1m2Z3 d dl4m5Z6 d dl7m8Z9 d dl:m;Z< d dl=m>Z? d dl@mAZB d dlCmDZE d dlFmGZH d dlImJZK d dlLmMZN d dlOmPZP d dlQmRZS d dlTmUZV d dlWmXZY d dlZm[Z\ d dl]m^Z_ d dl`maZb d d lcmdZe d d!lfmgZh d d"limjZk d d#llmmZn d d$lompZq d d%lrmsZt d d&lumvZw d d'lxmyZz d d(l{m|Z|m}Z} d d)l~mZ d d*lmZ erd d+lmZ  ed,          Ze G d- d.                      Ze G d/ d0e                      ZJ ed12           G d3 d4eJ                      Z ed12           G d5 d6eJe                      Z ed7eJd89          Z G d: d;ee                   Z ed<ed89          Z G d= d>ee         ee                   Z ed12           G d? d@eJ                      Z ed12           G dA dBe                      Z ed12           G dC dDe                      Z ed12           G dE dFe                      Z ed12           G dG dHe                      Z ed12           G dI dJe                      Z8 ed12           G dK dLe                      Z; ed12           G dM dNe                      Z> ed12           G dO dPeJ                      ZA ed12           G dQ dRe                      ZD ed12           G dS dTeJ                      Zeeef         ZdUedV<   eeee         df         ZdUedW<    ed12           G dX dYe                      ZG ed12           G dZ d[eJ                      ZM ed12           G d\ d]eJe                      Z ed12           G d^ d_e                      Z ed12           G d` dae                      Z ed12           G db dce                      Z ed12           G dd deeJ                      ZU ed12           G df dgeJ                      ZX ed12           G dh dieX                      Z ed12           G dj dkeX                      Z ed12           G dl dmeX                      Z ed12           G dn doeJ                      Z[ ed12           G dp dqeee                               Zeeef         Z ed12           G dr dse                      Za ed12           G dt dueee                               Zd ed12           G dv dweee                               Zg ed12           G dx dyeee                               Z ed12           G dz d{eee&                               Zj ed12           G d| d}eJ                      Z ed12           G d~ deJ                      Zm ed12           G d de                      Zp ed12           G d de                      Zseeef         ZdUed<    ed12           G d de                      Zv ed12           G d deJ                      Zy ed12           G d de                      Z ed12           G d d                      Z5ddZddZ ed12           G d de5                      Z ed12           G d de5                      Z ed12           G d de5                      Z ed12           G d de5                      ZeeJe5f         ZdUed<   ddZ ed12           G d de5                      ZddZdS )    )annotationsN)ABCabstractmethod)	dataclassfieldfieldsis_dataclass)datedatetimetime	timedelta)	TYPE_CHECKINGAnyGenericListSequenceTypeVarUnioncastoverload)	DataFrame)	TypeAlias)	type_utilutil)HeadingProtoTag)SelectSliderSerde)SliderScalarSliderScalarTSliderSerdeStep)DateInputSerdeDateWidgetReturnTimeInputSerde_parse_date_value)Alert)Arrow)Block)Button)	ChatInput)Checkbox)Code)ColorPicker)	DateInput)Element)	Exception)
ForwardMsg)Heading)Json)Markdown)Metric)MultiSelect)NumberInput)Radio)	Selectbox)Slider)Text)TextArea)	TextInput)	TimeInput)Toast)WidgetStateWidgetStates)user_key_from_widget_id)SafeSessionState)AppTestTc                      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__     Alib/python3.11/site-packages/streamlit/testing/v1/element_tree.pyrF   rF   V   s        HHDrL   rF   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dS )r.   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                    d S NrK   selfrS   rU   s      rM   __init__zElement.__init__}       rL   c              #     K   | V  d S rZ   rK   r\   s    rM   __iter__zElement.__iter__   s      




rL   returnc                    dS )z%The value or contents of the element.NrK   r`   s    rM   valuezElement.value   s	     	rL   namec                ,    t          | j        |          S )z3Fallback attempt to get an attribute from the proto)getattrrS   )r\   re   s     rM   __getattr__zElement.__getattr__   s    tz4(((rL   Ntimeoutrj   float | NonerC   c               8    | 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.
        ri   rU   runr\   rj   s     rM   rn   zElement.run        y}}W}---rL   c                *    t          j        |           S rZ   r   repr_r`   s    rM   __repr__zElement.__repr__       z$rL   rS   rX   rU   rT   rb   r   )re   rQ   rb   r   rj   rk   rb   rC   )rG   rH   rI   rJ   r   rR   __annotations__rS   rU   r   r]   ra   propertyrd   rh   rn   rt   rK   rL   rM   r.   r.   f   s"           5!!!D!!!!E"""E""""5)))D))))OOO   ^      ^ X) ) ) ) .2 	. 	. 	. 	. 	. 	.         rL   r.   FrO   c                  .    e Zd Zd
dZedd            Zd	S )UnknownElementrS   rX   rU   rT   c                    |                     d          }|J t          ||          | _        || _        || _        d | _        d S )NrR   )
WhichOneofrg   rS   rU   rR   rW   r\   rS   rU   tys       rM   r]   zUnknownElement.__init__   sH    f%%~~~UB''
		rL   rb   r   c                    	 | j         j        }|J || j        j                 S # t          $ r | j        j        cY S w xY wrZ   )rU   session_staterS   id
ValueErrorrd   r\   states     rM   rd   zUnknownElement.value   sX    	$I+E$$$'' 	$ 	$ 	$:####	$s   !$ ==Nrv   rw   )rG   rH   rI   r]   rz   rd   rK   rL   rM   r|   r|      sH            $ $ $ X$ $ $rL   r|   c                      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dS )WidgetzWidget base class for testing.FrO   rQ   r   booldisabledrV   rW   r   _valuerS   rU   rT   c                b    || _         || _        t          | j                  | _        d | _        d S rZ   )rS   rU   rA   r   rW   r   r[   s      rM   r]   zWidget.__init__   s,    
	*4733rL   vc                    || _         | S zSet the value of the widget.r   r\   r   s     rM   	set_valuezWidget.set_value       rL   rb   r?   c                    d S rZ   rK   r`   s    rM   _widget_statezWidget._widget_state   s	     	rL   N)rS   r   rU   rT   )r   r   rb   r?   )rG   rH   rI   rJ   r   r   ry   r]   r   rz   r   r   rK   rL   rM   r   r      s         ((eBNNNOOOKKK      
    ^ X  rL   r   ElT)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dS )!ElementListelsSequence[El]c                    || _         d S rZ   _list)r\   r   s     rM   r]   zElementList.__init__   s    #&


rL   rb   intc                *    t          | j                  S rZ   )lenr   r`   s    rM   __len__zElementList.__len__   s    4:rL   c                     t          |           S rZ   )r   r`   s    rM   r   zElementList.len   s    4yyrL   idxr   c                    d S rZ   rK   r\   r   s     rM   __getitem__zElementList.__getitem__   r^   rL   sliceElementList[El]c                    d S rZ   rK   r   s     rM   r   zElementList.__getitem__   r^   rL   int | sliceEl | ElementList[El]c                z    t          |t                    rt          | j        |                   S | j        |         S rZ   )
isinstancer   r   r   r   s     rM   r   zElementList.__getitem__   s4    c5!! 	#tz#///:c?"rL   c              #  $   K   | j         E d {V  d S rZ   r   r`   s    rM   ra   zElementList.__iter__   s&      :rL   c                *    t          j        |           S rZ   rr   r`   s    rM   rt   zElementList.__repr__   ru   rL   otherElementList[El] | objectr   c                b    t          |t                    r| j        |j        k    S | j        |k    S rZ   )r   r   r   )r\   r   s     rM   __eq__zElementList.__eq__   s0    e[)) 	':,,:&&rL   Sequence[Any]c                    d | D             S )Nc                    g | ]	}|j         
S rK   rd   ).0es     rM   
<listcomp>z&ElementList.values.<locals>.<listcomp>   s    &&&A&&&rL   rK   r`   s    rM   valueszElementList.values   s    &&&&&&rL   N)r   r   rb   r   )r   r   rb   r   )r   r   rb   r   )r   r   rb   r   )r   r   rb   r   )rb   r   )rG   rH   rI   r]   r   rz   r   r   r   ra   rt   r   r   rK   rL   rM   r   r      s       ' ' ' '       X    X    X# # # #       ' ' ' ' ' ' ' X' ' 'rL   r   Wc                      e Zd ZddZdS )
WidgetListrW   rQ   rb   r   c                R    | j         D ]}|j        |k    r|c S t          |          rZ   )r   rW   KeyError)r\   rW   r   s      rM   __call__zWidgetList.__call__   s:     	 	Au||  smmrL   N)rW   rQ   rb   r   )rG   rH   rI   r   rK   rL   rM   r   r      s(             rL   r   c                  \    e Zd ZU  ed          Zded<   ded<   dd	Zedd            ZdS )	AlertBaseFrO   
AlertProtorS   rQ   iconrU   rT   c                0    || _         d | _        || _        d S rZ   )rS   rW   rU   r[   s      rM   r]   zAlertBase.__init__
  s    
			rL   rb   c                    | j         j        S rZ   rS   bodyr`   s    rM   rd   zAlertBase.value      zrL   NrS   r   rU   rT   rb   rQ   	rG   rH   rI   r   rS   ry   r]   rz   rd   rK   rL   rM   r   r     sq         5)))E))))III   
    X  rL   r   c                        e Zd Zd fdZ xZS )ErrorrS   r   rU   rT   c                Z    t                                          ||           d| _        d S Nerrorsuperr]   rR   r\   rS   rU   	__class__s      rM   r]   zError.__init__  (    %%%			rL   r   rG   rH   rI   r]   __classcell__r   s   @rM   r   r     =                 rL   r   c                        e Zd Zd fdZ xZS )WarningrS   r   rU   rT   c                Z    t                                          ||           d| _        d S Nwarningr   r   s      rM   r]   zWarning.__init__  (    %%%			rL   r   r   r   s   @rM   r   r     =                 rL   r   c                        e Zd Zd fdZ xZS )InforS   r   rU   rT   c                Z    t                                          ||           d| _        d S Ninfor   r   s      rM   r]   zInfo.__init__$  s(    %%%			rL   r   r   r   s   @rM   r   r   "  s=                 rL   r   c                        e Zd Zd fdZ xZS )SuccessrS   r   rU   rT   c                Z    t                                          ||           d| _        d S Nsuccessr   r   s      rM   r]   zSuccess.__init__+  r   rL   r   r   r   s   @rM   r   r   )  r   rL   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   FrO   ButtonProtorS   rQ   labelhelpform_idrU   rT   c                h    t                                          ||           d| _        d| _        d S )NFbuttonr   r]   r   rR   r   s      rM   r]   zButton.__init__;  s/    %%%			rL   rb   r?   c                R    t                      }| j        |_        | j        |_        |S rZ   )r?   r   r   trigger_valuer\   wss     rM   r   zButton._widget_state@  s#    ]];	rL   c                ~    | j         r| j         S | j        j        }|sJ t          t          || j                           S )zThe value of the button. (bool)r   rU   r   r   r   r   r   s     rM   rd   zButton.valueG  s?     ; 	.;I+ELLLeDGn---rL   r   c                    || _         | S )zSet the value of the button.r   r   s     rM   r   zButton.set_valueQ  r   rL   c                ,    |                      d          S )z$Set the value of the button to True.Tr   r`   s    rM   clickzButton.clickV      ~~d###rL   )rS   r   rU   rT   r   rb   r   )r   r   rb   r(   )rb   r(   )rG   rH   rI   rJ   ry   r   rS   r]   rz   r   rd   r   r  r   r   s   @rM   r(   r(   0  s         JJLLLE***E****JJJIIILLL     
    X . . . X.   
$ $ $ $ $ $ $ $rL   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 )r)   z&A representation of ``st.chat_input``.rV   r   FrO   ChatInputProtorS   rQ   placeholderrU   rT   c                Z    t                                          ||           d| _        d S N
chat_inputr   r   s      rM   r]   zChatInput.__init__c  s(    %%% 			rL   r   rb   c                    || _         | S r   r   r   s     rM   r   zChatInput.set_valueg  r   rL   r?   c                j    t                      }| j        |_        | j        | j        |j        _        |S rZ   )r?   r   r   string_trigger_valuedatar   s     rM   r   zChatInput._widget_statel  s.    ]];"+/;B#(	rL   c                X    | j         r| j         S | j        j        }|sJ || j                 S )zThe value of the widget. (str)r   rU   r   r   r   s     rM   rd   zChatInput.valuet  s5     ; 	";I+ELLL>!rL   )rS   r  rU   rT   )r   rV   rb   r)   r   rb   rV   rG   rH   rI   rJ   ry   r   rS   r]   r   rz   r   rd   r   r   s   @rM   r)   r)   [  s         00!Eu---E----! ! ! ! ! !   
    X " " " X" " " " "rL   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ddZ xZS )r*   z$A representation of ``st.checkbox``.bool | Noner   FrO   CheckboxProtorS   rQ   r   r   r   rU   rT   c                Z    t                                          ||           d| _        d S Ncheckboxr   r   s      rM   r]   zCheckbox.__init__  s(    %%%			rL   rb   r?   c                R    t                      }| j        |_        | j        |_        |S rZ   r?   r   rd   
bool_valuer   s     rM   r   zCheckbox._widget_state  "    ]]
	rL   r   c                ~    | j         | j         S | j        j        }|sJ t          t          || j                           S )zThe value of the widget. (bool)r   r   s     rM   rd   zCheckbox.value  =     ;";I+ELLLeDGn---rL   r   c                    || _         | S r   r   r   s     rM   r   zCheckbox.set_value  r   rL   c                ,    |                      d          S )z$Set the value of the widget to True.Tr  r`   s    rM   checkzCheckbox.check  r  rL   c                ,    |                      d          S )z%Set the value of the widget to False.Fr  r`   s    rM   uncheckzCheckbox.uncheck  s    ~~e$$$rL   rS   r  rU   rT   r   r  )r   r   rb   r*   )rb   r*   )rG   rH   rI   rJ   ry   r   rS   r]   rz   r   rd   r   r!  r#  r   r   s   @rM   r*   r*     s        .. 5e,,,E,,,,JJJIIILLL         X . . . X.   
$ $ $ $% % % % % % % %rL   r*   c                  t    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	dS )r+   z A representation of ``st.code``.FrO   	CodeProtorS   rQ   languager   show_line_numbersNonerW   rU   rT   c                >    || _         d | _        || _        d| _        d S NcoderS   rW   rU   rR   r[   s      rM   r]   zCode.__init__  "    
				rL   rb   c                    | j         j        S zThe value of the element. (str))rS   	code_textr`   s    rM   rd   z
Code.value  s     z##rL   N)rS   r&  rU   rT   r   )
rG   rH   rI   rJ   r   rS   ry   r]   rz   rd   rK   rL   rM   r+   r+     s         **u%(((E((((MMMIII    $ $ $ X$ $ $rL   r+   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 )r,   z(A representation of ``st.color_picker``.rV   r   rQ   r   r   r   FrO   ColorPickerProtorS   rU   rT   c                Z    t                                          ||           d| _        d S Ncolor_pickerr   r   s      rM   r]   zColorPicker.__init__  s(    %%%"			rL   rb   c                ~    | j         | j         S | j        j        }|sJ t          t          || j                           S )z3The currently selected value as a hex string. (str))r   rU   r   r   rQ   r   r   s     rM   rd   zColorPicker.value  s=     ;";I+ELLLU47^,,,rL   r?   c                R    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   rd   string_valuer   s     rM   r   zColorPicker._widget_state  s$     ]]*	rL   r   c                    || _         | S )z,Set the value of the widget as a hex string.r   r   s     rM   r   zColorPicker.set_value  r   rL   c                `    |                     d          sd| }|                     |          S )zESet the value of the widget as a hex string. May omit the "#" prefix.#)
startswithr   r   s     rM   pickzColorPicker.pick  s3    ||C   	AA~~a   rL   )rS   r3  rU   rT   r   r   )r   rQ   rb   r,   )rG   rH   rI   rJ   ry   r   rS   r]   rz   rd   r   r   rA  r   r   s   @rM   r,   r,     s         22JJJIIILLL#e///E////# # # # # # - - - X-    X   
! ! ! ! ! ! ! !rL   r,   c                  R    e Zd ZU  ed          Zded<   ddZedd
            ZdS )	DataframeFrO   
ArrowProtorS   rU   rT   c                >    d | _         || _        || _        d| _        d S Narrow_data_framerW   rS   rU   rR   r[   s      rM   r]   zDataframe.__init__  s"    
	&			rL   rb   r   c                >    t          j        | j        j                  S rZ   r   bytes_to_data_framerS   r  r`   s    rM   rd   zDataframe.value      ,TZ_===rL   NrS   rD  rU   rT   rb   r   r   rK   rL   rM   rC  rC    sh         5)))E))))' ' ' ' > > > X> > >rL   rC  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 ) r-   z&A representation of ``st.date_input``.zDateValue | None | InitialValuer   FrO   DateInputProtorS   rQ   r   r
   minmaxr   is_ranger   r   rU   rT   c                D   t                                          ||           t                      | _        d| _        t          j        |j        d                                          | _        t          j        |j	        d                                          | _	        d S )N
date_inputz%Y/%m/%d)
r   r]   rF   r   rR   r   strptimerS  r
   rT  r   s      rM   r]   zDateInput.__init__  sw    %%%"nn 	$UY
;;@@BB$UY
;;@@BBrL   r   rP  rb   c                    || _         | S r   r   r   s     rM   r   zDateInput.set_value  r   rL   r?   c                    t                      }| j        |_        t          d           }|                    | j                  |j        j        d d <   |S rZ   )r?   r   r!   	serializerd   string_array_valuer  )r\   r   serdes      rM   r   zDateInput._widget_state  sH    ]]t$$(-
(C(C"111%	rL   r"   c                    t          | j        t                    s*t          | j                  \  }}|t	          |          ndS | j        j        }|sJ || j                 S )z0The value of the widget. (date or Tuple of date)N)r   r   rF   r$   tuplerU   r   r   )r\   parsed_r   s       rM   rd   zDateInput.value(  s_     $+|44 	")$+66IFA$*$65===D@I+ELLL>!rL   )rS   rR  rU   rT   )r   rP  rb   r-   r   )rb   r"   r  r   s   @rM   r-   r-     s         00++++!Eu---E----JJJIIIIIINNNIIILLLC C C C C C   
    X " " " X" " " " "rL   r-   c                  X    e Zd ZU ded<   ded<   ded<   ded<   ddZedd            ZdS )r/   rQ   messager   is_markdown	list[str]stack_trace
is_warningrS   ExceptionProtorU   rT   c                    d | _         || _        || _        d| _        |j        | _        t          |j                  | _        d S N	exception)rW   rU   rS   rR   message_is_markdownrd  listrf  r[   s      rM   r]   zException.__init__;  sB    	
	 4 122rL   rb   c                    | j         S rZ   )rc  r`   s    rM   rd   zException.valueD  s
    |rL   N)rS   rh  rU   rT   r   rG   rH   rI   ry   r]   rz   rd   rK   rL   rM   r/   r/   4  sw         LLL3 3 3 3    X  rL   r/   c                  z    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dS )HeadingBaseFrO   HeadingProtorS   rQ   tagrV   anchorr   hide_anchorr)  rW   rU   rT   type_c                >    || _         d | _        || _        || _        d S rZ   r-  )r\   rS   rU   rv  s       rM   r]   zHeadingBase.__init__R  s"    
				rL   rb   c                    | j         j        S rZ   r   r`   s    rM   rd   zHeadingBase.valueX  r   rL   N)rS   rr  rU   rT   rv  rQ   r   r   rK   rL   rM   rq  rq  I  s         %U+++E++++HHHIII       X  rL   rq  c                        e Zd Zd fdZ xZS )HeaderrS   rr  rU   rT   c                N    t                                          ||d           d S Nheaderr   r]   r   s      rM   r]   zHeader.__init___  s%    h/////rL   rS   rr  rU   rT   r   r   s   @rM   rz  rz  ]  s=        0 0 0 0 0 0 0 0 0 0rL   rz  c                        e Zd Zd fdZ xZS )	SubheaderrS   rr  rU   rT   c                N    t                                          ||d           d S N	subheaderr~  r   s      rM   r]   zSubheader.__init__e  s%    k22222rL   r  r   r   s   @rM   r  r  c  s=        3 3 3 3 3 3 3 3 3 3rL   r  c                        e Zd Zd fdZ xZS )TitlerS   rr  rU   rT   c                N    t                                          ||d           d S Ntitler~  r   s      rM   r]   zTitle.__init__k  s%    g.....rL   r  r   r   s   @rM   r  r  i  s=        / / / / / / / / / /rL   r  c                  \    e Zd ZU  ed          Zded<   ded<   dd	Zedd            ZdS )r2   FrO   	JsonProtorS   r   expandedrU   rT   c                >    || _         d | _        || _        d| _        d S Njsonr-  r[   s      rM   r]   zJson.__init__u  r.  rL   rb   rQ   c                    | j         j        S rZ   r   r`   s    rM   rd   z
Json.value{  r   rL   N)rS   r  rU   rT   r   r   rK   rL   rM   r2   r2   o  sq         u%(((E((((NNN       X  rL   r2   c                  p    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dS )r3   FrO   MarkdownProtorS   r   
is_caption
allow_htmlr)  rW   rU   rT   c                >    || _         d | _        || _        d| _        d S Nmarkdownr-  r[   s      rM   r]   zMarkdown.__init__  s"    
				rL   rb   rQ   c                    | j         j        S rZ   r   r`   s    rM   rd   zMarkdown.value  r   rL   NrS   r  rU   rT   r   r   rK   rL   rM   r3   r3     s          5e,,,E,,,,III       X  rL   r3   c                        e Zd Zd fdZ xZS )CaptionrS   r  rU   rT   c                Z    t                                          ||           d| _        d S Ncaptionr   r   s      rM   r]   zCaption.__init__  r   rL   r  r   r   s   @rM   r  r    r   rL   r  c                        e Zd Zd fdZ xZS )DividerrS   r  rU   rT   c                Z    t                                          ||           d| _        d S Ndividerr   r   s      rM   r]   zDivider.__init__  r   rL   r  r   r   s   @rM   r  r    r   rL   r  c                        e Zd Zd fdZ xZS )LatexrS   r  rU   rT   c                Z    t                                          ||           d| _        d S Nlatexr   r   s      rM   r]   zLatex.__init__  r   rL   r  r   r   s   @rM   r  r    r   rL   r  c                  b    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dS )r4   MetricProtorS   rQ   r   deltacolorr   rU   rT   c                >    || _         d | _        || _        d| _        d S Nmetricr-  r[   s      rM   r]   zMetric.__init__  s"    
				rL   rb   c                    | j         j        S rZ   r   r`   s    rM   rd   zMetric.value  r   rL   N)rS   r  rU   rT   r   ro  rK   rL   rM   r4   r4     sz         JJJJJJJJJIII       X  rL   r4   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d%dZd%dZ xZS )&Multiselectz'A representation of ``st.multiselect``.zlist[T] | Noner   FrO   MultiSelectProtorS   rQ   r   re  optionsr   max_selectionsr   r   rU   rT   c                    t                                          ||           d| _        t          |j                  | _        d S Nmultiselectr   r]   rR   rm  r  r   s      rM   r]   zMultiselect.__init__  s9    %%%!	EM**rL   rb   r?   c                f    t                      }| j        |_        | j        |j        j        dd<   |S )r:  N)r?   r   indicesint_array_valuer  r   s     rM   r   zMultiselect._widget_state  s1     ]]%)\"	rL   list[T]c                    | j         | j         S | j        j        }|sJ t          t          t
                   || j                           S )z6The currently selected values from the options. (list))r   rU   r   r   r   rD   r   r   s     rM   rd   zMultiselect.value  sA     ;";I+ELLLQtw000rL   Sequence[int]c                *      fd j         D             S )zEThe indices of the currently selected values from the options. (list)c                ^    g | ])}j                             t          |                    *S rK   )r  indexrQ   )r   r   r\   s     rM   r   z'Multiselect.indices.<locals>.<listcomp>  s/    ???q""3q66**???rL   r   r`   s   `rM   r  zMultiselect.indices  s"     @???DJ????rL   r   Multiselect[T]c                    || _         | S )z/Set the value of the multiselect widget. (list)r   r   s     rM   r   zMultiselect.set_value  s     rL   rD   c                    | 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.
        )rd   copyappendr   r\   r   currentnews       rM   selectzMultiselect.select  sL     *<<K,,..CJJqMMMNN3KrL   c                    | j         }||vr| S |                                }||v r|                    |           ||v |                     |           | 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.
        )rd   r  remover   r  s       rM   unselectzMultiselect.unselect  sb     *GK,,..Cs((

1 s((NN3KrL   )rS   r  rU   rT   r   )rb   r  )rb   r  )r   r  rb   r  )r   rD   rb   r  )rG   rH   rI   rJ   ry   r   rS   r]   rz   r   rd   r  r   r  r  r   r   s   @rM   r  r    sB        11#e///E////JJJIIILLL+ + + + + +
    X 1 1 1 X1 @ @ @ X@	 	 	 	          rL   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 )!r6   z(A representation of ``st.number_input``.zNumber | None | InitialValuer   FrO   NumberInputProtorS   rQ   r   Number | NonerS  rT  Numberstepr   r   rU   rT   c                    t                                          ||           t                      | _        d| _        |j        r|j        nd | _        |j        r|j        nd | _        d S Nnumber_input)	r   r]   rF   r   rR   has_minrS  has_maxrT  r   s      rM   r]   zNumberInput.__init__"  s[    %%%"nn"	 %75994 %75994rL   r   rb   c                    || _         | S )z0Set the value of the ``st.number_input`` widget.r   r   s     rM   r   zNumberInput.set_value)  r   rL   r?   c                `    t                      }| j        |_        | j        | j        |_        |S rZ   )r?   r   rd   double_valuer   s     rM   r   zNumberInput._widget_state.  *    ]]:!"jBO	rL   c                ~    t          | j        t                    s| j        S | j        j        }|sJ || j                 S )z8Get the current value of the ``st.number_input`` widget.r   r   rF   rU   r   r   r   s     rM   rd   zNumberInput.value6  sA     $+|44 	";I+ELLL >!rL   c                    | j         | S t          | j         | j        z   | j        pt	          d                    }|                     |          S )zDIncrement the ``st.number_input`` widget as if the user clicked "+".Ninf)rd   rS  r  rT  floatr   r   s     rM   	incrementzNumberInput.incrementB  sF    :K
TY&(@E%LLAA~~a   rL   c                    | j         | S t          | j         | j        z
  | j        pt	          d                    }|                     |          S )zDDecrement the ``st.number_input`` widget as if the user clicked "-".Nz-inf)rd   rT  r  rS  r  r   r   s     rM   	decrementzNumberInput.decrementJ  sF    :K
TY&(AE&MMBB~~a   rL   )rS   r  rU   rT   )r   r  rb   r6   r   )rb   r  )rb   r6   rG   rH   rI   rJ   ry   r   rS   r]   r   rz   r   rd   r  r  r   r   s   @rM   r6   r6     s'        22((((#e///E////JJJLLLIIILLL8 8 8 8 8 8   
    X 	" 	" 	" X	"! ! ! !! ! ! ! ! ! ! !rL   r6   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
d dZed!d            Z xZS )"r7   z!A representation of ``st.radio``.T | None | InitialValuer   FrO   
RadioProtorS   rQ   r   re  r  r   
horizontalr   r   rU   rT   c                    t                                          ||           t                      | _        d| _        t          |j                  | _        d S Nradior   r]   rF   r   rR   rm  r  r   s      rM   r]   zRadio.__init__`  sD    %%%"nn	EM**rL   rb   
int | Nonec                l    | j         dS | j                            t          | j                             S ))The index of the current selection. (int)N)rd   r  r  rQ   r`   s    rM   r  zRadio.indexf  s/     :4|!!#dj//222rL   T | Nonec                    t          | j        t                    s| j        S | j        j        }|sJ t          t          || j                           S z4The currently selected value from the options. (Any)r   r   rF   rU   r   r   rD   r   r   s     rM   rd   zRadio.valuem  I     $+|44 	+;I+ELLL5>***rL   r   Radio[T]c                    || _         | S zSet the selection by value.r   r   s     rM   r   zRadio.set_valuew  r   rL   r?   c                `    t                      }| j        |_        | j        | j        |_        |S r9  r?   r   r  	int_valuer   s     rM   r   zRadio._widget_state|  ,     ]]:!:BL	rL   )rS   r  rU   rT   rb   r  rb   r  )r   r  rb   r  r   )rG   rH   rI   rJ   ry   r   rS   r]   rz   r  rd   r   r   r   r   s   @rM   r7   r7   S  s        ++####5)))E))))JJJIIILLL+ + + + + + 3 3 3 X3 + + + X+   
 	 	 	 X	 	 	 	 	rL   r7   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
d!dZd!dZd"dZed#d            Z xZS )$r8   z%A representation of ``st.selectbox``.r  r   FrO   SelectboxProtorS   rQ   r   re  r  r   r   rU   rT   c                    t                                          ||           t                      | _        d| _        t          |j                  | _        d S N	selectboxr  r   s      rM   r]   zSelectbox.__init__  sD    %%%"nn	EM**rL   rb   r  c                    | j         dS t          | j                  dk    rdS | j                            t	          | j                             S )r  Nr   )rd   r   r  r  rQ   r`   s    rM   r  zSelectbox.index  sI     :4t|!!1|!!#dj//222rL   r  c                    t          | j        t                    s| j        S | j        j        }|sJ t          t          || j                           S r  r  r   s     rM   rd   zSelectbox.value  r  rL   r   Selectbox[T]c                    || _         | S r  r   r   s     rM   r   zSelectbox.set_value  s     rL   c                ,    |                      |          S r  r  r   s     rM   r  zSelectbox.select  s    ~~a   rL   r  c                    ||                      d          S |                      t          t          | j        |                             S )zSet the selection by index.N)r   r   rD   r  )r\   r  s     rM   select_indexzSelectbox.select_index  s<    =>>$'''~~d1dl5&9::;;;rL   r?   c                `    t                      }| j        |_        | j        | j        |_        |S r9  r  r   s     rM   r   zSelectbox._widget_state  r  rL   )rS   r   rU   rT   r  r  )r   r  rb   r  )r  r  rb   r  r   )rG   rH   rI   rJ   ry   r   rS   r]   rz   r  rd   r   r  r
  r   r   r   s   @rM   r8   r8     s2        //####!Eu---E----JJJIIILLL+ + + + + + 3 3 3 X3 + + + X+   ! ! ! !< < < < 	 	 	 X	 	 	 	 	rL   r8   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 )$SelectSliderz)A representation of ``st.select_slider``.zT | Sequence[T] | Noner   FrO   SliderProtorS   rQ   r   SliderProto.DataType.ValueType	data_typere  r  r   r   rU   rT   c                    t                                          ||           d| _        t          |j                  | _        d S Nselect_sliderr  r   s      rM   r]   zSelectSlider.__init__  s9    %%%#	EM**rL   r   T | Sequence[T]rb   SelectSlider[T]c                    || _         | S )z$Set the (single) selection by value.r   r   s     rM   r   zSelectSlider.set_value  r   rL   r?   c                   t          | j        g d          }	 |                    t          | j                            }nY# t
          t          f$ rE 	 |                    d | j        D                       }n#  t          d| j                   xY wY nw xY wt                      }| j        |_        ||j	        j
        d d <   |S )NFc                ,    g | ]}t          |          S rK   )rQ   )r   vals     rM   r   z.SelectSlider._widget_state.<locals>.<listcomp>  s    $D$D$D#SXX$D$D$DrL   zCould not find index for )r   r  r[  rQ   rd   r   	TypeErrorr?   r   double_array_valuer  )r\   r]  r   r   s       rM   r   zSelectSlider._widget_state  s    !$,E::	KDJ00AAI& 	K 	K 	KKOO$D$D$D$D$DEEK !ITZ!I!IJJJ 	K ]]()"111%	s)   'A   B$A76B7BBBc                X    | j         | j         S | j        j        }|sJ || j                 S z?The currently selected value or range. (Any or Sequence of Any)r  r   s     rM   rd   zSelectSlider.value  3     ;";I+ELLL>!rL   lowerrD   upperc                0    |                      ||g          S )z#Set the ranged selection by values.r  r\   r  r   s      rM   	set_rangezSelectSlider.set_range  s    ~~uen---rL   rS   r  rU   rT   )r   r  rb   r  r   )rb   r  )r  rD   r   rD   rb   r  rG   rH   rI   rJ   ry   r   rS   r]   r   rz   r   rd   r#  r   r   s   @rM   r  r    s
        33""""E***E****JJJ----IIILLL+ + + + + +
   
    X$ " " " X". . . . . . . .rL   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 )'r9   z"A representation of ``st.slider``.z.SliderScalarT | Sequence[SliderScalarT] | Noner   FrO   r  rS   rQ   r   r  r  r   rS  rT  r    r  r   r   rU   rT   c                Z    t                                          ||           d| _        d S Nsliderr   r   s      rM   r]   zSlider.__init__  s(    %%%			rL   r   'SliderScalarT | Sequence[SliderScalarT]rb   Slider[SliderScalarT]c                    || _         | S )z%Set the (single) value of the slider.r   r   s     rM   r   zSlider.set_value  s     rL   r?   c                    | j         j        }t          g |dd           }|                    | j                  }t                      }| j        |_        ||j        j        d d <   |S )NT)	rS   r  r   r[  rd   r?   r   r  r  )r\   r  r]  r   r   s        rM   r   zSlider._widget_state$  s]    J(	B	466OODJ'']]()"111%	rL   c                X    | j         | j         S | j        j        }|sJ || j                 S r  r  r   s     rM   rd   zSlider.value/  r  rL   r  r   r   c                0    |                      ||g          S )z#Set the ranged value of the slider.r  r"  s      rM   r#  zSlider.set_range:  s     ~~uen---rL   r$  )r   r*  rb   r+  r   )rb   r*  )r  r   r   r   rb   r+  r%  r   s   @rM   r9   r9   
  s        ,,::::E***E****JJJ----JJJIIILLL            X " " " X". . . . . . . .rL   r9   c                  R    e Zd ZU  ed          Zded<   ddZedd
            ZdS )TableFrO   rD  rS   rU   rT   c                >    d | _         || _        || _        d| _        d S Narrow_tablerH  r[   s      rM   r]   zTable.__init__E  s"    
	!			rL   rb   r   c                >    t          j        | j        j                  S rZ   rJ  r`   s    rM   rd   zTable.valueK  rL  rL   NrM  rN  r   rK   rL   rM   r1  r1  A  sh         5)))E))))" " " " > > > X> > >rL   r1  c                  `    e Zd ZU  ed          Zded<   dZded<   dd
Zedd            Z	dS )r:   FrO   	TextProtorS   Nr)  rW   rU   rT   c                0    || _         || _        d| _        d S Ntext)rS   rU   rR   r[   s      rM   r]   zText.__init__V  s    
				rL   rb   rQ   c                    | j         j        S r0  r   r`   s    rM   rd   z
Text.value[  s     zrL   )rS   r7  rU   rT   r   )
rG   rH   rI   r   rS   ry   rW   r]   rz   rd   rK   rL   rM   r:   r:   P  sy         u%(((E((((C   
    X  rL   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   FrO   TextAreaProtorS   rQ   r   r   	max_charsr  r   r   rU   rT   c                    t                                          ||           t                      | _        d| _        d S N	text_arear   r]   rF   r   rR   r   s      rM   r]   zTextArea.__init__n  s3    %%%"nn			rL   r   rV   rb   c                    || _         | S r   r   r   s     rM   r   zTextArea.set_values  r   rL   r?   c                `    t                      }| j        |_        | j        | j        |_        |S rZ   r;  r   s     rM   r   zTextArea._widget_statex  r  rL   c                ~    t          | j        t                    s| j        S | j        j        }|sJ || j                 S z&The current value of the widget. (str)r  r   s     rM   rd   zTextArea.value  ?     $+|44 	";I+ELLL>!rL   c                n    | 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   s     rM   inputzTextArea.input  7     > 	c!fft~55K~~a   rL   )rS   r>  rU   rT   )r   rV   rb   r;   r   r  )r   rQ   rb   r;   rG   rH   rI   rJ   ry   r   rS   r]   r   rz   r   rd   rL  r   r   s   @rM   r;   r;   a  s        //%%%% 5e,,,E,,,,JJJNNNIIILLL           
   
    X " " " X"! ! ! ! ! ! ! !rL   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   FrO   TextInputProtorS   rQ   r   r   r?  autocompleter  r   r   rU   rT   c                    t                                          ||           t                      | _        d| _        d S N
text_inputrC  r   s      rM   r]   zTextInput.__init__  3    %%%"nn 			rL   r   rV   rb   c                    || _         | S r   r   r   s     rM   r   zTextInput.set_value  r   rL   r?   c                `    t                      }| j        |_        | j        | j        |_        |S rZ   r;  r   s     rM   r   zTextInput._widget_state  r  rL   c                ~    t          | j        t                    s| j        S | j        j        }|sJ || j                 S rG  r  r   s     rM   rd   zTextInput.value  rH  rL   c                n    | j         rt          |          | j         k    r| S |                     |          S rJ  rK  r   s     rM   rL  zTextInput.input  rM  rL   )rS   rP  rU   rT   )r   rV   rb   r<   r   r  )r   rQ   rb   r<   rN  r   s   @rM   r<   r<     s        00%%%%!Eu---E----JJJNNNIIILLL! ! ! ! ! !
   
    X " " " X"! ! ! ! ! ! ! !rL   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 ) r=   z&A representation of ``st.time_input``.zTimeValue | None | InitialValuer   FrO   TimeInputProtorS   rQ   r   r   r  r   r   rU   rT   c                    t                                          ||           t                      | _        d| _        d S N
time_inputrC  r   s      rM   r]   zTimeInput.__init__  rU  rL   r   TimeValue | Nonerb   c                    || _         | S r   r   r   s     rM   r   zTimeInput.set_value  r   rL   r?   c                    t                      }| j        |_        t          d           }|                    | j                  }|||_        |S rZ   )r?   r   r#   r[  rd   r<  )r\   r   r]  serialized_values       rM   r   zTimeInput._widget_state  sG    ]]t$$ ??4:66'.BO	rL   time | Nonec                    t          | j        t                    s4| j        }t          |t                    r|                                n|}|S | j        j        }|sJ || j                 S )z'The current value of the widget. (time))r   r   rF   r   r   rU   r   r   )r\   r   r   s      rM   rd   zTimeInput.value  sc     $+|44 	"A&q(33:AHI+ELLL>!rL   c                    | j         | S t          j        t          j                    | j                   t          | j                  z   }|                     |                                          S )zSelect the next available time.Nseconds	rd   r   combiner
   todayr   r  r   r   r\   dts     rM   r  zTimeInput.increment  U    :KdjllDJ77)DI:V:V:VV~~bggii(((rL   c                    | j         | S t          j        t          j                    | j                   t          | j                  z
  }|                     |                                          S )z#Select the previous available time.Nrg  ri  rl  s     rM   r  zTimeInput.decrement  rn  rL   )rS   r\  rU   rT   )r   r`  rb   r=   r   )rb   rd  )rb   r=   r  r   s   @rM   r=   r=     s        00++++!Eu---E----JJJIIIIIILLL! ! ! ! ! !
   
    X 	" 	" 	" X	") ) ) )) ) ) ) ) ) ) )rL   r=   c                  \    e Zd ZU  ed          Zded<   ded<   dd	Zedd            ZdS )r>   FrO   
ToastProtorS   rQ   r   rU   rT   c                >    || _         d | _        || _        d| _        d S Ntoastr-  r[   s      rM   r]   zToast.__init__  s"    
				rL   rb   c                    | j         j        S rZ   r   r`   s    rM   rd   zToast.value  r   rL   N)rS   rq  rU   rT   r   r   rK   rL   rM   r>   r>   	  sq         5)))E))))III       X  rL   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 xZS )Togglez"A representation of ``st.toggle``.r  r   FrO   r  rS   rQ   r   r   r   rU   rT   c                h    t                                          ||           d | _        d| _        d S Ntoggler   r   s      rM   r]   zToggle.__init__$  s/    %%%			rL   rb   r?   c                R    t                      }| j        |_        | j        |_        |S rZ   r  r   s     rM   r   zToggle._widget_state)  r  rL   r   c                ~    | j         | j         S | j        j        }|sJ t          t          || j                           S )z'The current value of the widget. (bool)r   r   s     rM   rd   zToggle.value0  r  rL   r   c                    || _         | S r   r   r   s     rM   r   zToggle.set_value:  r   rL   r$  r   r  )r   r   rb   rw  )rG   rH   rI   rJ   ry   r   rS   r]   rz   r   rd   r   r   r   s   @rM   rw  rw    s         ,, 5e,,,E,,,,JJJIIILLL     
    X . . . X.       rL   rw  c                  6   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<   dkdZdldZ	d Z
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{d0            Zed|d2            Zed}d4            Zed~d6            Zedd8            Zedd:            Zedd<            Z edd>            Z!edd@            Z"eddB            Z#eddD            Z$eddF            Z%eddH            Z&eddJ            Z'eddL            Z(eddN            Z)eddP            Z*eddR            Z+eddT            Z,eddV            Z-eddX            Z.eddZ            Z/edd\            Z0edd^            Z1edd`            Z2ddcZ3dddeddiZ4dj Z5ddS )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``.
    rQ   rR   zdict[int, Node]childrenFrO   r   rS   rT   rU   BlockProto | Nonec                    i | _         || _        |r'|                    d          }||| _        nd| _        nd| _        || _        d S )NrR   	containerunknown)r  rS   r~   rR   rU   r   s       rM   r]   zBlock.__init__Q  sX    
 
 	"!!&))B~		 (		!DI			rL   rb   r   c                *    t          | j                  S rZ   )r   r  r`   s    rM   r   zBlock.__len__c  s    4=!!!rL   c              #  N   K   | V  | j         D ]}| j         |         D ]}|V  d S rZ   r  )r\   	child_idxcs      rM   ra   zBlock.__iter__f  sP      


 	 	I]9-  	 	rL   kNodec                    | j         |         S rZ   r  )r\   r  s     rM   r   zBlock.__getitem__l  s    }QrL   rV   c                    d S rZ   rK   r`   s    rM   rW   z	Block.keyo  s    trL   WidgetList[Button]c                F    t          |                     d                    S )Nr   r   getr`   s    rM   r   zBlock.buttonu      $((8,,---rL   ElementList[Caption]c                F    t          |                     d                    S r  r   r  r`   s    rM   r  zBlock.captiony      488I..///rL   WidgetList[ChatInput]c                F    t          |                     d                    S r	  r  r`   s    rM   r
  zBlock.chat_input}      $((<00111rL   Sequence[ChatMessage]c                ,    |                      d          S Nchat_messager  r`   s    rM   r  zBlock.chat_message  s    xx'''rL   WidgetList[Checkbox]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.checkbox  s    $((:..///rL   ElementList[Code]c                F    t          |                     d                    S r+  r  r`   s    rM   r,  z
Block.code      488F++,,,rL   WidgetList[ColorPicker]c                F    t          |                     d                    S r5  r  r`   s    rM   r6  zBlock.color_picker      $((>22333rL   Sequence[Column]c                ,    |                      d          S Ncolumnr  r`   s    rM   columnszBlock.columns  s    xx!!!rL   ElementList[Dataframe]c                F    t          |                     d                    S rF  r  r`   s    rM   	dataframezBlock.dataframe  s    488$677888rL   WidgetList[DateInput]c                F    t          |                     d                    S )NrW  r  r`   s    rM   rW  zBlock.date_input  r  rL   ElementList[Divider]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.divider  r  rL   ElementList[Error]c                F    t          |                     d                    S r   r  r`   s    rM   r   zBlock.error      488G,,---rL   ElementList[Exception]c                F    t          |                     d                    S rj  r  r`   s    rM   rk  zBlock.exception      488K00111rL   ElementList[Header]c                F    t          |                     d                    S r|  r  r`   s    rM   r}  zBlock.header      488H--...rL   ElementList[Info]c                F    t          |                     d                    S r   r  r`   s    rM   r   z
Block.info  r  rL   ElementList[Json]c                F    t          |                     d                    S r  r  r`   s    rM   r  z
Block.json  r  rL   ElementList[Latex]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.latex  r  rL   ElementList[Markdown]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.markdown  s    488J//000rL   ElementList[Metric]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.metric  r  rL   WidgetList[Multiselect[Any]]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.multiselect  s    $((=11222rL   WidgetList[NumberInput]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.number_input  r  rL   WidgetList[Radio[Any]]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.radio  s    $((7++,,,rL   WidgetList[SelectSlider[Any]]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.select_slider  s    $((?33444rL   WidgetList[Selectbox[Any]]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.selectbox      $((;//000rL   WidgetList[Slider[Any]]c                F    t          |                     d                    S r(  r  r`   s    rM   r)  zBlock.slider  r  rL   ElementList[Subheader]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.subheader  r  rL   ElementList[Success]c                F    t          |                     d                    S r   r  r`   s    rM   r   zBlock.success  r  rL   ElementList[Table]c                F    t          |                     d                    S r3  r  r`   s    rM   tablezBlock.table  s    488M22333rL   Sequence[Tab]c                ,    |                      d          S Ntabr  r`   s    rM   tabsz
Block.tabs  s    xxrL   ElementList[Text]c                F    t          |                     d                    S r9  r  r`   s    rM   r:  z
Block.text  r  rL   WidgetList[TextArea]c                F    t          |                     d                    S rA  r  r`   s    rM   rB  zBlock.text_area  r  rL   WidgetList[TextInput]c                F    t          |                     d                    S rS  r  r`   s    rM   rT  zBlock.text_input  r  rL   WidgetList[TimeInput]c                F    t          |                     d                    S r^  r  r`   s    rM   r_  zBlock.time_input  r  rL   ElementList[Title]c                F    t          |                     d                    S r  r  r`   s    rM   r  zBlock.title  r  rL   ElementList[Toast]c                F    t          |                     d                    S rs  r  r`   s    rM   rt  zBlock.toast  r  rL   WidgetList[Toggle]c                F    t          |                     d                    S ry  r  r`   s    rM   rz  zBlock.toggle  r  rL   ElementList[Warning]c                F    t          |                     d                    S r   r  r`   s    rM   r   zBlock.warning  r  rL   element_typeSequence[Node]c                     fd| D             S )Nc                *    g | ]}|j         k    |S rK   )rR   )r   r   r  s     rM   r   zBlock.get.<locals>.<listcomp>
  s%    :::a16\#9#9#9#9#9rL   rK   )r\   r  s    `rM   r  z	Block.get	  s    ::::4::::rL   Nri   rj   rk   rC   c               8    | j                             |          S )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.
        ri   rm   ro   s     rM   rn   z	Block.run  rp   rL   c                     t          |           S rZ   )rs   r`   s    rM   rt   zBlock.__repr__  s    T{{rL   )rS   r  rU   rT   r   )r  r   rb   r  r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )rb   r  )r  rQ   rb   r  rx   )6rG   rH   rI   rJ   ry   r   rS   rU   r]   r   ra   r   rz   rW   r   r  r
  r  r  r,  r6  r  r  rW  r  r   rk  r}  r   r  r  r  r  r  r  r  r  r  r)  r  r   r  r  r:  rB  rT  r_  r  rt  rz  r   r  rn   rt   rK   rL   rM   r'   r'   @  s          IIIE"""E""""5)))D))))   $" " " "             X
 . . . X. 0 0 0 X0 2 2 2 X2 ( ( ( X( 0 0 0 X0 - - - X- 4 4 4 X4 " " " X" 9 9 9 X9 2 2 2 X2 0 0 0 X0 . . . X. 2 2 2 X2 / / / X/ - - - X- - - - X- . . . X. 1 1 1 X1 / / / X/ 3 3 3 X3 4 4 4 X4 - - - X- 5 5 5 X5 1 1 1 X1 . . . X. 2 2 2 X2 0 0 0 X0 4 4 4 X4    X - - - X- 1 1 1 X1 2 2 2 X2 2 2 2 X2 . . . X. . . . X. . . . X. 0 0 0 X0; ; ; ; .2 	. 	. 	. 	. 	. 	.    rL   r'   rb   rQ   c                      j         j        }dddg t                      t                      gt	                     r fdt                     D             }n%fd j                                        D             }g }|D ]K\  }}t          |t                    r| dt          |           }n| d|}|
                    |           Ld|d         z   |d<   d	                    |          }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   | ]\}|j         rSt          |j                  |j        k    r5t          |j                  v>|j        t          |j                  fV  ]d S rZ   )rP   rg   re   default)r   fdefaultsr\   s     rM   	<genexpr>zrepr_.<locals>.<genexpr>$  s       
 
v
 af%%22af%%X55	 VWT16**+ 6555
 
rL   c              3  .   K   | ]\  }}|v	||fV  d S rZ   rK   )r   r  r   r  s      rM   r  zrepr_.<locals>.<genexpr>,  s5      WW&1aQhEVEV1vEVEVEVEVWWrL   =
r   ,
    (z
))r   rG   setdictr	   r   __dict__itemsr   format_dictr  jointextwrapindent)	r\   	classnamefields_valsreprsr   rd   linefield_reprsr  s	   `       @rM   rs   rs     sS    'IUBtvv>HD 	X
 
 
 
 
D\\
 
 
 XWWWDM,?,?,A,AWWWE#  ueT"" 	(22k%0022DD''e''DTeAhE!H**U##K/+w77K**+****rL   ddict[Any, Any]c                    g }|                                  D ]!\  }}| d|}|                    |           "d                    |          }t          j        |d          }d| d}|S )Nz: r  r   z{
z
})r  r  r  r  r	  )r  linesr  r   r  rs         rM   r  r  =  sz    E		  1}}q}}T

5A7##AqAHrL   c                      e Zd ZdZ	 d
dd	ZdS )SpecialBlockz4Base class for the sidebar and main body containers.NrS   r  rU   rT   rR   rV   c                    i | _         || _        |r|| _        n?|r6|                    d          r!|                    d          }|J || _        nd| _        || _        d S )NrR   r  )r  rS   rR   r~   rU   )r\   rS   rU   rR   r   s        rM   r]   zSpecialBlock.__init__L  sw     
 	"DII 	"u''// 	"!!&))B>>>DII!DI			rL   rZ   )rS   r  rU   rT   rR   rV   )rG   rH   rI   rJ   r]   rK   rL   rM   r  r  H  s8        >>  	      rL   r  c                  t    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dS )ChatMessagez(A representation of ``st.chat_message``.FrO   rQ   rR   BlockProto.ChatMessagerS   re   avatarrU   rT   c                n    i | _         || _        || _        d| _        |j        | _        |j        | _        d S r  )r  rS   rU   rR   re   r  r[   s      rM   r]   zChatMessage.__init__h  s6    
 
	"	J	lrL   N)rS   r  rU   rT   	rG   rH   rI   rJ   r   rR   ry   rS   r]   rK   rL   rM   r  r  _  s~         225!!!D!!!!$)Eu$5$5$5E5555IIIKKK
# 
# 
# 
# 
# 
#rL   r  c                  t    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dS )Columnz3A representation of a column within ``st.columns``.FrO   rQ   rR   BlockProto.ColumnrS   r  weightgaprU   rT   c                n    i | _         || _        || _        d| _        |j        | _        |j        | _        d S r  )r  rS   rU   rR   r   r!  r[   s      rM   r]   zColumn.__init__~  s6    
 
		l9rL   N)rS   r  rU   rT   r  rK   rL   rM   r  r  u  s~         ==5!!!D!!!!$u%000E0000MMMHHH
 
 
 
 
 
rL   r  c                  j    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dS )Tabz+A representation of tab within ``st.tabs``.FrO   rQ   rR   BlockProto.TabrS   r   rU   rT   c                V    i | _         || _        || _        d| _        |j        | _        d S r  )r  rS   rU   rR   r   r[   s      rM   r]   zTab.__init__  s-    
 
		[


rL   N)rS   r%  rU   rT   r  rK   rL   rM   r$  r$    su         555!!!D!!!!!Eu---E----JJJ	! 	! 	! 	! 	! 	!rL   r$  r  nodeWidgetState | Nonec                >    t          | t                    r| j        S d S rZ   )r   r   r   )r'  s    rM   get_widget_stater*    s"    $ !!trL   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dS )rT   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)rP   r  zAppTest | None_runnerc                0    i | _         | | _        d| _        d S )NrU   )r  rU   rR   r`   s    rM   r]   zElementTree.__init__  s    				rL   rb   r'   c                D    | d         }t          |t                    sJ |S )Nr   r   r'   )r\   ms     rM   mainzElementTree.main  &    G!U#####rL   c                D    | d         }t          |t                    sJ |S )N   r/  )r\   ss     rM   sidebarzElementTree.sidebar  r2  rL   rB   c                ,    | j         J | j         j        S rZ   )r,  r   r`   s    rM   r   zElementTree.session_state  s    |'''|))rL   r@   c                    t                      }| D ]-}t          |          }||j                            |           .|S rZ   )r@   r*  widgetsr  )r\   r   r'  ws       rM   get_widget_stateszElementTree.get_widget_states  sH    ^^ 	% 	%D &&A}
!!!$$$	rL   ri   rj   rk   rC   c               t    | j         J |                                 }| j                             ||          S )r  Nri   )r,  r;  _run)r\   rj   widget_statess      rM   rn   zElementTree.run  s>     |'''..00|   @@@rL   c                *    t          | j                  S rZ   )r  r  r`   s    rM   rt   zElementTree.__repr__  s    4=)))rL   )rb   r'   )rb   rB   )rb   r@   rx   )rG   rH   rI   rJ   r   r,  ry   r]   rz   r1  r6  r   r;  rn   rt   rK   rL   rM   rT   rT     s          . $e===G====  
    X
    X
 * * * X*    .2 A A A A A A* * * * *rL   rT   messageslist[ForwardMsg]c                    t                      }t          d|d          t          d|d          t          d|d          d|_        | D ]@}|                    d          s|j        j        }|j        }|                    d          d	k    r|j        }|                    d          }|d
k    r|j	        j
        }|t          j        j        k    rt          |j	        |          }n3|t          j        j        k    rt!          |j	        |          }n|t          j        j        k    rt%          |j	        |          }n|t          j        j        k    rt)          |j	        |          }nt+          d|j	        j
                   |dk    rt-          |j        |          }nr|dk    rt1          |j        |          }nT|dk    rt5          |j        |          }n6|dk    rt9          |j        |          }n|dk    rQ|j        j        }	|	t@          j!        j"        k    rtG          |j        |          }ntI          |j        |          }n|dk    rtK          |j&        |          }n|dk    rtO          |j(        |          }n|dk    rtS          |j*        |          }ng|dk    rtW          |j,        |          }nI|dk    r|j-        j.        t^          j0        j1        k    rte          |j-        |          }n|j-        j.        t^          j3        j1        k    rti          |j-        |          }n|j-        j.        t^          j5        j1        k    rtm          |j-        |          }nt+          d|j-        j.                   |dk    rto          |j8        |          }nd|dk    r|j9        j:        tv          j<        j=        k    rt}          |j9        |          }n'|j9        j:        tv          j<        j?        k    rt          |j9        |          }n|j9        j:        tv          j<        jA        k    rt          |j9        |          }n|j9        j:        tv          j<        jC        k    rt          |j9        |          }nt+          d|j9        j:                   |dk    rt          |jF        |          }nH|dk    rt          |jH        |          }n*|dk    rt          |jJ        |          }n|dk    rt          |jL        |          }n|dk    rt          |jN        |          }n|d k    r|jO        j        t          j<        jQ        k    rt          |jO        |          }n|jO        j        t          j<        jS        k    rt          |jO        |          }n\t+          d!|jO                   |d"k    rt          |jV        |          }n'|d#k    rt          |jX        |          }n	|d$k    rt          |jZ        |          }n|d%k    rt          |j\        |          }n|d&k    rt          |j^        |          }nt          ||          }n|                    d          d'k    r|j`        }
|
                    d          }|d(k    rt          |
jb        |          }nN|d)k    rt          |
jd        |          }n1|d*k    rt          |
jf        |          }nt          |
|+          }n|}|dd,         D ]O}|j        }|h                    |          }|t          d|+          }|||<   t          |t                    sJ |}P||j        |d,         <   B|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.
    r1  N)rR   rU   rS   r6  event)r   r4     r  rR   new_elementalert)rU   zUnknown alert type with format rG  r4  r   r
  r  r,  r6  rW  rk  headingzUnknown heading type with tag r  r  zUnknown markdown type r  r  r  r  r  r)  zSlider with unknown type r:  rB  rT  r_  rt  	add_blockr  r  r  )rS   rU   )jrT   r  r  HasFieldmetadata
delta_pathr  r~   rE  rF  formatr   FormatERRORr   INFOr   SUCCESSr   WARNINGr   r   rC  rG  r1  r4  r(   r   r)   r
  r  rR   r  	StyleTypeTOGGLErw  r*   r+   r,  r,   r6  r-   rW  r/   rk  rG  rs  r   	TITLE_TAGrd   r  
HEADER_TAGrz  SUBHEADER_TAGr  r2   r  r  r  r  TypeNATIVEr3   CAPTIONr  LATEXr  DIVIDERr  r4   r  r  r  r6   r  r7   r  r8   r  r)  r  SLIDERr9   SELECT_SLIDERr  r:   r:  r;   rB  r<   rT  r=   r_  r>   rt  r|   rH  r  r  r  r  r$  r  r'   r  r   )r@  rU   msgrL  r  eltr   rM  new_nodestyleblockbtycurrent_noder   r  childs                   rM   parse_tree_from_messagesrg    s    ==DV$d;;;YT>>>W4t<<< DM  {9 {9||G$$ 	\,
	F##}44#C''BW}})Z.444$SYT:::HHz0555#CID999HHz0888&syt<<<HHz0888&syt<<<HH$L#):JLL   )))$S%9EEE}$$ t<<<x!#*4888|##$S^$???z!!)M3:::%cl>>>HH'4@@@HHvt444~%%&s'7dCCC|##$S^$???{""$S]>>>y;?o&?&EEE$S[t<<<HH[_(B(HHH%ck===HH[_(E(KKK(4@@@HH$%Wcko%W%WXXXvt444z!!<,0B0III'4@@@HH\.-2D2LLL&s|$???HH\.-2D2JJJ$S\===HH\.-2D2LLL&s|$???HH$L1JLL   x!#*4888}$$&sTBBB~%%&s'7dCCCw 666{""$S]>>>x:?k&6&===%cjt<<<HHZ_(8(FFF+CJTBBBHH$%M%M%MNNNvt444{""#CM===|##$S^$???|##$S^$???w 666)#D999f%%44OE""6**Cn$$&u'9EEE!%,T:::uyt444 u4888 "crc? 	! 	!C#,HLL%%E}Dt444 %eU+++++ LL08jn--KrL   r   )r  r  )r'  r  rb   r(  )r@  rA  rb   rT   )
__future__r   r  abcr   r   dataclassesr   r   r   r	   r   r
   r   r   typingr   r   r   r   r   r   r   r   r   pandasr   typing_extensionsr   	streamlitr   r   streamlit.elements.headingr   (streamlit.elements.widgets.select_sliderr   !streamlit.elements.widgets.sliderr   r   r   r    'streamlit.elements.widgets.time_widgetsr!   r"   r#   r$   streamlit.proto.Alert_pb2r%   r   streamlit.proto.Arrow_pb2r&   rD  streamlit.proto.Block_pb2r'   
BlockProtostreamlit.proto.Button_pb2r(   r   streamlit.proto.ChatInput_pb2r)   r  streamlit.proto.Checkbox_pb2r*   r  streamlit.proto.Code_pb2r+   r&  streamlit.proto.ColorPicker_pb2r,   r3  streamlit.proto.DateInput_pb2r-   rR  streamlit.proto.Element_pb2r.   rX   streamlit.proto.Exception_pb2r/   rh  streamlit.proto.ForwardMsg_pb2r0   streamlit.proto.Heading_pb2r1   rr  streamlit.proto.Json_pb2r2   r  streamlit.proto.Markdown_pb2r3   r  streamlit.proto.Metric_pb2r4   r  streamlit.proto.MultiSelect_pb2r5   r  streamlit.proto.NumberInput_pb2r6   r  streamlit.proto.Radio_pb2r7   r  streamlit.proto.Selectbox_pb2r8   r   streamlit.proto.Slider_pb2r9   r  streamlit.proto.Text_pb2r:   r7  streamlit.proto.TextArea_pb2r;   r>  streamlit.proto.TextInput_pb2r<   rP  streamlit.proto.TimeInput_pb2r=   r\  streamlit.proto.Toast_pb2r>   rq   streamlit.proto.WidgetStates_pb2r?   r@   streamlit.runtime.state.commonrA   *streamlit.runtime.state.safe_session_staterB   streamlit.testing.v1.app_testrC   rD   rF   r|   r   r   r   r   r   r   r   r   r   r   rC  rO  ry   rP  rq  rz  r  r  r  r  r  r  r   r  r  r  r1  rZ  rw  rs   r  r  r  r  r$  r  r*  rT   rg  rK   rL   rM   <module>r     s   # " " " " " "  # # # # # # # # > > > > > > > > > > > > 4 4 4 4 4 4 4 4 4 4 4 4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       ' ' ' ' ' ' % % % % % % % % 6 6 6 6 6 6 F F F F F F                       : 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 < < < < < < E E E E E E B B B B B B 6 6 6 6 6 6 K K K K K K E E E E E E ? ? ? ? ? ? E E E E E E 5 5 5 5 5 5 ? ? ? ? ? ? 6 6 6 6 6 6 B B B B B B < < < < < < K K K K K K K K K K K K 9 9 9 9 9 9 E E E E E E < < < < < < 6 6 6 6 6 6 B B B B B B E E E E E E E E E E E E 9 9 9 9 9 9 F F F F F F F F B B B B B B G G G G G G 6555555GCLL 	 	 	 	 	 	 	 	 3  3  3  3  3 c 3  3  3 l $ $ $ $ $W $ $ $(     Wc   2 WTD111'' '' '' '' '''"+ '' '' ''T GCv...    [^                I        i        9        i    '$ '$ '$ '$ '$V '$ '$ '$T  "  "  "  "  "  "  "  "F *% *% *% *% *%v *% *% *%Z $ $ $ $ $7 $ $ $* ,! ,! ,! ,! ,!& ,! ,! ,!^ > > > > > > > > #4>2 2 2 2 2_h.GMN	 N N N N *" *" *" *" *" *" *" *"Z        (     '3   & 0 0 0 0 0[ 0 0 0
 3 3 3 3 3 3 3 3
 / / / / /K / / /
     7         w   $     h        h        H        W   $ S S S S S&'!* S S Sl 
sEz	 :! :! :! :! :!& :! :! :!z 2 2 2 2 2FGAJ 2 2 2j C C C C C
 C C CL 6. 6. 6. 6. 6.671: 6. 6. 6.r 3. 3. 3. 3. 3.VW]+ 3. 3. 3.l > > > > >G > > >     7     1! 1! 1! 1! 1!v 1! 1! 1!h 1! 1! 1! 1! 1! 1! 1! 1!h T8^,	 , , , , 7) 7) 7) 7) 7) 7) 7) 7)t     G    # # # # #V # # #L W W W W W W W Wt+ + + +D        5   , # # # # #% # # #*     U   * ! ! ! ! !% ! ! !& ' ' ' ' '    H* H* H* H* H*% H* H* H*VK K K K K KrL   