Ë
    úmxiÏ•  ã                  ó*  — d dl mZ d dlZd dlZd dlZd dl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 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZV d dlWmXZX d dlYmZZZ e	rd dl[m\Z\m]Z]m^Z^ d dl_m`Z`  ejÂ                  «       Zb G d„ d«      Zcy)é    )ÚannotationsN)ÚPath)ÚTYPE_CHECKINGÚAny)Ú	MagicMock)Úparse)ÚRuntime)ÚMemoryCacheStorageManager)ÚMediaFileManager)ÚMemoryMediaFileStorage)ÚPagesManager)ÚScriptCache)ÚSecrets)ÚTESTING_KEY)ÚSafeSessionState)ÚSessionState)Úpage_icon_and_name)/ÚBlockÚButtonÚButtonGroupÚCaptionÚ	ChatInputÚChatMessageÚCheckboxÚCodeÚColorPickerÚColumnÚ	DataframeÚ	DateInputÚDateTimeInputÚDividerÚElementListÚElementTreeÚErrorÚ	ExceptionÚExpanderÚHeaderÚInfoÚJsonÚLatexÚMarkdownÚMetricÚMultiselectÚNodeÚNumberInputÚRadioÚ	SelectboxÚSelectSliderÚSliderÚStatusÚ	SubheaderÚSuccessÚTabÚTableÚTextÚTextAreaÚ	TextInputÚ	TimeInputÚTitleÚToastÚToggleÚWarningÚ
WidgetListÚrepr_)ÚLocalScriptRunner)Úpatch_config_options)Úcalc_md5)ÚCallableÚIteratorÚSequence)ÚWidgetStatesc                  ó$  — e Zd ZdZdddœ	 	 	 	 	 	 	 	 	 d@d„ZeddœdAd„«       Zeddddœ	 	 	 	 	 	 	 	 	 dBd	„«       Zeddddœ	 	 	 	 	 	 	 	 	 dCd
„«       Zeddœ	 	 	 	 	 dDd„«       Z		 	 dE	 	 	 	 	 dFd„Z
ddœdGd„ZdHd„ZedId„«       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dad)„«       Z'edbd*„«       Z(edcd+„«       Z)eddd,„«       Z*eded-„«       Z+edfd.„«       Z,edgd/„«       Z-edhd0„«       Z.edid1„«       Z/edjd2„«       Z0edkd3„«       Z1edld4„«       Z2edmd5„«       Z3ednd6„«       Z4edod7„«       Z5edpd8„«       Z6edqd9„«       Z7edrd:„«       Z8dsd;„Z9dtd<„Z:dud=„Z;dvd>„Z<dwd?„Z=y)xÚAppTesta‘
  
    A simulated Streamlit app to check the correctness of displayed    elements and outputs.

    An instance of ``AppTest`` simulates a running Streamlit app. This class
    provides methods to set up, manipulate, and inspect the app contents via
    API instead of a browser UI. It can be used to write automated tests of an
    app in various scenarios. These can then be run using a tool like pytest.

    ``AppTest`` can be initialized by one of three class methods:

    * |st.testing.v1.AppTest.from_file|_ (recommended)
    * |st.testing.v1.AppTest.from_string|_
    * |st.testing.v1.AppTest.from_function|_

    Once initialized, Session State and widget values can be updated and the
    script can be run. Unlike an actual live-running Streamlit app, you need to
    call ``AppTest.run()`` explicitly to re-run the app after changing a widget
    value. Switching pages also requires an explicit, follow-up call to
    ``AppTest.run()``.

    ``AppTest`` enables developers to build tests on their app as-is, in the
    familiar python test format, without major refactoring or abstracting out
    logic to be tested separately from the UI. Tests can run quickly with very
    low overhead. A typical pattern is to build a suite of tests for an app
    that ensure consistent functionality as the app evolves, and run the tests
    locally and/or in a CI environment like Github Actions.

    .. note::
        ``AppTest`` only supports testing a single page of an app per
        instance. For multipage apps, each page will need to be tested
        separately. ``AppTest`` is not yet compatible with multipage apps
        using ``st.navigation`` and ``st.Page``.

    .. |st.testing.v1.AppTest.from_file| replace:: ``st.testing.v1.AppTest.from_file``
    .. _st.testing.v1.AppTest.from_file: #apptestfrom_file
    .. |st.testing.v1.AppTest.from_string| replace:: ``st.testing.v1.AppTest.from_string``
    .. _st.testing.v1.AppTest.from_string: #apptestfrom_string
    .. |st.testing.v1.AppTest.from_function| replace:: ``st.testing.v1.AppTest.from_function``
    .. _st.testing.v1.AppTest.from_function: #apptestfrom_function

    Attributes
    ----------
    secrets: dict[str, Any]
        Dictionary of secrets to be used the simulated app. Use dict-like
        syntax to set secret values for the simulated app.

    session_state: SafeSessionState
        Session State for the simulated app. SafeSessionState object supports
        read and write operations as usual for Streamlit apps.

    query_params: dict[str, Any]
        Dictionary of query parameters to be used by the simluated app. Use
        dict-like syntax to set ``query_params`` values for the simulated app.
    N©ÚargsÚkwargsc               óò   — t        |«      | _        || _        t        «       }i |t        <   t        |d„ «      | _        i | _        i | _        || _	        || _
        d| _        t        «       }| |_        || _        y )Nc                  ó   — y ©N© rR   ó    úT/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/testing/v1/app_test.pyú<lambda>z"AppTest.__init__.<locals>.<lambda>¨   s   � rS   Ú )ÚstrÚ_script_pathÚdefault_timeoutr   r   r   Úsession_stateÚquery_paramsÚsecretsrM   rN   Ú
