o
    hF                     @  sn   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 dlmZmZmZmZ G dd dZd	S )
    )annotations)Path)TYPE_CHECKINGAny)calc_md5)ScriptCache)PageHashPageInfoPageName
ScriptPathc                   @  s   e Zd ZU dZdZded< 	d9d:d	d
Zed;ddZed<ddZ	ed=ddZ
ed=ddZed>ddZed?ddZd@ddZdAd!d"ZdBd%d&ZdCd(d)ZdDd+d,ZdEd.d/ZdFdGd2d3ZdHd7d8ZdS )IPagesManagera  
    PagesManager is responsible for managing the set of pages that make up
    the entire application. At the start we assume the main script is the
    only page. As the script runs, the main script can call `st.navigation`
    to set the set of pages that make up the app.
    Nzbool | Noneuses_pages_directorymain_script_pathr   script_cacheScriptCache | Nonec                 K  sT   || _ t|| _|| _d | _d | _d| _d | _tj	d u r(t
| jd  t_	d S d S )N pages)_main_script_pathr   _main_script_hash_script_cache_intended_page_script_hash_intended_page_name_current_page_script_hash_pagesr   r   r   main_script_parentexists)selfr   r   kwargs r   S/var/www/vscode/kcb/lib/python3.10/site-packages/streamlit/runtime/pages_manager.py__init__%   s   

	zPagesManager.__init__returnc                 C     | j S N)r   r   r   r   r   r   ?      zPagesManager.main_script_pathr   c                 C  s   t | jjS r#   )r   r   parentr$   r   r   r   r   C   s   zPagesManager.main_script_parentr   c                 C  r"   r#   )r   r$   r   r   r   main_script_hashG   r%   zPagesManager.main_script_hashc                 C  r"   r#   r   r$   r   r   r   current_page_script_hashK   r%   z%PagesManager.current_page_script_hashPageName | Nonec                 C  r"   r#   )r   r$   r   r   r   intended_page_nameO   r%   zPagesManager.intended_page_namePageHash | Nonec                 C  r"   r#   )r   r$   r   r   r   intended_page_script_hashS   r%   z&PagesManager.intended_page_script_hashpage_script_hashNonec                 C  
   || _ d S r#   r(   )r   r.   r   r   r   set_current_page_script_hashW      
z)PagesManager.set_current_page_script_hashr	   c                 C  s   | j | jdS N)script_pathr.   )r   r   r$   r   r   r   get_main_pageZ   s   zPagesManager.get_main_page	page_namer
   c                 C  s   || _ || _d S r#   )r   r   r   r.   r6   r   r   r   set_script_intent`   s   
zPagesManager.set_script_intentPageInfo | Nonec                 C  s   | j |p| jdS r3   )r   r'   r7   r   r   r   get_initial_active_scriptf   s   z&PagesManager.get_initial_active_scriptdict[PageHash, PageInfo]c                 C  s(   | j p| j| jp	d| jpdd| jdiS )Nr   )r.   r6   iconr4   )r   r'   r-   r+   r   r$   r   r   r   	get_pagesp   s   zPagesManager.get_pagesr   c                 C  r0   r#   )r   )r   r   r   r   r   	set_pages}   r2   zPagesManager.set_pagesr   fallback_page_hashc                   s`    j d u rd S  jr j  j j |d S  jr)tt fdd j  d S  j |d S )Nc                   s   | o| d  j kS )Nurl_pathname)r+   )pr$   r   r   <lambda>   s    z.PagesManager.get_page_script.<locals>.<lambda>)r   r-   getr+   nextfiltervalues)r   r?   r   r$   r   get_page_script   s    

zPagesManager.get_page_scriptr4   strr   c                 C  s   | j d u rdS | j |S )Nr   )r   get_bytecode)r   r4   r   r   r   get_page_script_byte_code   s   
z&PagesManager.get_page_script_byte_coder#   )r   r   r   r   )r!   r   )r!   r   )r!   r   )r!   r*   )r!   r,   )r.   r   r!   r/   )r!   r	   )r.   r   r6   r
   r!   r/   )r.   r   r6   r
   r!   r9   )r!   r;   )r   r;   r!   r/   )r   )r?   r   r!   r9   )r4   rH   r!   r   )__name__
__module____qualname____doc__r   __annotations__r    propertyr   r   r'   r)   r+   r-   r1   r5   r8   r:   r=   r>   rG   rJ   r   r   r   r   r      s2   
 






r   N)
__future__r   pathlibr   typingr   r   streamlit.utilr   +streamlit.runtime.scriptrunner.script_cacher   streamlit.source_utilr   r	   r
   r   r   r   r   r   r   <module>   s   