Ë
    úmxi½:  ã                  ód  — U d dl mZ d dl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 d dlmZmZ d dlmZ d d	lmZmZmZmZ d d
lmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z& d dl'm(Z( e
rd dl	m)Z) dZ*de+d<   dZ,de+d<   dZ-de+d<   ee.z  Z/de+d<   ed   Z0de+d<   ed   e1z  Z2de+d<   ed   Z3de+d<   ed    Z4de+d!<   ed"   Z5de+d#<   ee3e4e5f   Z6de+d$<   ee6e.dz  f   Z7de+d%<    e8d&«      Z9de+d'<   d0d(„Z:d1d)„Z; e!d*«      	 	 	 	 	 d2	 	 	 	 	 	 	 	 	 	 	 d3d+„«       Z<d4d,„Z=	 	 	 	 	 	 d5d-„Z>d6d.„Z?d7d/„Z@y)8é    )ÚannotationsN)ÚMapping)ÚPath)Údedent)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚ	TypeAliasÚcast)ÚAtomicImageÚimage_to_url)ÚLayoutConfig)Ú StreamlitInvalidMenuItemKeyErrorÚStreamlitInvalidPageLayoutErrorÚ!StreamlitInvalidSidebarStateErrorÚStreamlitInvalidURLError)Ú
ForwardMsg)Ú
PageConfig)Úgather_metrics)Úget_script_run_ctx)Úis_emojiÚvalidate_material_icon)Úis_url)Ú	TypeGuardúget helpr	   ÚGET_HELP_KEYúreport a bugÚREPORT_A_BUG_KEYÚaboutÚ	ABOUT_KEYr   ÚPageIcon)ÚcenteredÚwideÚLayout)ÚautoÚexpandedÚ	collapsedÚInitialSideBarState)zGet helpzGet Helpr   Ú_GetHelp)zReport a bugr   Ú_ReportABug)ÚAboutr    Ú_AboutÚMenuKeyÚ	MenuItemsuÛ  ðŸ”¥â„¢ðŸŽ‰ðŸš€ðŸŒŒðŸ’£âœ¨ðŸŒ™ðŸŽ†ðŸŽ‡ðŸ’¥ðŸ¤©ðŸ¤™ðŸŒ›ðŸ¤˜â¬†ðŸ’¡ðŸ¤ªðŸ¥‚âš¡ðŸ’¨ðŸŒ ðŸŽŠðŸ�¿ðŸ˜›ðŸ”®ðŸ¤ŸðŸŒƒðŸ�ƒðŸ�¾ðŸ’«â–ªðŸŒ´ðŸŽˆðŸŽ¬ðŸŒ€ðŸŽ„ðŸ˜�â˜”â›½ðŸ�‚ðŸ’ƒðŸ˜ŽðŸ�¸ðŸŽ¨ðŸ¥³â˜€ðŸ˜�ðŸ…±ðŸŒžðŸ˜»ðŸŒŸðŸ˜œðŸ’¦ðŸ’…ðŸ¦„ðŸ˜‹ðŸ˜‰ðŸ‘»ðŸ��ðŸ¤¤ðŸ‘¯ðŸŒ»â€¼ðŸŒˆðŸ‘ŒðŸŽƒðŸ’›ðŸ˜šðŸ”«ðŸ™ŒðŸ‘½ðŸ�¬ðŸŒ…â˜�ðŸ�·ðŸ‘­â˜•ðŸŒšðŸ’�ðŸ‘…ðŸ¥°ðŸ�œðŸ˜ŒðŸŽ¥ðŸ•ºâ�•ðŸ§¡â˜„ðŸ’•ðŸ�»âœ…ðŸŒ¸ðŸš¬ðŸ¤“ðŸ�¹Â®â˜ºðŸ’ªðŸ˜™â˜˜ðŸ¤ âœŠðŸ¤—ðŸ�µðŸ¤žðŸ˜‚ðŸ’¯ðŸ˜�ðŸ“»ðŸŽ‚ðŸ’—ðŸ’œðŸŒŠâ�£ðŸŒ�ðŸ˜˜ðŸ’†ðŸ¤‘ðŸŒ¿ðŸ¦‹ðŸ˜ˆâ›„ðŸš¿ðŸ˜ŠðŸŒ¹ðŸ¥´ðŸ˜½ðŸ’‹ðŸ˜­ðŸ–¤ðŸ™†ðŸ‘�âšªðŸ’Ÿâ˜ƒðŸ™ˆðŸ�­ðŸ’»ðŸ¥€ðŸš—ðŸ¤§ðŸ��ðŸ’ŽðŸ’“ðŸ¤�ðŸ’„ðŸ’–ðŸ”žâ�‰â�°ðŸ•ŠðŸŽ§â˜ â™¥ðŸŒ³ðŸ�¾ðŸ™‰â­�ðŸ’ŠðŸ�³ðŸŒŽðŸ™ŠðŸ’¸â�¤ðŸ”ªðŸ˜†ðŸŒ¾âœˆðŸ“šðŸ’€ðŸ� âœŒðŸ�ƒðŸŒµðŸš¨ðŸ’‚ðŸ¤«ðŸ¤­ðŸ˜—ðŸ˜„ðŸ�’ðŸ‘�ðŸ™ƒðŸ––ðŸ’žðŸ˜…ðŸŽ…ðŸ�„ðŸ†“ðŸ‘‰ðŸ’©ðŸ”ŠðŸ¤·âŒšðŸ‘¸ðŸ˜‡ðŸš®ðŸ’�ðŸ‘³ðŸ�½ðŸ’˜ðŸ’¿ðŸ’‰ðŸ‘ ðŸŽ¼ðŸŽ¶ðŸŽ¤ðŸ‘—â�„ðŸ”�ðŸŽµðŸ¤’ðŸ�°ðŸ‘“ðŸ�„ðŸŒ²ðŸŽ®ðŸ™‚ðŸ“ˆðŸš™ðŸ“�ðŸ˜µðŸ—£â�—ðŸŒºðŸ™„ðŸ‘„ðŸš˜ðŸ¥ºðŸŒ�ðŸ�¡â™¦ðŸ’�ðŸŒ±ðŸ‘‘ðŸ‘™â˜‘ðŸ‘¾ðŸ�©ðŸ¥¶ðŸ“£ðŸ�¼ðŸ¤£â˜¯ðŸ‘µðŸ�«âž¡ðŸŽ€ðŸ˜ƒâœ‹ðŸ�žðŸ™‡ðŸ˜¹ðŸ™�ðŸ‘¼ðŸ��âš«ðŸŽ�ðŸ�ªðŸ”¨ðŸŒ¼ðŸ‘†ðŸ‘€ðŸ˜³ðŸŒ�ðŸ“–ðŸ‘ƒðŸŽ¸ðŸ‘§ðŸ’‡ðŸ”’ðŸ’™ðŸ˜žâ›…ðŸ�»ðŸ�´ðŸ˜¼ðŸ—¿ðŸ�—â™ ðŸ¦�âœ”ðŸ¤–â˜®ðŸ�¢ðŸ�ŽðŸ’¤ðŸ˜€ðŸ�ºðŸ˜�ðŸ˜´ðŸ“ºâ˜¹ðŸ˜²ðŸ‘�ðŸŽ­ðŸ’šðŸ�†ðŸ�‹ðŸ”µðŸ��ðŸ”´ðŸ””ðŸ§�ðŸ‘°â˜ŽðŸ�†ðŸ¤¡ðŸ� ðŸ“²ðŸ™‹ðŸ“ŒðŸ�¬âœ�ðŸ”‘ðŸ“±ðŸ’°ðŸ�±ðŸ’§ðŸŽ“ðŸ�•ðŸ‘ŸðŸ�£ðŸ‘«ðŸ�‘ðŸ˜¸ðŸ�¦ðŸ‘�ðŸ†—ðŸŽ¯ðŸ“¢ðŸš¶ðŸ¦…ðŸ�§ðŸ’¢ðŸ�€ðŸš«ðŸ’‘ðŸ�ŸðŸŒ½ðŸ�ŠðŸ�ŸðŸ’�ðŸ’²ðŸ��ðŸ�¥ðŸ�¸â˜�â™£ðŸ‘Šâš“â�ŒðŸ�¯ðŸ�ˆðŸ“°ðŸŒ§ðŸ‘¿ðŸ�³ðŸ’·ðŸ�ºðŸ“žðŸ†’ðŸ�€ðŸ¤�ðŸš²ðŸ�”ðŸ‘¹ðŸ™�ðŸŒ·ðŸ™ŽðŸ�¥ðŸ’µðŸ”�ðŸ“¸âš â�“ðŸŽ©âœ‚ðŸ�¼ðŸ˜‘â¬‡âš¾ðŸ�ŽðŸ’”ðŸ�”âš½ðŸ’­ðŸ�ŒðŸ�·ðŸ��âœ–ðŸ�‡ðŸ“�ðŸ�ŠðŸ�™ðŸ‘‹ðŸ¤”ðŸ¥ŠðŸ—½ðŸ�‘ðŸ�˜ðŸ�°ðŸ’�ðŸ�´â™€ðŸ�¦ðŸ�“âœ�ðŸ‘‚ðŸ�´ðŸ‘‡ðŸ†˜ðŸ˜¡ðŸ�‰ðŸ‘©ðŸ’ŒðŸ˜ºâœ�ðŸ�¼ðŸ�’ðŸ�¶ðŸ‘ºðŸ–•ðŸ‘¬ðŸ�‰ðŸ�»ðŸ�¾â¬…â�¬â–¶ðŸ‘®ðŸ�Œâ™‚ðŸ”¸ðŸ‘¶ðŸ�®ðŸ‘ªâ›³ðŸ��ðŸŽ¾ðŸ�•ðŸ‘´ðŸ�¨ðŸ�ŠðŸ”¹Â©ðŸŽ£ðŸ‘¦ðŸ‘£ðŸ‘¨ðŸ‘ˆðŸ’¬â­•ðŸ“¹ðŸ“·ÚRANDOM_EMOJISc                ó    — | j                  «       D ��ci c]-  \  }}t        |«      j                  «       j                  «       |“Œ/ c}}S c c}}w ©N)ÚitemsÚstrÚlowerÚstrip)ÚdictÚkÚvs      úU/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/commands/page_config.pyÚ_lower_clean_dict_keysr;   ;   s8   € Ø26·*±*³,×?©$¨!¨QŒC�‹F�L‰L‹N× Ñ Ó" AÑ%Ó?Ð?ùÓ?s   ”2A
c                ój  — | dk(  r
t        «       S t        | t        «      rt        | «      rd| › �S t        | t        «      r| j	                  d«      rt        | «      S t        | t        «      rt        | «      } 	 t        | t        d¬«      dddd	¬
«      S # t        $ r t        | t        «      r| cY S ‚ w xY w)a  Return the string to pass to the frontend to have it show
    the given PageIcon.

    If page_icon is a string that looks like an emoji (or an emoji shortcode),
    we return it as-is. Otherwise we use `image_to_url` to return a URL.

    (If `image_to_url` raises an error and page_icon is a string, return
    the unmodified page_icon string instead of re-raising the error.)
    Úrandomzemoji:z	:materialÚstretch)ÚwidthFÚRGBr&   Úfavicon)Úlayout_configÚclampÚchannelsÚoutput_formatÚimage_id)
