Ë
    úmxiü.  ã                  ó@  — U d dl mZ d dlZd dlmZmZmZmZmZ dZ	de
d<   dZde
d<   d	Zde
d
<   dZde
d<   erd dlmZmZ d dlmZ d dlmZ e G d„ de«      «       Z G d„ de«      Zdd„Z G d„ de«      Z G d„ de«      Zdd„Ze G d„ de«      «       Z G d„ d«      Zy) é    )ÚannotationsN)ÚTYPE_CHECKINGÚFinalÚ
NamedTupleÚProtocolÚruntime_checkableÚcache_memory_bytesr   ÚCACHE_MEMORY_FAMILYÚsession_events_totalÚSESSION_EVENTS_FAMILYÚsession_duration_seconds_totalÚSESSION_DURATION_FAMILYÚactive_sessionsÚACTIVE_SESSIONS_FAMILY)ÚMappingÚSequence)ÚMetric)Ú
MetricTypec                  óh   — e Zd ZdZed	d„«       Zed	d„«       Zed	d„«       Zed	d„«       Zd	d„Z	d
d„Z
y)ÚStatzÑProtocol for a stat that can be serialized to OpenMetrics format.

    All stats must have these fields to identify the metric family they belong to
    and provide metadata for OpenMetrics serialization.
    c                 ó   — y)z:The name of the metric family (e.g. 'cache_memory_bytes').N© ©Úselfs    úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/runtime/stats.pyÚfamily_namezStat.family_name,   ó   € ð 	ó    c                 ó   — y)z/The OpenMetrics type (e.g. 'gauge', 'counter').Nr   r   s    r   Útypez	Stat.type1   r   r   c                 ó   — y)z&The unit of the metric (e.g. 'bytes').Nr   r   s    r   Úunitz	Stat.unit6   r   r   c                 ó   — y)zA description of the metric.Nr   r   s    r   Úhelpz	Stat.help;   r   r   c                 ó   — y)z5Convert this stat to an OpenMetrics-formatted string.Nr   r   s    r   Úto_metric_strzStat.to_metric_str@   ó   € àr   c                 ó   — y©ú-Fill an OpenMetrics `Metric` protobuf object.Nr   )r   Úmetrics     r   Úmarshall_metric_protozStat.marshall_metric_protoD   r'   r   N©ÚreturnÚstr©r+   ÚMetricProtor.   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r    r"   r$   r&   r,   r   r   r   r   r   $   sa   „ ñð òó ðð òó ðð òó ðð òó ðóôr   r   c                  óˆ   — e Zd ZU dZded<   ded<   ded<   edd„«       Zedd„«       Zedd	„«       Zedd
„«       Z	dd„Z
dd„Zy)Ú	CacheStatae  Describes a single cache entry.

    Properties
    ----------
    category_name : str
        A human-readable name for the cache "category" that the entry belongs
        to - e.g. "st.memo", "session_state", etc.
    cache_name : str
        A human-readable name for cache instance that the entry belongs to.
        For "st.memo" and other function decorator caches, this might be the
        name of the cached function. If the cache category doesn't have
        multiple separate cache instances, this can just be the empty string.
    byte_length : int
        The entry's memory footprint in bytes.
    r/   Úcategory_nameÚ
cache_nameÚintÚbyte_lengthc                ó   — t         S ©N)r
   r   s    r   r   zCacheStat.family_nameb   s   € ä"Ð"r   c                 ó   — y©NÚgauger   r   s    r   r    zCacheStat.typef   ó   € àr   c                 ó   — y)NÚbytesr   r   s    r   r"   zCacheStat.unitj   rC   r   c                 ó   — y)Nz!Total memory consumed by a cache.r   r   s    r   r$   zCacheStat.helpn   s   € à2r   c                ól   — | j                   › d| j                  › d| j                  › d| j                  › �S )Nz{cache_type="z	",cache="z"} )r   r:   r;   r=   r   s    r   r&   zCacheStat.to_metric_strr   s;   € Ø×"Ñ"Ð# >°$×2DÑ2DÐ1EÀYÈtÏÉÐN_Ð_cÐdh×dtÑdtÐcuÐvÐvr   c                ó6  — |j                   j                  «       }d|_        | j                  |_        |j                   j                  «       }d|_        | j
                  |_        |j                  j                  «       }| j                  |j                  _	        y)r*   Ú
