
    ch=                       % S SK Jr  S SKJrJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJrJr  S SK J!r!  \(       a  S SK"J#r#J$r$  \%r&S\'S'   \\%\\	/ S4   \4   r(S\'S'       SS jr)    SS jr*SS jr+\" S5      SSS.       S S jj5       r,        S S jr-g)!    )annotations)MappingSequence)Path)TYPE_CHECKINGCallableLiteralUnion)	TypeAlias)config)StreamlitAPIException)StreamlitPage)
ForwardMsg)
Navigation)gather_metrics)PagesManager)ScriptRunContextget_script_run_ctx)is_emoji)PageHashPageInfor   SectionHeaderNPageTypec                   [        U [        5      (       a  U $ [        U [        5      (       a  [        U 5      $ [        U [        5      (       a  [        U 5      $ [	        U 5      (       a  [        U 5      $ [        S[        U 5       S35      e)z5Convert various input types to StreamlitPage objects.zInvalid page type: zY. Must be either a string path, a pathlib.Path, a callable function, or a st.Page object.)
isinstancer   strr   callabler   type)
page_inputs    pC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\streamlit/commands/navigation.pyconvert_to_streamlit_pager!   +   s     *m,,*c""Z((*d##Z((
Z((

d:./ 0D 	D     c                v    / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ )N)valuesextendcopy)nav_sections	page_listpagess      r    pages_from_nav_sectionsr*   B   s8     I$$&& ' r"   c                \    [        5       nSUR                  l        U R                  U5        g )N )r   page_not_found	page_nameenqueue)ctxmsgs     r    send_page_not_foundr2   L   s#    
,C#%C KKr"   
navigationsidebarFpositionexpandedc                   [        U[        5      (       a  US;  a  [        SU S35      eS[        l        [        XUS9$ )us  
Configure the available pages in a multipage app.

Call ``st.navigation`` in your entrypoint file to define the available
pages for your app. ``st.navigation`` returns the current page, which can
be executed using ``.run()`` method.

When using ``st.navigation``, your entrypoint file (the file passed to
``streamlit run``) acts like a router or frame of common elements around
each of your pages. Streamlit executes the entrypoint file with every app
rerun. To execute the current page, you must call the ``.run()`` method on
the ``StreamlitPage`` object returned by ``st.navigation``.

The set of available pages can be updated with each rerun for dynamic
navigation. By default, ``st.navigation`` displays the available pages in
the sidebar if there is more than one page. This behavior can be changed
using the ``position`` keyword argument.

As soon as any session of your app executes the ``st.navigation`` command,
your app will ignore the ``pages/`` directory (across all sessions).

Parameters
----------
pages : Sequence[page-like], Mapping[str, Sequence[page-like]]
    The available pages for the app.

    To create a navigation menu with no sections or page groupings,
    ``pages`` must be a list of page-like objects. Page-like objects are
    anything that can be passed to ``st.Page`` or a ``StreamlitPage``
    object returned by ``st.Page``.

    To create labeled sections or page groupings within the navigation
    menu, ``pages`` must be a dictionary. Each key is the label of a
    section and each value is the list of page-like objects for
    that section. If you use ``position="top"``, each grouping will be a
    collapsible item in the navigation menu.

    When you use a string or path as a page-like object, they are
    internally passed to ``st.Page`` and converted to ``StreamlitPage``
    objects. In this case, the page will have the default title, icon, and
    path inferred from its path or filename. To customize these attributes
    for your page, initialize your page with ``st.Page``.

position : "sidebar", "top", or "hidden"
    The position of the navigation menu. If this is ``"sidebar"``
    (default), the navigation widget appears at the top of the sidebar. If
    this is ``"top"``, the navigation appears in the top header of the app.
    If this is ``"hidden"``, the navigation widget is not displayed.

    If there is only one page in ``pages``, the navigation will be hidden
    for any value of ``position``.

expanded : bool
    Whether the navigation menu should be expanded. If this is ``False``
    (default), the navigation menu will be collapsed and will include a
    button to view more options when there are too many pages to display.
    If this is ``True``, the navigation menu will always be expanded; no
    button to collapse the menu will be displayed.

    If ``st.navigation`` changes from ``expanded=True`` to
    ``expanded=False`` on a rerun, the menu will stay expanded and a
    collapse button will be displayed.

    The parameter is only used when ``position="sidebar"``.

Returns
-------
StreamlitPage
    The current page selected by the user. To run the page, you must use
    the ``.run()`` method on it.

Examples
--------
The following examples show different possible entrypoint files, each named
``streamlit_app.py``. An entrypoint file is passed to ``streamlit run``. It
manages your app's navigation and serves as a router between pages.

**Example 1: Use a callable or Python file as a page**

You can declare pages from callables or file paths. If you pass callables
or paths to ``st.navigation`` as a page-like objects, they are internally
converted to ``StreamlitPage`` objects using ``st.Page``. In this case, the
page titles, icons, and paths are inferred from the file or callable names.

``page_1.py`` (in the same directory as your entrypoint file):

>>> import streamlit as st
>>>
>>> st.title("Page 1")

``streamlit_app.py``:

>>> import streamlit as st
>>>
>>> def page_2():
...     st.title("Page 2")
>>>
>>> pg = st.navigation(["page_1.py", page_2])
>>> pg.run()

.. output::
    https://doc-navigation-example-1.streamlit.app/
    height: 200px

**Example 2: Group pages into sections and customize them with ``st.Page``**

You can use a dictionary to create sections within your navigation menu. In
the following example, each page is similar to Page 1 in Example 1, and all
pages are in the same directory. However, you can use Python files from
anywhere in your repository. ``st.Page`` is used to give each page a custom
title. For more information, see |st.Page|_.

Directory structure:

>>> your_repository/
>>> ├── create_account.py
>>> ├── learn.py
>>> ├── manage_account.py
>>> ├── streamlit_app.py
>>> └── trial.py

``streamlit_app.py``:

>>> import streamlit as st
>>>
>>> pages = {
...     "Your account": [
...         st.Page("create_account.py", title="Create your account"),
...         st.Page("manage_account.py", title="Manage your account"),
...     ],
...     "Resources": [
...         st.Page("learn.py", title="Learn about us"),
...         st.Page("trial.py", title="Try it out"),
...     ],
... }
>>>
>>> pg = st.navigation(pages)
>>> pg.run()

.. output::
    https://doc-navigation-example-2.streamlit.app/
    height: 300px


**Example 3: Use top navigation**

You can use the ``position`` parameter to place the navigation at the top
of the app. This is useful for apps with a lot of pages because it allows
you to create collapsible sections for each group of pages. The following
example uses the same directory structure as Example 2 and shows how to
create a top navigation menu.

``streamlit_app.py``:

>>> import streamlit as st
>>>
>>> pages = {
...     "Your account": [
...         st.Page("create_account.py", title="Create your account"),
...         st.Page("manage_account.py", title="Manage your account"),
...     ],
...     "Resources": [
...         st.Page("learn.py", title="Learn about us"),
...         st.Page("trial.py", title="Try it out"),
...     ],
... }
>>>
>>> pg = st.navigation(pages, position="top")
>>> pg.run()

.. output::
    https://doc-navigation-top.streamlit.app/
    height: 300px

**Example 4: Stateful widgets across multiple pages**

Call widget functions in your entrypoint file when you want a widget to be
stateful across pages. Assign keys to your common widgets and access their
values through Session State within your pages.

``streamlit_app.py``:

>>> import streamlit as st
>>>
>>> def page1():
>>>     st.write(st.session_state.foo)
>>>
>>> def page2():
>>>     st.write(st.session_state.bar)
>>>
>>> # Widgets shared by all the pages
>>> st.sidebar.selectbox("Foo", ["A", "B", "C"], key="foo")
>>> st.sidebar.checkbox("Bar", key="bar")
>>>
>>> pg = st.navigation([page1, page2])
>>> pg.run()

.. output::
    https://doc-navigation-multipage-widgets.streamlit.app/
    height: 350px

.. |st.Page| replace:: ``st.Page``
.. _st.Page: https://docs.streamlit.io/develop/api-reference/navigation/st.page

)r4   hiddentopzInvalid position "zG". The position parameter must be one of "sidebar", "hidden", or "top".Fr5   )r   r   r   r   uses_pages_directory_navigation)r)   r6   r7   s      r    r3   r3   R   sQ    j h$$8T(T# 
 +S S
 	
 ).L%u(CCr"   c                  [        U [        5      (       a   U  Vs/ s H  n[        U5      PM     nnSU0nO@U R                  5        VVVs0 s H!  u  pgXg Vs/ s H  n[        U5      PM     sn_M#     nnnn[	        U5      nU(       d  [        S5      eS n	0 n
U H1  nX[    H&  nUR                  (       d  M  U	b  [        S5      eUn	M(     M3     U	c  US   n	SU	l        [        5       nU(       d	  SU	l        U	$ U H  nX[    H  n[        UR                  [        5      (       a  [        UR                  5      OSnUR                  nX;   a  [        SUR                   S35      eUUR                  UR                  UUR                  S.X'   M     M     [!        5       nUS	:X  a*  ["        R$                  R&                  UR(                  l        OUS
:X  a*  ["        R$                  R,                  UR(                  l        OrUS:X  al  [.        R0                  " S5      SL a*  ["        R$                  R&                  UR(                  l        O)["        R$                  R2                  UR(                  l        UUR(                  l        UR7                  5       UR(                  R8                  S S & U H  nX[    H  nUR(                  R:                  R=                  5       nUR                  Ul        UR                  Ul         [C        UR                  5      (       a  SUR                   3OUR                  Ul        UR                  Ul"        Xl#        UR                  Ul$        M     M     URJ                  RM                  U
5        URJ                  RO                  U	R                  S9nS nU(       a<  US   nU Vs/ s H  o3R                  U:X  d  M  UPM     nn[Q        U5      S:  a  US   nU(       d  [S        U5        U	nSUl        UR                  UR(                  l        URU                  UR                  5        URW                  U5        U$ s  snf s  snf s  snnnf s  snf )Nr,   z;`st.navigation` must be called with at least one `st.Page`.zUMultiple Pages specified with `default=True`. At most one Page can be set to default.r   Tz+Multiple Pages specified with URL pathname zl. URL pathnames must be unique. The url pathname may be inferred from the filename, callable name, or title.)page_script_hashr.   iconscript_pathurl_pathnamer9   r:   r4   zclient.showSidebarNavigationFzemoji:)fallback_page_hashr>   ),r   r   r!   itemsr*   r   _defaultr   _can_be_called_pager   r   _script_hashurl_pathtitler?   r   NavigationProtoPositionHIDDENr3   r6   TOPr   
get_optionSIDEBARr7   keyssections	app_pagesaddr>   r.   r   
is_defaultsection_headerrA   pages_manager	set_pagesget_page_scriptlenr2   set_mpa_v2_pager/   )r)   r6   r7   pconverted_pagesr'   sectionsection_pagesr(   default_pagepagehash_to_pageinforU   pager0   r@   script_hashr1   
found_pagepage_to_returnfound_page_script_hashmatching_pagess                        r    r<   r<   3  s    %""AFGA4Q7GO, +0++-
*7& MJMq/2MJJ*7 	 
 (5I#I
 	
 L57 ' 0D}}}+/B   $ 1 '  | $

C '+# ' 0D-7

D-I-I#djj/rK++K2 ,A$-- QK K  %0!ZZ		* $1 - 1 ', ,C8"1":":"A"A	U	"1":":">">	Y	;<E&5&>&>&E&ECNN#&5&>&>&F&FCNN#&CNN!-!2!2!4CNNA& 0D((,,.A!%!2!2A**AK-5dii-@-@vdii[)diiAF==AL-!]]AN 1 '  45""22'44 3 J N!+,>!? 
 !NN6L$LAy 	 
 ~"+A.NC % %)N!&4&A&ACNN#334 KKg H K
z
s)   Q

QQ+Q3Q
QQ)r   r   returnr   )r'   z(dict[SectionHeader, list[StreamlitPage]]rg   zlist[StreamlitPage])r0   r   rg   None)r)   z?Sequence[PageType] | Mapping[SectionHeader, Sequence[PageType]]r6   z#Literal['sidebar', 'hidden', 'top']r7   boolrg   r   ).
__future__r   collections.abcr   r   pathlibr   typingr   r   r	   r
   typing_extensionsr   	streamlitr   streamlit.errorsr   streamlit.navigation.pager   streamlit.proto.ForwardMsg_pb2r   streamlit.proto.Navigation_pb2r   rJ   streamlit.runtime.metrics_utilr   streamlit.runtime.pages_managerr   7streamlit.runtime.scriptrunner_utils.script_run_contextr   r   streamlit.string_utilr   streamlit.source_utilr   r   r   r   __annotations__r   r!   r*   r2   r3   r<    r"   r    <module>r{      s   # -  : : '  2 3 5 H 9 8 +8y CxD'9=HI) I.:  5>	]DJ]D 2]D 	]D
 ]D ]D@zJz 2z 	z
 zr"   