o
    h9                     @  sp   d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 er,d dl
mZ d dlmZmZ G dd	 d	ejjZdS )
    )annotations)TYPE_CHECKINGN)allow_cross_origin_requests) emit_endpoint_deprecation_notice	MetricSet)	CacheStatStatsManagerc                   @  sL   e Zd ZdddZdd Z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   ^/var/www/vscode/kcb/lib/python3.10/site-packages/streamlit/web/server/stats_request_handler.py
initialize   s   
zStatsRequestHandler.initializec                 C  s   t  r| dd d S d S )NzAccess-Control-Allow-Origin*)r   
set_headerr   r   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finishr   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)requesturir   r   	get_statsheadersget_listwrite_stats_to_protoSerializeToStringr   r   _stats_to_text)r   statsr   r   r   get*   s   
zStatsRequestHandler.getr(   list[CacheStat]strc                 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>D   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_protor2   )r(   r:   r9   
metric_setmetric_familyr.   metric_protor   r   r   r%   I   s   

z#StatsRequestHandler._stats_to_protoN)r   r	   r   r   )r   r   )r(   r*   r   r+   )r(   r*   r   r9   )
__name__
__module____qualname__r   r   r   r)   staticmethodr'   r%   r   r   r   r   r
      s    

r
   )
__future__r   typingr   tornado.webtornadostreamlit.web.serverr    streamlit.web.server.server_utilr   r=   r   r9   streamlit.runtime.statsr   r	   webRequestHandlerr
   r   r   r   r   <module>   s   