_page_hashr#   Ú_runnerÚ_tree)ÚselfÚscript_pathrY   rM   rN   rZ   Útrees          rT   Ú__init__zAppTest.__init__œ   sr   € ô   Ó,ˆÔØ.ˆÔÜ$›ˆØ%'ˆ”kÑ"Ü-¨m¹\ÓJˆÔØ,.ˆÔØ')ˆŒØˆŒ	ØˆŒØˆŒä‹}ˆØˆŒØˆ�
rS   é   ©rY   c               ó(   — | j                  ||¬«      S )a3  
        Create an instance of ``AppTest`` to simulate an app page defined        within a string.

        This is useful for testing short scripts that fit comfortably as an
        inline string in the test itself, without having to create a separate
        file for it. The script must be executable on its own and so must
        contain all necessary imports.

        Parameters
        ----------
        script: str
            The string contents of the script to be run.

        default_timeout: float
            Default time in seconds before a script run is timed out. Can be
            overridden for individual ``.run()`` calls.

        Returns
        -------
        AppTest
            A simulated Streamlit app for testing. The simulated app can be
            executed via ``.run()``.

        re   )Ú_from_string)ÚclsÚscriptrY   s      rT   Úfrom_stringzAppTest.from_string³   s   € ð6 ×Ñ ¸ÐÓHÐHrS   ©rY   rM   rN   c               óÜ   — t        t        |d«      «      }t        t        j                  |«      }t        j                  |«      }|j                  |«       t        t        |«      |||¬«      S )Nzutf-8rk   )
rE   Úbytesr   ÚTMP_DIRÚnameÚtextwrapÚdedentÚ
write_textrK   rW   )rh   ri   rY   rM   rN   Úscript_nameÚpathÚaligned_scripts           rT   rg   zAppTest._from_stringÐ   sY   € ô œu V¨WÓ5Ó6ˆä”G—L‘L +Ó.ˆÜ!Ÿ™¨Ó0ˆØ�‰˜Ô'ÜÜ�‹I ¸TÈ&ô
ð 	
rS   c               óæ   — t        j                  |«      \  }}t        j                  dj	                  |«      «      }|dt        |d«      r|j                  nd› d�z   }| j                  ||||¬«      S )a  
        Create an instance of ``AppTest`` to simulate an app page defined        within a function.

        This is similar to ``AppTest.from_string()``, but more convenient to
        write with IDE assistance. The script must be executable on its own and
        so must contain all necessary imports.

        Parameters
        ----------
        script: Callable
            A function whose body will be used as a script. Must be runnable
            in isolation, so it must include any necessary imports.

        default_timeout: float
            Default time in seconds before a script run is timed out. Can be
            overridden for individual ``.run()`` calls.

        args: tuple
            An optional tuple of args to pass to the script function.

        kwargs: dict
            An optional dict of kwargs to pass to the script function.

        Returns
        -------
        AppTest
            A simulated Streamlit app for testing. The simulated app can be
            executed via ``.run()``.

        rV   ú
Ú__name__ri   z(*__args, **__kwargs)rk   )ÚinspectÚgetsourcelinesrp   rq   ÚjoinÚhasattrrx   rg   )	rh   ri   rY   rM   rN   Úsource_linesÚ_ÚsourceÚmodules	            rT   Úfrom_functionzAppTest.from_functionâ   s~   € ôP "×0Ñ0°Ó8‰ˆ�aÜ—‘ §¡¨Ó!6Ó7ˆàØ¤g¨f°jÔ&A�6—?’?ÀxÐPÐPeÐfñgð 	ð ×ÑØ O¸$Àvð  ó 
ð 	
rS   c               ó
  — t        |«      }|j                  «       r|}nYt        j                  j	                  t        j
                  d«      «      }t        |d   j                  «      }|j                  |z  }t        ||¬«      S )a.  
        Create an instance of ``AppTest`` to simulate an app page defined        within a file.

        This option is most convenient for CI workflows and testing of
        published apps. The script must be executable on its own and so must
        contain all necessary imports.

        Parameters
        ----------
        script_path: str | Path
            Path to a script file. The path should be absolute or relative to
            the file calling ``.from_file``.

        default_timeout: float
            Default time in seconds before a script run is timed out. Can be
            overridden for individual ``.run()`` calls.

        Returns
        -------
        AppTest
            A simulated Streamlit app for testing. The simulated app can be
            executed via ``.run()``.
        Né   re   )	r   Úis_fileÚ	tracebackÚStackSummaryÚextractÚ
