Ë
    úmxi†  ã                  óº   — U d dl mZ d dlmZmZmZ d dlZd dlZ	d dl
mZ d dlmZmZ erd dlmZ  ee«      Zded<    G d	„ d
ej(                  j*                  «      Zy)é    )Úannotations)ÚTYPE_CHECKINGÚFinalÚcastN)Ú
get_logger)Úbuild_safe_abspathÚguess_content_type)ÚBaseComponentRegistryr   Ú_LOGGERc                  óX   — e Zd Zd	d„Zd
d„Zd
d„Zdd„Zdd„Zedd„«       Z	edd„«       Z
y)ÚComponentRequestHandlerc                ó   — || _         y )N)Ú	_registry)ÚselfÚregistrys     úe/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/web/server/component_request_handler.pyÚ
initializez"ComponentRequestHandler.initialize#   s	   € Ø!ˆ�ó    c                óö  — |j                  d«      }|d   }| j                  j                  |«      }|€#| j                  d«       | j	                  d«       y dj                  |dd  «      }t        ||«      }|€#| j                  d«       | j	                  d«       y 	 t        |d«      5 }|j                  «       }d d d «       | j                  «       | j                  d| j                  |«      «       | j                  |«       y # 1 sw Y   ŒMxY w# t        $ r] |j                  d	d
«      j                  dd
«      }	t        j                  d|	«       | j                  d«       | j	                  d«       Y y w xY w)Nú/r   z	not foundi”  é   Ú	forbiddeni“  Úrbú
Ú úz*ComponentRequestHandler: GET %s read errorz
read errorzContent-Type)Úsplitr   Úget_component_pathÚwriteÚ
set_statusÚjoinr   ÚopenÚreadÚOSErrorÚreplacer   Ú	exceptionÚ
set_headerÚget_content_typeÚset_extra_headers)
r   ÚpathÚpartsÚcomponent_nameÚcomponent_rootÚfilenameÚabspathÚfileÚcontentsÚsanitized_abspaths
             r   ÚgetzComponentRequestHandler.get&   sR  € Ø—
‘
˜3“ˆØ˜q™ˆØŸ™×:Ñ:¸>ÓJˆØÐ!Ø�J‰J�{Ô#Ø�O‰O˜CÔ Øð —8‘8˜E ! "˜IÓ&ˆÜ$ ^°XÓ>ˆØˆ?Ø�J‰J�{Ô#Ø�O‰O˜CÔ Øð
	Ü�g˜tÓ$ð '¨ØŸ9™9›;�÷'ð 	�
‰
�8ÔØ�‰˜¨×(=Ñ(=¸gÓ(FÔGà×Ñ˜tÕ$÷'ð 'ûäò 	Ø '§¡°°bÓ 9× AÑ AÀ$ÈÓ KÐÜ×ÑØ<Ð>Oôð �J‰J�|Ô$Ø�O‰O˜CÔ Ùð	ús+   ÂD Â)DÂ:D ÄDÄD ÄA#E8Å7E8c                ó�   — t        |«      dk(  }|s|j                  d«      r| j                  dd«       y| j                  dd«       y)z–Disable cache for HTML files.

        Other assets like JS and CSS are suffixed with their hash, so they can
        be cached indefinitely.
        r   z.htmlzCache-Controlzno-cacheÚpublicN)ÚlenÚendswithr'   )r   r*   Úis_index_urls      r   r)   z)ComponentRequestHandler.set_extra_headersG   s;   € ô ˜4“y A‘~ˆá˜4Ÿ=™=¨Ô1Ø�O‰O˜O¨ZÕ8à�O‰O˜O¨XÕ6r   c                óx  — t         j                  j                  j                  j	                  «       r| j                  dd«       y t         j                  j                  j                  j                  | j                  j                  j                  d«      x}«      r| j                  dt        d|«      «       y y )NzAccess-Control-Allow-OriginÚ*ÚOriginÚstr)Ú	streamlitÚwebÚserverÚroutesÚallow_all_cross_origin_requestsr'   Úis_allowed_originÚrequestÚheadersr3   r   )r   Úorigins     r   Úset_default_headersz+ComponentRequestHandler.set_default_headersT   s…   € Ü�=‰=×Ñ×&Ñ&×FÑFÔHØ�O‰OÐ9¸3Õ?Ü�]‰]×!Ñ!×(Ñ(×:Ñ:Ø—l‘l×*Ñ*×.Ñ.¨xÓ8Ð8ˆFô
ð �O‰OÐ9¼4ÀÀvÓ;NÕOð
r   c                óF   — | j                  d«       | j                  «        y)z+/OPTIONS handler for preflight CORS checks.éÌ   N)r    Úfinish)r   s    r   ÚoptionszComponentRequestHandler.options\   s   € à�‰˜ÔØ�‰�r   c                ó   — t        | «      S )zuReturns the ``Content-Type`` header to be used for this request.
        From tornado.web.StaticFileHandler.
        )r	   )r/   s    r   r(   z(ComponentRequestHandler.get_content_typea   s   € ô
 " 'Ó*Ð*r   c                ó   — d| › �S )z6Return the URL for a component file with the given ID.zcomponents/© )Úfile_ids    r   Úget_urlzComponentRequestHandler.get_urlh   s   € ð ˜W˜IÐ&Ð&r   N)r   r
   ÚreturnÚNone)r*   r<   rP   rQ   )rP   rQ   )r/   r<   rP   r<   )rN   r<   rP   r<   )Ú__name__Ú
__module__Ú__qualname__r   r3   r)   rF   rJ   Ústaticmethodr(   rO   rM   r   r   r   r   "   sE   „ ó"ó%óB7óPóð
 ò+ó ð+ð ò'ó ñ'r   r   )Ú
__future__r   Útypingr   r   r   Útornado.webÚtornadoÚstreamlit.web.server.routesr=   Ústreamlit.loggerr   Ú)streamlit.web.server.component_file_utilsr   r	   Ú2streamlit.components.types.base_component_registryr
   rR   r   Ú__annotations__r>   ÚRequestHandlerr   rM   r   r   ú<module>r`      sM   ðö #ç -Ñ -ã ã "Ý '÷ñ
 ÝXá˜HÓ%€ˆÓ %ôI'˜gŸk™k×8Ñ8õ I'r   