cache_typeÚcacheN)
ÚlabelsÚaddÚnamer:   Úvaluer;   Úmetric_pointsr=   Úgauge_valueÚ	int_value)r   r+   ÚlabelÚmetric_points       r   r,   zCacheStat.marshall_metric_protou   st   € à—‘×!Ñ!Ó#ˆØ!ˆŒ
Ø×(Ñ(ˆŒà—‘×!Ñ!Ó#ˆØˆŒ
Ø—o‘oˆŒà×+Ñ+×/Ñ/Ó1ˆØ-1×-=Ñ-=ˆ× Ñ Õ*r   Nr-   r0   )r3   r4   r5   r6   Ú__annotations__r7   r   r    r"   r$   r&   r,   r   r   r   r9   r9   L   su   … ñð  ÓØƒOØÓð ò#ó ð#ð òó ðð òó ðð ò3ó ð3ówô>r   r9   c                óÎ   — dd„}g }t        | |¬«      }t        j                  ||¬«      }|D ]5  \  \  }}}|j                  t	        ||t        d„ |D «       «      ¬«      «       Œ7 |S )zOGroup a list of CacheStats by category_name and cache_name and sum byte_length.c                ó2   — | j                   | j                  fS r?   )r:   r;   )Úindividual_stats    r   Úkey_functionz'group_cache_stats.<locals>.key_function†   s   € Ø×,Ñ,¨o×.HÑ.HÐHÐHr   )Úkeyc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr?   )r=   )Ú.0Úitems     r   ú	<genexpr>z$group_cache_stats.<locals>.<genexpr>“   s   è ø€ ÒP°T × 0Õ 0ÑPùs   ‚)r:   r;   r=   )rW   r9   r.   ztuple[str, str])ÚsortedÚ	itertoolsÚgroupbyÚappendr9   Úsum)ÚstatsrX   ÚresultÚsorted_statsÚgrouped_statsr:   r;   Úsingle_group_statss           r   Úgroup_cache_statsrh   ƒ   sw   € óIð !€Fä˜% \Ô2€LÜ×%Ñ% l¸ÔE€Mà;Hò 
Ñ7Ñ#ˆ˜
Ð%7Ø�‰ÜØ+Ø%ÜÑPÐ=OÔPÓPôõ	
ð
ð €Mr   c                  ór   — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   d	Zded<   edd„«       Z	dd„Z
dd„Zy)ÚCounterStata¬  A counter stat.

    Properties
    ----------
    family_name : str
        The name of the metric family (e.g. 'session_events_total').
    value : int
        The current count value.
    labels : dict[str, str] | None
        Labels to identify this specific counter (e.g. {"type": "connection"}).
    unit : str
        The unit of the metric (e.g. '' for unitless).
    help : str
        A description of the metric.
    r/   r   r<   rN   Núdict[str, str] | NonerK   Ú r"   r$   c                 ó   — y)NÚcounterr   r   s    r   r    zCounterStat.type°   s   € àr   c                óþ   — | j                   rWdj                  d„ t        | j                   j                  «       «      D «       «      }| j                  › d|› d| j
                  › �S | j                  › d| j
                  › �S )Nú,c              3  ó2   K  — | ]  \  }}|› d |› d�–— Œ y­w©z="ú"Nr   ©r[   ÚkÚvs      r   r]   z,CounterStat.to_metric_str.<locals>.<genexpr>¶   ó    è ø€ Ò!W±4°1°a Q C r¨!¨¨A¤,Ñ!Wùó   ‚ú{ú} ú ©rK   Újoinr^   Úitemsr   rN   ©r   Ú
labels_strs     r   r&   zCounterStat.to_metric_str´   óm   € Ø�;Š;ØŸ™Ñ!W¼6À$Ç+Á+×BSÑBSÓBUÓ;VÔ!WÓWˆJØ×&Ñ&Ð' r¨*¨°S¸¿¹¸ÐEÐEØ×"Ñ"Ð# 1 T§Z¡Z LÐ1Ð1r   c                ó,  — | j                   rSt        | j                   j                  «       «      D ]-  \  }}|j                   j                  «       }||_        ||_        Œ/ |j                  j                  «       }| j
                  |j                  _        yr)   )	rK   r^   r~   rL   rM   rN   rO   Úcounter_valuerQ   ©r   r+   rM   rN   rR   rS   s         r   r,   z!CounterStat.marshall_metric_protoº   sv   € à�;Š;Ü% d§k¡k×&7Ñ&7Ó&9Ó:ò $‘��eØŸ™×)Ñ)Ó+�Ø!�”