walk_stackÚfilenameÚparentrK   )rh   ra   rY   rt   ÚstackÚfilepaths         rT   Ú	from_filezAppTest.from_file  sq   € ô8 ˜;Ó'ˆØ×ÑÔ Ø‰Dô
 ×*Ñ*×2Ñ2´9×3GÑ3GÈÓ3MÓNˆEÜ˜E !™H×-Ñ-Ó.ˆHØ—?‘? [Ñ0ˆDÜ�t¨_Ô=Ð=rS   c                ó´  — ddl }|€| j                  }t        t        ¬«      }t	        t        d«      «      |_        t        «       |_        |t        _	        t        «       }t        | j                  |d¬«      }|j                  }| j                  r"t        «       }| j                  |_        ||_        t!        | j                  | j"                  || j$                  | j&                  ¬«      }	t)        dd	i«      5  |	j+                  || j,                  || j.                  «      | _        | | j0                  _        ddd«       |	j4                  d
   d   j6                  }
t9        j:                  |
«      | _        | j                  rA|j                  j                  �$t=        |j                  j                  «      | _        ||_        dt        _	        | S # 1 sw Y   Œ™xY w)z®Run the script, and parse the output messages for querying
        and interaction.

        Timeout is in seconds, or None to use the default timeout of the runner.
        r   N)Úspecz/mock/mediaF)Úsetup_watcherrL   zglobal.appTestTéÿÿÿÿÚclient_state)Ú	streamlitrY   r   r	   r   r   Úmedia_file_mgrr
   Úcache_storage_managerÚ	_instancer   r   rX   r\   r   Ú_secretsrC   rZ   rM   rN   rD   Úrunr[   r]   r_   r^   Ú
event_dataÚquery_stringr   Úparse_qsÚdict)r`   Úwidget_stateÚtimeoutÚstÚmock_runtimeÚscript_cacheÚpages_managerÚsaved_secretsÚnew_secretsÚscript_runnerrš   s              rT   Ú_runzAppTest._run<  sŒ  € ó 	àˆ?Ø×*Ñ*ˆGô !¤gÔ.ˆÜ&6Ü" =Ó1ó'
ˆÔ#ô .GÓ-HˆÔ*Ø(ŒÔÜ"“}ˆÜ$Ø×Ñ˜|¸5ô
ˆð "$§¡ˆà�<Š<Ü!›)ˆKØ#'§<¡<ˆKÔ Ø$ˆBŒJä)Ø×ÑØ×ÑØØ—‘Ø—;‘;ô
ˆô "Ð#3°TÐ":Ó;ñ 	&Ø&×*Ñ*Ø˜d×/Ñ/°¸$¿/¹/óˆDŒJð "&ˆD�J‰JÔ÷		&ð %×/Ñ/°Ñ3°NÑC×PÑPˆÜ!ŸN™N¨<Ó8ˆÔà�<Š<Ø�z‰z×"Ñ"Ð.Ü# B§J¡J×$7Ñ$7Ó8�”Ø&ˆBŒJØ ŒÔàˆ÷	&ð 	&ús   Ã7?GÇG©rž   c               ó:   — | j                   j                  |¬«      S )a±  Run the script from the current state.

        This is equivalent to manually rerunning the app or the rerun that
        occurs upon user interaction. ``AppTest.run()`` must be manually called
        after updating a widget value or switching pages as script reruns do
        not occur automatically as they do for live-running Streamlit apps.

        Parameters
        ----------
        timeout : float or None
            The maximum number of seconds to run the script. If ``timeout`` is
            ``None`` (default), Streamlit uses the default timeout set for the
            instance of ``AppTest``.

        Returns
        -------
        AppTest
            self

        r§   )r_   r˜   )r`   rž   s     rT   r˜   zAppTest.runx  s   € ð* �z‰z�~‰~ gˆ~Ó.Ð.rS   c                ó  — t        | j                  «      j                  }||z  }|j                  «       st	        d|› d�«      ‚t        |j                  «       «      }t        t        |«      «      \  }}t        |«      | _	        | S )aÔ  Switch to another page of the app.

        This method does not automatically rerun the app. Use a follow-up call
        to ``AppTest.run()`` to obtain the elements on the selected page.

        Parameters
        ----------
        page_path: str
            Path of the page to switch to. The path must be relative to the
            main script's location (e.g. ``"pages/my_page.py"``).

        Returns
        -------
        AppTest
            self

        zUnable to find script at z:, make sure the page given is relative to the main script.)