Úget_random_emojiÚ
isinstancer4   r   Ú
startswithr   r   r   r   Ú	Exception)Ú	page_icons    r:   Ú_get_favicon_stringrL   ?   sÀ   € ð �HÒÜÓ!Ð!ô �)œSÔ!¤h¨yÔ&9Ø˜	�{Ð#Ð#ä�)œSÔ! i×&:Ñ&:¸;Ô&GÜ% iÓ0Ð0ô �)œTÔ"Ü˜	“Nˆ	ðÜØÜ&Øôð ØØ Øô	
ð 		
øô ò Ü�i¤Ô%ð ÒØðús   Á8B ÂB2Â0B2Úset_page_configc                óx  — t        «       }| �| |j                  _        |�t        |«      |j                  _        |dk(  rt
        j                  }n5|dk(  rt
        j                  }n|€t
        j                  }nt        |¬«      ‚||j                  _
        |dk(  rt
        j                  }nœ|dk(  rt
        j                  }n†|dk(  rt
        j                  }np|€t
        j                  }n]t        |t         «      rA|dk  rt#        d	|› d
�¬«      ‚t
        j                  }||j                  j$                  _        nt#        |¬«      ‚||j                  _        |�Bt+        dt-        |«      «      }t/        |«       |j                  j0                  }	t3        ||	«       t5        «       }
