
    &eR                     ~    d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ  G d dej        j                  ZdS )	    )ListN)GAUGE)	MetricSet)	CacheStatStatsManager) emit_endpoint_deprecation_noticec                       e Zd ZdeddfdZd Zd ZddZede	e
         defd	            Zede	e
         defd
            ZdS )StatsRequestHandlerstats_managerreturnNc                     || _         d S N)_manager)selfr   s     Jlib/python3.11/site-packages/streamlit/web/server/stats_request_handler.py
initializezStatsRequestHandler.initialize   s    %    c                 V    ddl m}  |            r|                     dd           d S d S )Nr   )allow_cross_origin_requestszAccess-Control-Allow-Origin*)streamlit.web.serverr   
set_header)r   r   s     r   set_default_headersz'StatsRequestHandler.set_default_headers   sM    DDDDDD&&(( 	@OO93?????	@ 	@r   c                 X    |                      d           |                                  dS )z+/OPTIONS handler for preflight CORS checks.   N)
set_statusfinish)r   s    r   optionszStatsRequestHandler.options$   s%    r   c                 r   | j         j        rd| j         j        vrt          | d           | j                                        }d| j         j                            d          v rg|                     |                     |          	                                           | 
                    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)requesturir   r   	get_statsheadersget_listwrite_stats_to_protoSerializeToStringr   r   _stats_to_text)r   statss     r   getzStatsRequestHandler.get)   s   < 	P
$,2B B B,T<NOOOO'')) $t|';'D'DX'N'NNNJJt++E22DDFFGGGOON,DEEEOOC     JJt**4=+B+B+D+DEEFFFOON,JKKKOOC     r   r,   c                     d}d}d}d}|||g}|                     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              3   >   K   | ]}|                                 V  d S r   )to_metric_str).0stats     r   	<genexpr>z5StatsRequestHandler._stats_to_text.<locals>.<genexpr>C   s.      ==td((**======r   
)extendappendjoin)r,   metric_typemetric_unitmetric_helpopenmetrics_eofresults         r   r+   z"StatsRequestHandler._stats_to_text:   si    77@# {K8==u======o&&&yy   r   c                 L   t                      }|j                                        }d|_        t          |_        d|_        d|_        | D ]0}|j                                        }|	                    |           1t                      }|j        
                    |           |S )Ncache_memory_bytesbytesz!Total memory consumed by a cache.)MetricSetProtometric_familiesaddnamer   typeunithelpmetricsmarshall_metric_protor6   )r,   
metric_setmetric_familyr2   metric_protos        r   r)   z#StatsRequestHandler._stats_to_protoH   s    #%%
"266881"$@ 	5 	5D(04466L&&|4444#%%
"))-888r   )r   N)__name__
__module____qualname__r   r   r   r   r-   staticmethodr   r   strr+   r@   r)    r   r   r
   r
      s        & & & & & &@ @ @  
! ! ! !" !d9o !# ! ! ! \! tI >    \  r   r
   )typingr   tornado.webtornado*streamlit.proto.openmetrics_data_model_pb2r   r   r@   streamlit.runtime.statsr   r    streamlit.web.server.server_utilr   webRequestHandlerr
   rQ   r   r   <module>rZ      s              < < < < < < R R R R R R ; ; ; ; ; ; ; ; M M M M M M? ? ? ? ?'+4 ? ? ? ? ?r   