r   rX   rŠ   r„   Ú
ValueErrorrW   Úresolver   rE   r]   )r`   Ú	page_pathÚmain_dirÚfull_page_pathÚpage_path_strr~   Ú	page_names          rT   Úswitch_pagezAppTest.switch_page�  sƒ   € ô$ ˜×)Ñ)Ó*×1Ñ1ˆØ! IÑ-ˆØ×%Ñ%Ô'ÜØ+¨I¨;Ð6pÐqóð ô ˜N×2Ñ2Ó4Ó5ˆÜ)¬$¨}Ó*=Ó>‰ˆˆ9Ü" 9Ó-ˆŒØˆrS   c                ó.   — | j                   j                  S )aP  Sequence of elements within the main body of the app.

        Returns
        -------
        Block
            A container of elements. Block can be queried for elements in the
            same manner as ``AppTest``. For example, ``Block.checkbox`` will
            return all ``st.checkbox`` within the associated container.
        )r_   Úmain©r`   s    rT   r³   zAppTest.main¬  s   € ð �z‰z�‰ÐrS   c                ó.   — | j                   j                  S )aJ  Sequence of all elements within ``st.sidebar``.

        Returns
        -------
        Block
            A container of elements. Block can be queried for elements in the
            same manner as ``AppTest``. For example, ``Block.checkbox`` will
            return all ``st.checkbox`` within the associated container.
        )r_   Úsidebarr´   s    rT   r¶   zAppTest.sidebar¹  s   € ð �z‰z×!Ñ!Ð!rS   c                ó.   — | j                   j                  S )a×  Sequence of all ``st.button`` and ``st.form_submit_button`` widgets.

        Returns
        -------
        WidgetList of Button
            Sequence of all ``st.button`` and ``st.form_submit_button``
            widgets. Individual widgets can be accessed from a WidgetList by
            index (order on the page) or key. For example, ``at.button[0]`` for
            the first widget or ``at.button(key="my_key")`` for a widget with a
            given key.
        )r_   Úbuttonr´   s    rT   r¸   zAppTest.buttonÆ  s   € ð �z‰z× Ñ Ð rS   c                ó.   — | j                   j                  S )a¤  Sequence of all ``st.feedback`` widgets.

        Returns
        -------
        WidgetList of ButtonGroup
            Sequence of all ``st.feedback`` widgets. Individual widgets can be
            accessed from a WidgetList by index (order on the page) or key. For
            example, ``at.button_group[0]`` for the first widget or
            ``at.button_group(key="my_key")`` for a widget with a given key.
        )r_   Úbutton_groupr´   s    rT   rº   zAppTest.button_groupÕ  ó   € ð �z‰z×&Ñ&Ð&rS   c                ó.   — | j                   j                  S )a„  Sequence of all ``st.caption`` elements.

        Returns
        -------
        ElementList of Caption
            Sequence of all ``st.caption`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.caption[0]`` for the first element. Caption is an
            extension of the Element class.
        )r_   Úcaptionr´   s    rT   r½   zAppTest.captionã  ó   € ð �z‰z×!Ñ!Ð!rS   c                ó.   — | j                   j                  S )a¢  Sequence of all ``st.chat_input`` widgets.

        Returns
        -------
        WidgetList of ChatInput
            Sequence of all ``st.chat_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.chat_input[0]`` for the first widget or
            ``at.chat_input(key="my_key")`` for a widget with a given key.
        )r_   Ú
chat_inputr´   s    rT   rÀ   zAppTest.chat_inputñ  ó   € ð �z‰z×$Ñ$Ð$rS   c                ó.   — | j                   j                  S )a—  Sequence of all ``st.chat_message`` elements.

        Returns
        -------
        Sequence of ChatMessage
            Sequence of all ``st.chat_message`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.chat_message[0]`` for the first element.  ChatMessage
            is an extension of the Block class.
        )r_   Úchat_messager´   s    rT   rÃ   zAppTest.chat_messageÿ  r»   rS   c                ó.   — | j                   j                  S )a™  Sequence of all ``st.checkbox`` widgets.

        Returns
        -------
        WidgetList of Checkbox
            Sequence of all ``st.checkbox`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.checkbox[0]`` for the first widget or
            ``at.checkbox(key="my_key")`` for a widget with a given key.
        )r_   Úcheckboxr´   s    rT   rÅ   zAppTest.checkbox  ó   € ð �z‰z×"Ñ"Ð"rS   c                ó.   — | j                   j                  S )au  Sequence of all ``st.code`` elements.

        Returns
        -------
        ElementList of Code
            Sequence of all ``st.code`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.code[0]`` for the first element. Code is an
            extension of the Element class.
        )r_   Úcoder´   s    rT   rÈ   zAppTest.code  ó   € ð �z‰z�‰ÐrS   c                ó.   — | j                   j                  S )a¬  Sequence of all ``st.color_picker`` widgets.

        Returns
        -------
        WidgetList of ColorPicker
            Sequence of all ``st.color_picker`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.color_picker[0]`` for the first widget or
            ``at.color_picker(key="my_key")`` for a widget with a given key.
        )r_   Úcolor_pickerr´   s    rT   rË   zAppTest.color_picker)  r»   rS   c                ó.   — | j                   j                  S )a  Sequence of all columns within ``st.columns`` elements.

        Each column within a single ``st.columns`` will be returned as a
        separate Column in the Sequence.

        Returns
        -------
        Sequence of Column
            Sequence of all columns within ``st.columns`` elements. Individual
            columns can be accessed from an ElementList by index (order on the
            page). For example, ``at.columns[0]`` for the first column. Column
            is an extension of the Block class.
        )r_   Úcolumnsr´   s    rT   rÍ   zAppTest.columns7  s   € ð �z‰z×!Ñ!Ð!rS   c                ó.   — | j                   j                  S )aŽ  Sequence of all ``st.dataframe`` elements.

        Returns
        -------
        ElementList of Dataframe
            Sequence of all ``st.dataframe`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.dataframe[0]`` for the first element. Dataframe is an
            extension of the Element class.
        )r_   Ú	dataframer´   s    rT   rÏ   zAppTest.dataframeH  ó   € ð �z‰z×#Ñ#Ð#rS   c                ó.   — | j                   j                  S )a¢  Sequence of all ``st.date_input`` widgets.

        Returns
        -------
        WidgetList of DateInput
            Sequence of all ``st.date_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.date_input[0]`` for the first widget or
            ``at.date_input(key="my_key")`` for a widget with a given key.
        )r_   Ú