|
€y|
j7                  |«       y)uÚ  
    Configure the default settings of the page.

    This command can be called multiple times in a script run to dynamically
    change the page configuration. The calls are additive, with each successive
    call overriding only the parameters that are specified.

    Parameters
    ----------
    page_title: str or None
        The page title, shown in the browser tab. If this is ``None``
        (default), the page title is inherited from the previous call of
        ``st.set_page_config``. If this is ``None`` and no previous call
        exists, the page title is inferred from the page source.

        If a page source is a Python file, its inferred title is derived from
        the filename. If a page source is a callable object, its inferred title
        is derived from the callable's name.

    page_icon : Anything supported by st.image (except list), str, or None
        The page favicon. If ``page_icon`` is ``None`` (default), the page icon
        is inherited from the previous call of ``st.set_page_config``. If this
        is ``None`` and no previous call exists, the favicon is a monochrome
        Streamlit logo.

        In addition to the types supported by |st.image|_ (except list), the
        following strings are valid:

        - A single-character emoji. For example, you can set ``page_icon="ðŸ¦ˆ"``.

        - An emoji short code. For example, you can set ``page_icon=":shark:"``.
          For a list of all supported codes, see
          https://share.streamlit.io/streamlit/emoji-shortcodes.

        - The string literal, ``"random"``. You can set ``page_icon="random"``
          to set a random emoji from the supported list above.

        - 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, ``page_icon=":material/thumb_up:"`` will display the
          Thumb Up icon. Find additional icons in the `Material Symbols           <https://fonts.google.com/icons?icon.set=Material+Symbols&icon.style=Rounded>`_
          font library.

        .. note::
            Colors are not supported for Material icons. When you use a
            Material icon for favicon, it will be black, regardless of browser
            theme.

        .. |st.image| replace:: ``st.image``
        .. _st.image: https://docs.streamlit.io/develop/api-reference/media/st.image

    layout: "centered", "wide", or None
        Layout of the page content. The following layouts are supported:

        - ``None`` (default): The page layout is inherited from the previous
          call of ``st.set_page_config``. If no previous call exists, the page
          layout is ``"centered"``.
        - ``"centered"``: Page elements are constrained to a centered column of
          fixed width.
        - ``"wide"``: Page elements use the entire screen width.

    initial_sidebar_state: "auto", "expanded", "collapsed", int, or None
        Initial state of the sidebar. The following states are supported:

        - ``None`` (default): The sidebar state is inherited from the previous
          call of ``st.set_page_config``. If no previous call exists, the
          sidebar state is ``"auto"``.
        - ``"auto"``: The sidebar is hidden on small devices and shown
          otherwise.
        - ``"expanded"``: The sidebar is shown initially.
        - ``"collapsed"``: The sidebar is hidden initially.
        - ``int``: The sidebar will use ``"auto"`` behavior but start with the
          specified width in pixels. The width must be between 200 and 600
          pixels, inclusive.

        In most cases, ``"auto"`` provides the best user experience across
        devices of different sizes.

    menu_items: dict
        Configure the menu that appears on the top-right side of this app.
        The keys in this dict denote the menu item to configure. The following
        keys can have string or ``None`` values:

        - "Get help": The URL this menu item should point to.
        - "Report a Bug": The URL this menu item should point to.
        - "About": A markdown string to show in the About dialog.

        A URL may also refer to an email address e.g. ``mailto:john@example.com``.

        If you do not include a key, its menu item will be hidden (unless it
        was set by a previous call to ``st.set_page_config``). To remove an
        item that was specified in a previous call to ``st.set_page_config``,
        set its value to ``None`` in the dictionary.

    Example
    -------
    >>> import streamlit as st
    >>>
    >>> st.set_page_config(
    ...     page_title="Ex-stream-ly Cool App",
    ...     page_icon="ðŸ§Š",
    ...     layout="wide",
    ...     initial_sidebar_state="expanded",
    ...     menu_items={
    ...         'Get Help': 'https://www.extremelycoolapp.com/help',
    ...         'Report a bug': "https://www.extremelycoolapp.com/bug",
    ...         'About': "# This is a header. This is an *extremely* cool app!"
    ...     }
    ... )
    Nr#   r$   )Úlayoutr&   r'   r(   r   zwidth must be positive (got ú))Úinitial_sidebar_stater/   )ÚForwardProtoÚpage_config_changedÚtitlerL   rA   ÚPageConfigProtoÚCENTEREDÚWIDEÚLAYOUT_UNSETr   rO   ÚAUTOÚEXPANDEDÚ	COLLAPSEDÚSIDEBAR_UNSETrH   Úintr   Úinitial_sidebar_widthÚpixel_widthrQ   r   r;   Úvalidate_menu_itemsÚ