Ø#�•ð$ð
 ×+Ñ+×/Ñ/Ó1ˆØ/3¯z©zˆ×"Ñ"Õ,r   r-   r0   ©r3   r4   r5   r6   rT   rK   r"   r$   r7   r    r&   r,   r   r   r   rj   rj   ™   sM   … ñð  ÓØƒJØ$(€FÐ!Ó(Ø€Dˆ#ƒNØ€Dˆ#ƒNàòó ðó2ô	:r   rj   c                  ór   — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   d	Zded<   edd„«       Z	dd„Z
dd„Zy)Ú	GaugeStataŽ  A gauge stat.

    Properties
    ----------
    family_name : str
        The name of the metric family (e.g. 'active_sessions').
    value : int
        The current gauge value.
    labels : dict[str, str] | None
        Optional labels to identify this specific gauge.
    unit : str
        The unit of the metric (e.g. '' for unitless).
    help : str
        A description of the metric.
    r/   r   r<   rN   Nrk   rK   rl   r"   r$   c                 ó   — yrA   r   r   s    r   r    zGaugeStat.typeÝ   rC   r   c                óþ   — | j                   rWdj                  d„ t        | j                   j                  «       «      D «       «      }| j                  › d|› d| j
                  › �S | j                  › d| j
                  › �S )Nrp   c              3  ó2   K  — | ]  \  }}|› d |› d�–— Œ y­wrr   r   rt   s      r   r]   z*GaugeStat.to_metric_str.<locals>.<genexpr>ã   rw   rx   ry   rz   r{   r|   r   s     r   r&   zGaugeStat.to_metric_strá   r�   r   c                ó,  — | j                   rSt        | j                   j                  «       «      D ]-  \  }}|j                   j                  «       }||_        ||_        Œ/ |j                  j                  «       }| j
                  |j                  _        yr)   )	rK   r^   r~   rL   rM   rN   rO   rP   rQ   r„   s         r   r,   zGaugeStat.marshall_metric_protoç   sv   € à�;Š;Ü% d§k¡k×&7Ñ&7Ó&9Ó:ò $‘��eØŸ™×)Ñ)Ó+�Ø!�”