date_inputr´   s    rT   rÒ   zAppTest.date_inputV  rÁ   rS   c                ó.   — | j                   j                  S )a¶  Sequence of all ``st.datetime_input`` widgets.

        Returns
        -------
        WidgetList of DateTimeInput
            Sequence of all ``st.datetime_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.datetime_input[0]`` for the first widget or
            ``at.datetime_input(key="my_key")`` for a widget with a given key.
        )r_   Údatetime_inputr´   s    rT   rÔ   zAppTest.datetime_inputd  s   € ð �z‰z×(Ñ(Ð(rS   c                ó.   — | j                   j                  S )a„  Sequence of all ``st.divider`` elements.

        Returns
        -------
        ElementList of Divider
            Sequence of all ``st.divider`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.divider[0]`` for the first element. Divider is an
            extension of the Element class.
        )r_   Údividerr´   s    rT   rÖ   zAppTest.dividerr  r¾   rS   c                ó.   — | j                   j                  S )az  Sequence of all ``st.error`` elements.

        Returns
        -------
        ElementList of Error
            Sequence of all ``st.error`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.error[0]`` for the first element. Error is an
            extension of the Element class.
        )r_   Úerrorr´   s    rT   rØ   zAppTest.error€  ó   € ð �z‰z×ÑÐrS   c                ó.   — | j                   j                  S )aŽ  Sequence of all ``st.exception`` elements.

        Returns
        -------
        ElementList of Exception
            Sequence of all ``st.exception`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.exception[0]`` for the first element. Exception is an
            extension of the Element class.
        )r_   Ú	exceptionr´   s    rT   rÛ   zAppTest.exceptionŽ  rÐ   rS   c                ó.   — | j                   j                  S )a„  Sequence of all ``st.expander`` elements.

        Returns
        -------
        Sequence of Expandable
            Sequence of all ``st.expander`` elements. Individual elements can be
            accessed from a Sequence by index (order on the page). For
            example, ``at.expander[0]`` for the first element. Expandable is an
            extension of the Block class.
        )r_   Úexpanderr´   s    rT   rÝ   zAppTest.expanderœ  rÆ   rS   c                ó.   — | j                   j                  S )a  Sequence of all ``st.header`` elements.

        Returns
        -------
        ElementList of Header
            Sequence of all ``st.header`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.header[0]`` for the first element. Header is an
            extension of the Element class.
        )r_   Úheaderr´   s    rT   rß   zAppTest.headerª  ó   € ð �z‰z× Ñ Ð rS   c                ó.   — | j                   j                  S )au  Sequence of all ``st.info`` elements.

        Returns
        -------
        ElementList of Info
            Sequence of all ``st.info`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.info[0]`` for the first element. Info is an
            extension of the Element class.
        )r_   Úinfor´   s    rT   râ   zAppTest.info¸  rÉ   rS   c                ó.   — | j                   j                  S )au  Sequence of all ``st.json`` elements.

        Returns
        -------
        ElementList of Json
            Sequence of all ``st.json`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.json[0]`` for the first element. Json is an
            extension of the Element class.
        )r_   Újsonr´   s    rT   rä   zAppTest.jsonÆ  rÉ   rS   c                ó.   — | j                   j                  S )az  Sequence of all ``st.latex`` elements.

        Returns
        -------
        ElementList of Latex
            Sequence of all ``st.latex`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.latex[0]`` for the first element. Latex is an
            extension of the Element class.
        )r_   Úlatexr´   s    rT   ræ   zAppTest.latexÔ  rÙ   rS   c                ó.   — | j                   j                  S )a‰  Sequence of all ``st.markdown`` elements.

        Returns
        -------
        ElementList of Markdown
            Sequence of all ``st.markdown`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.markdown[0]`` for the first element. Markdown is an
            extension of the Element class.
        )r_   Úmarkdownr´   s    rT   rè   zAppTest.markdownâ  rÆ   rS   c                ó.   — | j                   j                  S )a  Sequence of all ``st.metric`` elements.

        Returns
        -------
        ElementList of Metric
            Sequence of all ``st.metric`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.metric[0]`` for the first element. Metric is an
            extension of the Element class.
        )r_   Úmetricr´   s    rT   rê   zAppTest.metricð  rà   rS   c                ó.   — | j                   j                  S )a¨  Sequence of all ``st.multiselect`` widgets.

        Returns
        -------
        WidgetList of Multiselect
            Sequence of all ``st.multiselect`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.multiselect[0]`` for the first widget or
            ``at.multiselect(key="my_key")`` for a widget with a given key.
        )r_   Úmultiselectr´   s    rT   rì   zAppTest.multiselectþ  s   € ð �z‰z×%Ñ%Ð%rS   c                ó.   — | j                   j                  S )a¬  Sequence of all ``st.number_input`` widgets.

        Returns
        -------
        WidgetList of NumberInput
            Sequence of all ``st.number_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.number_input[0]`` for the first widget or
            ``at.number_input(key="my_key")`` for a widget with a given key.
        )r_   Únumber_inputr´   s    rT   rî   zAppTest.number_input  r»   rS   c                ó.   — | j                   j                  S )aŠ  Sequence of all ``st.radio`` widgets.

        Returns
        -------
        WidgetList of Radio
            Sequence of all ``st.radio`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.radio[0]`` for the first widget or
            ``at.radio(key="my_key")`` for a widget with a given key.
        )r_   Úradior´   s    rT   rð   zAppTest.radio  rÙ   rS   c                ó.   — | j                   j                  S )a±  Sequence of all ``st.select_slider`` widgets.

        Returns
        -------
        WidgetList of SelectSlider
            Sequence of all ``st.select_slider`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.select_slider[0]`` for the first widget or
            ``at.select_slider(key="my_key")`` for a widget with a given key.
        )r_   Úselect_sliderr´   s    rT   rò   zAppTest.select_slider(  s   € ð �z‰z×'Ñ'Ð'rS   c                ó.   — | j                   j                  S )až  Sequence of all ``st.selectbox`` widgets.

        Returns
        -------
        WidgetList of Selectbox
            Sequence of all ``st.selectbox`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.selectbox[0]`` for the first widget or
            ``at.selectbox(key="my_key")`` for a widget with a given key.
        )r_   Ú	selectboxr´   s    rT   rô   zAppTest.selectbox6  rÐ   rS   c                ó.   — | j                   j                  S )a�  Sequence of all ``st.slider`` widgets.

        Returns
        -------
        WidgetList of Slider
            Sequence of all ``st.slider`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.slider[0]`` for the first widget or
            ``at.slider(key="my_key")`` for a widget with a given key.
        )r_   Úsliderr´   s    rT   rö   zAppTest.sliderD  rà   rS   c                ó.   — | j                   j                  S )aŽ  Sequence of all ``st.subheader`` elements.

        Returns
        -------
        ElementList of Subheader
            Sequence of all ``st.subheader`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.subheader[0]`` for the first element. Subheader is an
            extension of the Element class.
        )r_   Ú	subheaderr´   s    rT   rø   zAppTest.subheaderR  rÐ   rS   c                ó.   — | j                   j                  S )a„  Sequence of all ``st.success`` elements.

        Returns
        -------
        ElementList of Success
            Sequence of all ``st.success`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.success[0]`` for the first element. Success is an
            extension of the Element class.
        )r_   Úsuccessr´   s    rT   rú   zAppTest.success`  r¾   rS   c                ó.   — | j                   j                  S )av  Sequence of all ``st.status`` elements.

        Returns
        -------
        Sequence of Status
            Sequence of all ``st.status`` elements. Individual elements can be
            accessed from a Sequence by index (order on the page). For
            example, ``at.status[0]`` for the first element. Status is an
            extension of the Block class.
        )r_   Ústatusr´   s    rT   rü   zAppTest.statusn  rà   rS   c                ó.   — | j                   j                  S )az  Sequence of all ``st.table`` elements.

        Returns
        -------
        ElementList of Table
            Sequence of all ``st.table`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.table[0]`` for the first element. Table is an
            extension of the Element class.
        )r_   Útabler´   s    rT   rþ   zAppTest.table|  rÙ   rS   c                ó.   — | j                   j                  S )aÄ  Sequence of all tabs within ``st.tabs`` elements.

        Each tab within a single ``st.tabs`` will be returned as a separate Tab
        in the Sequence. Additionally, the tab labels are forwarded to each
        Tab element as a property. For example, ``st.tabs("A","B")`` will
        yield two Tab objects, with ``Tab.label`` returning "A" and "B",
        respectively.

        Returns
        -------
        Sequence of Tab
            Sequence of all tabs within ``st.tabs`` elements. Individual
            tabs can be accessed from an ElementList by index (order on the
            page). For example, ``at.tabs[0]`` for the first tab. Tab is an
            extension of the Block class.
        )r_   Útabsr´   s    rT   r   zAppTest.tabsŠ  s   € ð$ �z‰z�‰ÐrS   c                ó.   — | j                   j                  S )au  Sequence of all ``st.text`` elements.

        Returns
        -------
        ElementList of Text
            Sequence of all ``st.text`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.text[0]`` for the first element. Text is an
            extension of the Element class.
        )r_   Útextr´   s    rT   r  zAppTest.textž  rÉ   rS   c                ó.   — | j                   j                  S )a�  Sequence of all ``st.text_area`` widgets.

        Returns
        -------
        WidgetList of TextArea
            Sequence of all ``st.text_area`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.text_area[0]`` for the first widget or
            ``at.text_area(key="my_key")`` for a widget with a given key.
        )r_   Ú	text_arear´   s    rT   r  zAppTest.text_area¬  rÐ   rS   c                ó.   — | j                   j                  S )a¢  Sequence of all ``st.text_input`` widgets.

        Returns
        -------
        WidgetList of TextInput
            Sequence of all ``st.text_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.text_input[0]`` for the first widget or
            ``at.text_input(key="my_key")`` for a widget with a given key.
        )r_   Ú