menu_itemsÚset_menu_items_protor   Úenqueue)Ú
page_titlerK   rO   rQ   ra   ÚmsgÚ	pb_layoutÚpb_sidebar_stateÚlowercase_menu_itemsÚmenu_items_protoÚctxs              r:   rM   rM   n   s¯  € ôt ‹.€CàÐØ(2ˆ×ÑÔ%àÐÜ*=¸iÓ*Hˆ×ÑÔ'ð �ÒÜ#×,Ñ,‰	Ø	�6Ò	Ü#×(Ñ(‰	Ø	ˆä#×0Ñ0‰	ô .°VÔ<Ð<à%.€C×ÑÔ"ð  Ò&Ü*×/Ñ/ÑØ	 *Ò	,Ü*×3Ñ3ÑØ	 +Ò	-Ü*×4Ñ4ÑØ	Ð	&ä*×8Ñ8ÑÜ	Ð)¬3Ô	/à  AÒ%Ü3Ø(DÐEZÐD[Ð[\Ð&]ôð ô +×/Ñ/Ðà!ð 	×Ñ×5Ñ5ÕAô
 0Ø"7ô
ð 	
ð 5E€C×ÑÔ1àÐÜ# KÔ1GÈ
Ó1SÓTÐÜÐ0Ô1Ø×2Ñ2×=Ñ=ÐÜÐ1Ð3CÔDä
Ó
€CØ
€{ØØ‡K�K�Õó    c                 ó4   — t        j                  t        «      S r2   )r=   Úchoicer0   © rk   r:   rG   rG   &  s   € ä�=‰=œÓ'Ð'rk   c                ó
  — t         | v r| t            �| t            |_        nd|_        t        | v r| t           �| t           |_        nd|_        t        | v r-| t           �t        | t           xs d«      |_        y d|_	        y y )NTÚ )