Ø#�•ð$ð
 ×+Ñ+×/Ñ/Ó1ˆØ-1¯Z©Zˆ× Ñ Õ*r   r-   r0   r…   r   r   r   r‡   r‡   Æ   sM   … ñð  ÓØƒJØ$(€FÐ!Ó(Ø€Dˆ#ƒNØ€Dˆ#ƒNàòó ðó2ô	8r   r‡   c                ób   — ddl m}m}m}m}m}m}m}m} |||||||dœ}	|	j                  | |«      S )zCConvert a metric type string to its corresponding proto enum value.r   )ÚCOUNTERÚGAUGEÚGAUGE_HISTOGRAMÚ	HISTOGRAMÚINFOÚ	STATE_SETÚSUMMARYÚUNKNOWN)rB   rn   Ú	state_setÚinfoÚ	histogramÚgauge_histogramÚsummary)
Ú*streamlit.proto.openmetrics_data_model_pb2r�   rŽ   r�   r�   r‘   r’   r“   r”   Úget)
Útype_stringr�   rŽ   r�   r�   r‘   r’   r“   r”   Útype_maps
             r   Úmetric_type_string_to_protorž   ó   sB   € ÷	÷ 	ó 	ð ØØØØØ*Øñ€Hð �<‰<˜ WÓ-Ð-r   c                  ó0   — e Zd Zedd„«       Z	 d	 	 	 dd„Zy)ÚStatsProviderc                 ó   — y)zÄThe metric family names that this provider supports.

        The StatsManager uses this property to determine which providers to call
        when specific metric families are requested.
        Nr   r   s    r   Ústats_familieszStatsProvider.stats_families  s   € ð 	r   Nc                ó   — t         ‚)aY  Return stats for the specified metric families.

        Parameters
        ----------
        family_names : Sequence[str] | None
            If provided, only stats for these metric families should be computed
            and returned. If None, stats for all families this provider supports
            should be returned. Providers should check this parameter and skip
            computing expensive stats for families that aren't requested.

        Returns
        -------
        Mapping[str, Sequence[Stat]]
            A mapping from metric family names to sequences of Stat objects.
        )ÚNotImplementedError)r   Úfamily_namess     r   Ú	get_statszStatsProvider.get_stats  s
   € ô$ "Ð!r   )r.   zSequence[str]r?   ©r¥   zSequence[str] | Noner.   zMapping[str, Sequence[Stat]])r3   r4   r5   r7   r¢   r¦   r   r   r   r    r      s.   „ àòó ðð 48ð"Ø0ð"à	%ô"r   r    c                  ó.   — e Zd Zdd„Zdd„Z	 d	 	 	 dd„Zy)	ÚStatsManagerc                ó   — i | _         y r?   )Ú_providers_by_familyr   s    r   Ú__init__zStatsManager.__init__-  s
   € ØDFˆÕ!r   c                óœ   — |j                   D ]=  }|| j                  vrg | j                  |<   | j                  |   j                  |«       Œ? y)ac  Register a StatsProvider with the manager.

        This function is not thread-safe. Call it immediately after creation.

        Parameters
        ----------
        provider : StatsProvider
            The stats provider to register. The provider's `stats_families`
            property determines which metric families it will be called for.
        N)r¢   r«   ra   )r   ÚproviderÚfamilys      r   Úregister_providerzStatsManager.register_provider0  sP   € ð ×-Ñ-ò 	?ˆFØ˜T×6Ñ6Ñ6Ø46�×)Ñ)¨&Ñ1Ø×%Ñ% fÑ-×4Ñ4°XÕ>ñ	?r   Nc                óœ  — i }|r|n"t        | j                  j                  «       «      }t        «       }|D ]“  }| j                  j	                  |g «      D ]r  }t        |«      }||v rŒ|j                  |«       |j                  |«      }|j                  «       D ]+  \  }	}
|	|vrg ||	<   t        ||	   «      t        |
«      z   ||	<   Œ- Œt Œ• |S )aÙ  Return registered stats grouped by metric family name.

        Parameters
        ----------
        family_names : Sequence[str] | None
            If provided, only stats for these metric families will be returned.
            If None, stats for all registered families are returned.

        Returns
        -------
        Mapping[str, Sequence[Stat]]
            A mapping from metric family names to sequences of Stat objects
            from all providers.
        )	Úlistr«   ÚkeysÚsetr›   ÚidrL   r¦   r~   )r   r¥   rd   Úfamilies_to_queryÚqueried_providersr¯   r®   Úprovider_idÚprovider_statsÚfnamerc   s              r   r¦   zStatsManager.get_stats@  sð   € ð" -/ˆñ )‰L¬d°4×3LÑ3L×3QÑ3QÓ3SÓ.Tð 	ô '*£eÐà'ò 	FˆFØ ×5Ñ5×9Ñ9¸&À"ÓEò F�Ü  ›l�ØÐ"3Ñ3ØØ!×%Ñ% kÔ2à!)×!3Ñ!3°LÓ!A�Ø$2×$8Ñ$8Ó$:ò F‘L�E˜5Ø FÑ*Ø(*˜˜u™ô %)¨°©Ó$7¼$¸u»+Ñ$E�F˜5’MñFñFð	Fð  ˆr   )r.   r2   )r®   r    r.   r2   r?   r§   )r3   r4   r5   r¬   r°   r¦   r   r   r   r©   r©   ,  s'   „ óGó?ð" 48ð-Ø0ð-à	%ô-r   r©   )rc   úlist[CacheStat]r.   r»   )rœ   r/   r.   zMetricType.ValueType)Ú
__future__r   r_   Útypingr   r   r   r   r   r
   rT   r   r   r   Úcollections.abcr   r   rš   r   r1   r   r   r9   rh   rj   r‡   rž   r    r©   r   r   r   ú<module>r¿      sÃ   ðö #ã ß PÕ Pà1Ð �UÓ 1Ø5Ð �uÓ 5Ø!AÐ ˜Ó AØ 1Ð ˜Ó 1áß1õõð
 ô!ˆ8ó !ó ð!ôN4>�
ô 4>ónô,*:�*ô *:ôZ*8�
ô *8óZ.ð2 ô"�Hó "ó ð"÷>Aò Ar   