o
    ,&]i                     @  sx   d dl mZ d dlmZmZ d dlZd dlmZm	Z	 d dl
mZ er0d dlmZ d dlmZmZ G dd	 d	ejjZdS )
    )annotations)TYPE_CHECKINGcastN)allow_all_cross_origin_requestsis_allowed_origin) emit_endpoint_deprecation_notice	MetricSet)	CacheStatStatsManagerc                   @  sP   e Zd ZdddZdddZdd	d
ZdddZedddZedddZ	dS )StatsRequestHandlerstats_managerr   returnNonec                 C  s
   || _ d S N)_manager)selfr    r   h/var/www/html/IGF-ODF-V3/venv/lib/python3.10/site-packages/streamlit/web/server/stats_request_handler.py
initialize   s   
zStatsRequestHandler.initializec                 C  sF   t  r| dd d S t| jjd }r!| dtd| d S d S )NzAccess-Control-Allow-Origin*Originstr)r   
set_headerr   requestheadersgetr   )r   originr   r   r   set_default_headers!   s
   z'StatsRequestHandler.set_default_headersc                 C  s   |  d |   dS )z+/OPTIONS handler for preflight CORS checks.   N)
set_statusfinish)r   r   r   r   options'   s   
zStatsRequestHandler.optionsc                 C  s   | j jrd| j jvrt| dd | j }d| j jdv r5| | |	  | 
dd | d d S | | | j  | 
dd | d d S )	Nz_stcore/z/_stcore/metrics)new_pathzapplication/x-protobufAcceptzContent-Type   zapplication/openmetrics-text)r   urir   r   	get_statsr   get_listwrite_stats_to_protoSerializeToStringr   r    _stats_to_text)r   statsr   r   r   r   ,   s   
zStatsRequestHandler.getr-   list[CacheStat]r   c                 C  sB   d}d}d}d}|||g}| dd | D  || d|S )Nz# TYPE cache_memory_bytes gaugez# UNIT cache_memory_bytes bytesz(# HELP Total memory consumed by a cache.z# EOF
c                 s  s    | ]}|  V  qd S r   )to_metric_str).0statr   r   r   	<genexpr>F   s    z5StatsRequestHandler._stats_to_text.<locals>.<genexpr>
)extendappendjoin)r-   metric_typemetric_unitmetric_helpopenmetrics_eofresultr   r   r   r,   =   s   


z"StatsRequestHandler._stats_to_textMetricSetProtoc                 C  st   ddl m} ddl m} | }|j }d|_||_d|_d|_| D ]}|j	 }|
| q"| }|j| |S )Nr   )GAUGEr   cache_memory_bytesbytesz!Total memory consumed by a cache.)*streamlit.proto.openmetrics_data_model_pb2r=   r	   metric_familiesaddnametypeunithelpmetricsmarshall_metric_protor5   )r-   r=   r<   
metric_setmetric_familyr1   metric_protor   r   r   r*   K   s   

z#StatsRequestHandler._stats_to_protoN)r   r   r   r   )r   r   )r-   r.   r   r   )r-   r.   r   r<   )
__name__
__module____qualname__r   r   r"   r   staticmethodr,   r*   r   r   r   r   r      s    



r   )
__future__r   typingr   r   tornado.webtornadostreamlit.web.serverr   r    streamlit.web.server.server_utilr   r@   r	   r<   streamlit.runtime.statsr
   r   webRequestHandlerr   r   r   r   r   <module>   s   