L iQ-ddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZdd lmZerdd lmZe d dddd d ddZGddZy)) annotationsN)Path) TYPE_CHECKING)StreamlitAPIException)gather_metrics)get_script_run_ctx)page_icon_and_name)validate_icon_or_emoji)calc_md5)CallablePageFtitleiconurl_pathdefault StreamlitPagec"t|||||S)uConfigure a page for ``st.navigation`` in a multipage app. Call ``st.Page`` to initialize a ``StreamlitPage`` object, and pass it to ``st.navigation`` to declare a page in your app. When a user navigates to a page, ``st.navigation`` returns the selected ``StreamlitPage`` object. Call ``.run()`` on the returned ``StreamlitPage`` object to execute the page. You can only run the page returned by ``st.navigation``, and you can only run it once per app rerun. A page can be defined by a Python file or ``Callable``. Parameters ---------- page : str, Path, or callable The page source as a ``Callable`` or path to a Python file. If the page source is defined by a Python file, the path can be a string or ``pathlib.Path`` object. Paths can be absolute or relative to the entrypoint file. If the page source is defined by a ``Callable``, the ``Callable`` can't accept arguments. title : str or None The title of the page. If this is ``None`` (default), the page title (in the browser tab) and label (in the navigation menu) will be inferred from the filename or callable name in ``page``. For more information, see `Overview of multipage apps `_. icon : str or None An optional emoji or icon to display next to the page title and label. If ``icon`` is ``None`` (default), no icon is displayed next to the page label in the navigation menu, and a Streamlit icon is displayed next to the title (in the browser tab). If ``icon`` is a string, the following options are valid: - A single-character emoji. For example, you can set ``icon="🚨"`` or ``icon="🔥"``. Emoji short codes are not supported. - An icon from the Material Symbols library (rounded style) in the format ``":material/icon_name:"`` where "icon_name" is the name of the icon in snake case. For example, ``icon=":material/thumb_up:"`` will display the Thumb Up icon. Find additional icons in the `Material Symbols `_ font library. url_path : str or None The page's URL pathname, which is the path relative to the app's root URL. If this is ``None`` (default), the URL pathname will be inferred from the filename or callable name in ``page``. For more information, see `Overview of multipage apps `_. The default page will have a pathname of ``""``, indicating the root URL of the app. If you set ``default=True``, ``url_path`` is ignored. ``url_path`` can't include forward slashes; paths can't include subdirectories. default : bool Whether this page is the default page to be shown when the app is loaded. If ``default`` is ``False`` (default), the page will have a nonempty URL pathname. However, if no default page is passed to ``st.navigation`` and this is the first page, this page will become the default page. If ``default`` is ``True``, then the page will have an empty pathname and ``url_path`` will be ignored. Returns ------- StreamlitPage The page object associated to the given script. Example ------- >>> import streamlit as st >>> >>> def page2(): >>> st.title("Second page") >>> >>> pg = st.navigation([ >>> st.Page("page1.py", title="First page", icon="🔥"), >>> st.Page(page2, title="Second page", icon=":material/favorite:"), >>> ]) >>> pg.run() r)r)pagerrrrs _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/streamlit/navigation/page.pyr r s|  Ex ceZdZdZddddd d dZed dZed dZed dZd d Z ed d Z y)raA page within a multipage Streamlit app. Use ``st.Page`` to initialize a ``StreamlitPage`` object. Attributes ---------- icon : str The icon of the page. If no icon was declared in ``st.Page``, this property returns ``""``. title : str The title of the page. Unless declared otherwise in ``st.Page``, the page title is inferred from the filename or callable name. For more information, see `Overview of multipage apps `_. url_path : str The page's URL pathname, which is the path relative to the app's root URL. Unless declared otherwise in ``st.Page``, the URL pathname is inferred from the filename or callable name. For more information, see `Overview of multipage apps `_. The default page will always have a ``url_path`` of ``""`` to indicate the root URL (e.g. homepage). NFrc||_t}|sy|jj}t |t r t |}t |t r<||z j}|jstd|jdd}d} t |t rt|\} }n/t|drt |j}n | td||_|xs|jdd|_| t#||xs| |_|j j'dk(r td||_|O|j'dk(r |s td |j'd |_d |j(vr td |j$rt#|j$d |_y) Nz!Unable to create Page. The file `z` could not be found.__name__zHCannot infer page title for Callable. Set the `title=` keyword argument._ zKThe title of the page cannot be empty or consist of underscores/spaces onlyzKThe URL path cannot be an empty string unless the page is the default page./z9The URL path cannot contain a nested path (e.g. foo/bar).F)_defaultr pages_managermain_script_parent isinstancestrrresolveis_filernamer hasattrr_pagereplace_titler _iconstrip _url_path_can_be_called) selfrrrrrctx main_path inferred_name inferred_icons r__init__zStreamlitPage.__init__s&  " %%88 dC :D dD !$--/D<<>+7 {BWX  dD !+=d+C (M= T: & .M ] (Z 15  CM$9$9#s$C   "4 (/- ;;   " $'] ,  ~~2%g+a&^^C0DNdnn$+O :: "4:: .%*rc|jS)aThe title of the page. Unless declared otherwise in ``st.Page``, the page title is inferred from the filename or callable name. For more information, see `Overview of multipage apps `_. )r*r/s rrzStreamlitPage.titles{{rc|jS)zmThe icon of the page. If no icon was declared in ``st.Page``, this property returns ``""``. )r+r6s rrzStreamlitPage.icons zzrc6|jrdS|jS)aThe page's URL pathname, which is the path relative to the app's root URL. Unless declared otherwise in ``st.Page``, the URL pathname is inferred from the filename or callable name. For more information, see `Overview of multipage apps `_. The default page will always have a ``url_path`` of ``""`` to indicate the root URL (e.g. homepage). r)rr-r6s rrzStreamlitPage.url_paths]]r66rc|js tdd|_t}|sy|j|j5t |j r|j  dddy|jjt|j }tjd}t|j |jd<t||jdddy#1swYyxYw)aAExecute the page. When a page is returned by ``st.navigation``, use the ``.run()`` method within your entrypoint file to render the page. You can only call this method on the page returned by ``st.navigation``. You can only call this method once per run of your entrypoint file. zbThis page cannot be called directly. Only the page returned from st.navigation can be called once.FN__main____file__)r.rrrun_with_active_hash _script_hashcallabler(r get_page_script_byte_coder#types ModuleType__dict__exec)r/r0codemodules rrunzStreamlitPage.runs""'t $ "   % %d&7&7 8 ( #  ( ($$>>s4::OD%%j1F*-djj/FOOJ ' v ' ( ( (s'C;7A;C;;Dc,t|jS)N)r r-r6s rr=zStreamlitPage._script_hash1s''r) rstr | Path | Callable[[], None]r str | NonerrIrrIrboolreturnNone)rKr#)rKrL) r __module__ __qualname____doc__r4propertyrrrrFr=rrrrsJ!#J*-J* J*  J*  J*J* J*X 7 7(<((r) rrHrrIrrIrrIrrJrKr) __future__rr@pathlibrtypingrstreamlit.errorsrstreamlit.runtime.metrics_utilr7streamlit.runtime.scriptrunner_utils.script_run_contextrstreamlit.source_utilr streamlit.string_utilr streamlit.utilr collections.abcr r rrQrrr\s#  29V48#( _ )_ _  _  _  ___Dp(p(r