text_inputr´   s    rT   r  zAppTest.text_inputº  rÁ   rS   c                ó.   — | j                   j                  S )a¢  Sequence of all ``st.time_input`` widgets.

        Returns
        -------
        WidgetList of TimeInput
            Sequence of all ``st.time_input`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.time_input[0]`` for the first widget or
            ``at.time_input(key="my_key")`` for a widget with a given key.
        )r_   Ú
time_inputr´   s    rT   r  zAppTest.time_inputÈ  rÁ   rS   c                ó.   — | j                   j                  S )az  Sequence of all ``st.title`` elements.

        Returns
        -------
        ElementList of Title
            Sequence of all ``st.title`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.title[0]`` for the first element. Title is an
            extension of the Element class.
        )r_   Útitler´   s    rT   r
  zAppTest.titleÖ  rÙ   rS   c                ó.   — | j                   j                  S )az  Sequence of all ``st.toast`` elements.

        Returns
        -------
        ElementList of Toast
            Sequence of all ``st.toast`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.toast[0]`` for the first element. Toast is an
            extension of the Element class.
        )r_   Útoastr´   s    rT   r  zAppTest.toastä  rÙ   rS   c                ó.   — | j                   j                  S )a�  Sequence of all ``st.toggle`` widgets.

        Returns
        -------
        WidgetList of Toggle
            Sequence of all ``st.toggle`` widgets. Individual widgets can
            be accessed from a WidgetList by index (order on the page) or key.
            For example, ``at.toggle[0]`` for the first widget or
            ``at.toggle(key="my_key")`` for a widget with a given key.
        )r_   Útoggler´   s    rT   r  zAppTest.toggleò  rà   rS   c                ó.   — | j                   j                  S )a„  Sequence of all ``st.warning`` elements.

        Returns
        -------
        ElementList of Warning
            Sequence of all ``st.warning`` elements. Individual elements can be
            accessed from an ElementList by index (order on the page). For
            example, ``at.warning[0]`` for the first element. Warning is an
            extension of the Element class.
        )r_   Úwarningr´   s    rT   r  zAppTest.warning   r¾   rS   c                ó,   — t        | j                  «      S rQ   )Úlenr_   r´   s    rT   Ú__len__zAppTest.__len__  s   € Ü�4—:‘:‹ÐrS   c              #  ó8   K  — | j                   E d {  –—†  y 7 Œ­wrQ   ©r_   r´   s    rT   Ú__iter__zAppTest.__iter__  s   è ø€ Ø—:‘:×Òús   ‚’“c                ó    — | j                   |   S rQ   r  )r`   Úidxs     rT   Ú__getitem__zAppTest.__getitem__  s   € Ø�z‰z˜#‰ÐrS   c                ó8   — | j                   j                  |«      S )a±  Get elements or widgets of the specified type.

        This method returns the collection of all elements or widgets of
        the specified type on the current page. Retrieve a specific element by
        using its index (order on page) or key lookup.

        Parameters
        ----------
        element_type: str
            An element attribute of ``AppTest``. For example, "button",
            "caption", or "chat_input".

        Returns
        -------
        Sequence of Elements
            Sequence of elements of the given type. Individual elements can
            be accessed from a Sequence by index (order on the page). When
            getting and ``element_type`` that is a widget, individual widgets
            can be accessed by key. For example, ``at.get("text")[0]`` for the
            first ``st.text`` element or ``at.get("slider")(key="my_key")`` for
            the ``st.slider`` widget with a given key.
        )r_   Úget)r`   Úelement_types     rT   r  zAppTest.get  s   € ð. �z‰z�~‰~˜lÓ+Ð+rS   c                ó   — t        | «      S rQ   )rB   r´   s    rT   Ú__repr__zAppTest.__repr__0  s   € Ü�T‹{ÐrS   )
ra   ú
str | PathrY   ÚfloatrM   útuple[Any, ...] | NonerN   údict[str, Any] | NoneÚreturnÚNone)ri   rW   rY   r   r#  rK   )
ri   rW   rY   r   rM   r!  rN   r"  r#  rK   )
ri   zCallable[..., Any]rY   r   rM   r!  rN   r"  r#  rK   )ra   r  rY   r   r#  rK   )NN)r�   zWidgetStates | Nonerž   úfloat | Noner#  rK   )rž   r%  r#  rK   )r¬   rW   r#  rK   )r#  r   )r#  zWidgetList[Button])r#  zWidgetList[ButtonGroup[Any]])r#  zElementList[Caption])r#  zWidgetList[ChatInput])r#  zSequence[ChatMessage])r#  zWidgetList[Checkbox])r#  zElementList[Code])r#  zWidgetList[ColorPicker])r#  zSequence[Column])r#  zElementList[Dataframe])r#  zWidgetList[DateInput])r#  zWidgetList[DateTimeInput])r#  zElementList[Divider])r#  zElementList[Error])r#  zElementList[Exception])r#  zSequence[Expander])r#  zElementList[Header])r#  zElementList[Info])r#  zElementList[Json])r#  zElementList[Latex])r#  zElementList[Markdown])r#  zElementList[Metric])r#  zWidgetList[Multiselect[Any]])r#  zWidgetList[NumberInput])r#  zWidgetList[Radio[Any]])r#  zWidgetList[SelectSlider[Any]])r#  zWidgetList[Selectbox[Any]])r#  zWidgetList[Slider[Any]])r#  zElementList[Subheader])r#  zElementList[Success])r#  zSequence[Status])r#  zElementList[Table])r#  zSequence[Tab])r#  zElementList[Text])r#  zWidgetList[TextArea])r#  zWidgetList[TextInput])r#  zWidgetList[TimeInput])r#  zElementList[Title])r#  zElementList[Toast])r#  zWidgetList[Toggle])r#  zElementList[Warning])r#  Úint)r#  zIterator[Node])r  r&  r#  r.   )r  rW   r#  zSequence[Node])r#  rW   )>rx   Ú
__module__Ú__qualname__Ú__doc__rc   Úclassmethodrj   rg   r�   r�   r¦   r˜   r±   Úpropertyr³   r¶   r¸   rº   r½   rÀ   rÃ   rÅ   rÈ   rË   rÍ   rÏ   rÒ   rÔ   rÖ   rØ   rÛ   rÝ   rß   râ   rä   ræ   rè   rê   rì   rî   rð   rò   rô   rö   rø   rú   rü   rþ   r   r  r  r  r  r
  r  r  r  r  r  r  r  r  rR   rS   rT   rK   rK   c   sÛ  „ ñ6ðz (,Ø(,ñàðð ð	ð
 %ðð &ðð 
óð. ØBCô Ió ðIð8 ð
 "#Ø'+Ø(,ñ
àð
ð ð	
ð
 %ð
ð &ð
ð 
ò
ó ð
ð" ð
 "#Ø'+Ø(,ñ/
à"ð/
ð ð	/
ð
 %ð/
ð &ð/
ð 
ò/
ó ð/
ðb àBCñ%>Ø$ð%>Ø:?ð%>à	ò%>ó ð%>ðR -1Ø $ð:à)ð:ð ð:ð 
ó	:ðx .2õ /ó.ð: ò
ó ð
ð ò
"ó ð
"ð ò!ó ð!ð ò'ó ð'ð ò"ó ð"ð ò%ó ð%ð ò'ó ð'ð ò#ó ð#ð òó ðð ò'ó ð'ð ò"ó ð"ð  ò$ó ð$ð ò%ó ð%ð ò)ó ð)ð ò"ó ð"ð ò ó ð ð ò$ó ð$ð ò#ó ð#ð ò!ó ð!ð òó ðð òó ðð ò ó ð ð ò#ó ð#ð ò!ó ð!ð ò&ó ð&ð ò'ó ð'ð ò ó ð ð ò(ó ð(ð ò$ó ð$ð ò!ó ð!ð ò$ó ð$ð ò"ó ð"ð ò!ó ð!ð ò ó ð ð òó ðð& òó ðð ò$ó ð$ð ò%ó ð%ð ò%ó ð%ð ò ó ð ð ò ó ð ð ò!ó ð!ð ò"ó ð"óóóó,ô2rS   rK   )dÚ
__future__r   ry   Útempfilerp   r…   Úpathlibr   Útypingr   r   Úunittest.mockr   Úurllibr   Ústreamlit.runtimer	   Ú5streamlit.runtime.caching.storage.dummy_cache_storager
   Ú$streamlit.runtime.media_file_managerr   Ú+streamlit.runtime.memory_media_file_storager   Ústreamlit.runtime.pages_managerr   Ú+streamlit.runtime.scriptrunner.script_cacher   Ústreamlit.runtime.secretsr   Ústreamlit.runtime.state.commonr   Ú*streamlit.runtime.state.safe_session_stater   Ú%streamlit.runtime.state.session_stater   Ústreamlit.source_utilr   Ú!streamlit.testing.v1.element_treer   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   Ú(streamlit.testing.v1.local_script_runnerrC   Ústreamlit.testing.v1.utilrD   Ústreamlit.utilrE   Úcollections.abcrF   rG   rH   Ú streamlit.proto.WidgetStates_pb2rI   ÚTemporaryDirectoryrn   rK   rR   rS   rT   ú<module>rD     s¾   ðõ #ã Û Û Û Ý ß %Ý #Ý å %õõ BÝ NÝ 8Ý CÝ -Ý 6Ý GÝ >Ý 4÷0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0÷ 0ñ 0õb GÝ :Ý #áß<Ñ<å=à
%ˆ(×
%Ñ
%Ó
'€÷Nò NrS   