r   Úget_help_urlÚhide_get_helpr   Úreport_a_bug_urlÚhide_report_a_bugr!   r   Úabout_section_mdÚclear_about_md)rh   ri   s     r:   rb   rb   +  s›   € ô Ð+Ñ+Ø¤Ñ-Ð9Ø,@ÄÑ,NÐÕ)à-1ÐÔ*äÐ/Ñ/ØÔ 0Ñ1Ð=Ø0DÔEUÑ0VÐÕ-à15ÐÔ.äÐ(Ñ(Ø¤	Ñ*Ð6Ü06Ø$¤YÑ/Ò5°2ó1ÐÕ-ð
 /3ÐÕ+ð )rk   c                ó¬   — | j                  «       D ]A  \  }}t        |«      st        |¬«      ‚|€Œ t        |d«      rŒ-|t        k7  sŒ7t        |¬«      ‚ y )N©Úkey)ÚhttpÚhttpsÚmailto)Úurl)r3   Úvalid_menu_item_keyr   r   r!   r   )ra   r8   r9   s      r:   r`   r`   D  sR   € Ø× Ñ Ó"ò 2‰ˆˆ1Ü" 1Ô%Ü2°qÔ9Ð9Ø‰=Ü�qÐ5Õ6¸1Ä	»>ä*¨qÔ1Ð1ñ2rk   c                ó(   — | t         t        t        hv S r2   )r   r   r!   rx   s    r:   r~   r~   N  s   € Ø”<Ô!1´9Ð=Ð=Ð=rk   )r7   r/   Úreturnzdict[str, Any])rK   r"   r€   r4   )NNNNN)rd   z
str | NonerK   zPageIcon | NonerO   zLayout | NonerQ   zInitialSideBarState | Nonera   zMenuItems | Noner€   ÚNone)r€   r4   )rh   r/   ri   zPageConfigProto.MenuItemsr€   r�   )ra   r/   r€   r�   )ry   r4   r€   zTypeGuard[MenuKey])AÚ
__future__r   r=   Úcollections.abcr   Úpathlibr   Útextwrapr   Útypingr   r   r	   r
   r   r   Ú"streamlit.elements.lib.image_utilsr   r   Ú#streamlit.elements.lib.layout_utilsr   Ústreamlit.errorsr   r   r   r   Ústreamlit.proto.ForwardMsg_pb2r   rR   Ústreamlit.proto.PageConfig_pb2r   rU   Ústreamlit.runtime.metrics_utilr   Ú7streamlit.runtime.scriptrunner_utils.script_run_contextr   Ústreamlit.string_utilr   r   Ústreamlit.url_utilr   r   r   Ú__annotations__r   r!   r4   r"   r%   r]   r)   r*   r+   r-   r.   r/   Úlistr0   r;   rL   rM   rG   rb   r`   r~   rn   rk   r:   ú<module>r’      s²  ðö #ã Ý #Ý Ý ß F× Fç HÝ <÷ó õ FÝ HÝ 9Ý Vß BÝ %áÝ à €ˆeÓ  Ø(Ð �%Ó (Ø€	ˆ5Ó à! CÑ'€ˆ)Ó 'ØÐ.Ñ/€ˆ	Ó /Ø!(Ð)HÑ!IÈCÑ!OÐ �YÓ OØÐ@ÑA€ˆ)Ó AØ Ð!?Ñ@€ˆYÓ @ØÐ,Ñ-€ˆ	Ó -Ø˜X {°FÐ:Ñ;€ˆÓ ;Ø˜w¨¨d©
Ð2Ñ3€	ˆ9Ó 3áð bó€ˆuó ó
@ó,ñ^ Ð!Ó"à!Ø!%Ø Ø8<Ø#'ðtØðtàðtð ðtð 6ð	tð
 !ðtð 
òtó #ðtón(ð
3Ø#ð3Ø7Pð3à	ó3ó22ô>rk   