§
    ŠŠtjw  ã                   óð  — U d dl Z d dlZd dlmZ d dlmZ d dlmZ g d¢Z edg d¢¦  «        Z	 G d„ d	¦  «        Z
 G d
„ de j        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Zi Zeeef         ed<    e¦   «         aeed<   d&dededz  fd„Zdefd„Zd„ Zd'defd„Z ede¬¦  «        d&d„¦   «         Zd(deded efd!„Z ed"e¬¦  «        d ededefd#„¦   «         Zd$efd%„ZdS ))é    N)Ú
namedtuple©Úwraps)Ú
deprecated)ÚMetricsConfigÚMetricHandlerÚConsoleMetricHandlerÚNullMetricHandlerÚMetricStreamÚ	configureÚ	getStreamÚprofÚprofileÚ
put_metricÚpublish_metricÚget_elapsed_time_msÚ
MetricDatar   )Ú	timestampÚ
group_nameÚnameÚvaluec                   ó8   — e Zd ZdgZddeeef         dz  fd„ZdS )r   ÚparamsNc                 ó4   — || _         | j         €	i | _         d S d S ©N)r   )Úselfr   s     úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/elastic/metrics/api.pyÚ__init__zMetricsConfig.__init__'   s$   € ØˆŒØŒ;ÐØˆDŒKˆKˆKð Ðó    r   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__ÚdictÚstrr   © r   r   r   r   $   sH   € € € € € Ø�
€Iðð ˜t C¨ Hœ~°Ñ4ð ð ð ð ð ð r   r   c                   ó4   — e Zd Zej        defd„¦   «         ZdS )r   Úmetric_datac                 ó   — d S r   r&   ©r   r(   s     r   ÚemitzMetricHandler.emit.   s   € àˆr   N)r    r!   r"   ÚabcÚabstractmethodr   r+   r&   r   r   r   r   -   s=   € € € € € ØÔð 
ð ð ð ñ Ôðð ð r   r   c                   ó   — e Zd Zdefd„ZdS )r	   r(   c           
      ód   — t          d|j        › d|j        › d|j        › d|j        › �¦  «         d S )Nú[z][z]: ú=)Úprintr   r   r   r   r*   s     r   r+   zConsoleMetricHandler.emit4   sN   € ÝØj�Ô%ÐjÐj¨Ô)?ÐjÐjÀKÔDTÐjÐjÐWbÔWhÐjÐjñ	
ô 	
ð 	
ð 	
ð 	
r   N©r    r!   r"   r   r+   r&   r   r   r	   r	   3   s/   € € € € € ð
 
ð 
ð 
ð 
ð 
ð 
ð 
r   r	   c                   ó   — e Zd Zdefd„ZdS )r
   r(   c                 ó   — d S r   r&   r*   s     r   r+   zNullMetricHandler.emit;   s   € Øˆr   Nr3   r&   r   r   r
   r
   :   s/   € € € € € ð 
ð ð ð ð ð ð r   r
   c                   ó.   — e Zd Zdedefd„Zdedefd„ZdS )r   r   Úhandlerc                 ó"   — || _         || _        d S r   )r   r7   )r   r   r7   s      r   r   zMetricStream.__init__@   s   € Ø$ˆŒØˆŒˆˆr   Úmetric_nameÚmetric_valuec                 ó†   — | j                              t          t          j        ¦   «         | j        ||¦  «        ¦  «         d S r   )r7   r+   r   Útimer   )r   r9   r:   s      r   Ú	add_valuezMetricStream.add_valueD   s?   € ØŒ×ÒÝ•t”y‘{”{ D¤O°[À,ÑOÔOñ	
ô 	
ð 	
ð 	
ð 	
r   N)r    r!   r"   r%   r   r   Úintr=   r&   r   r   r   r   ?   sX   € € € € € ð 3ð °ð ð ð ð ð
 Sð 
¸ð 
ð 
ð 
ð 
ð 
ð 
r   r   Ú_metrics_mapÚ_default_metrics_handlerr7   Úgroupc                 ó&   — |€| a d S | t          |<   d S r   )r@   r?   )r7   rA   s     r   r   r   O   s%   € Ø€}ð $+Ð Ð Ð à%��UÑÐÐr   c                 ób   — t                                | t          ¦  «        }t          | |¦  «        S r   )r?   Úgetr@   r   )rA   r7   s     r   r   r   Y   s(   € Ý×Ò˜uÕ&>Ñ?Ô?€GÝ˜˜wÑ'Ô'Ð'r   c                 óÔ   — | j         }|                     d¦  «        }t          |¦  «        dk    r8| j        }|r'|                     d¦  «        d         dz   |d         z   S |d         S |S )Nú.é   éÿÿÿÿr   )r"   ÚsplitÚlenr!   )ÚfnÚqualnamerI   Úmodules       r   Ú_get_metric_namerN   ^   sk   € ØŒ€HØ�NŠN˜3ÑÔ€EÝ
ˆ5�z„z�Q‚€Ø”ˆØð 	Ø—<’< Ñ$Ô$ RÔ(¨3Ñ.°°q´Ñ9Ð9à˜”8ˆOàˆr   Útorchelasticc                 ó,   ‡— ˆfd„}| r || ¦  «        S |S )a¯  
    @profile decorator publishes duration.ms, count, success, failure metrics for the function that it decorates.

    The metric name defaults to the qualified name (``class_name.def_name``) of the function.
    If the function does not belong to a class, it uses the leaf module name instead.

    Usage

    ::

     @metrics.prof
     def x():
         pass


     @metrics.prof(group="agent")
     def y():
         pass
    c                 ó@   •‡ — t          ‰ ¦  «        ˆ ˆfd„¦   «         }|S )Nc                  ó`  •— t          ‰¦  «        }	 t          j        ¦   «         } ‰| i |¤Ž}t          |› d�d‰¦  «         n## t          $ r t          |› d�d‰¦  «         ‚ w xY w	 t          |› d�t	          |¦  «        ‰¦  «         n&# t          |› d�t	          |¦  «        ‰¦  «         w xY w|S ©Nz.successrG   z.failurez.duration.ms)rN   r<   r   Ú	Exceptionr   )ÚargsÚkwargsÚkeyÚstartÚresultÚfrA   s        €€r   Úwrapperz#prof.<locals>.wrap.<locals>.wrapper�   sé   ø€ å" 1Ñ%Ô%ˆCðTÝœ	™œ�Ø˜˜DÐ+ FÐ+Ð+�Ý˜cÐ+Ð+Ð+¨Q°Ñ6Ô6Ð6Ð6øÝð ð ð Ý˜cÐ+Ð+Ð+¨Q°Ñ6Ô6Ð6Øðøøøð 7õ
 ˜cÐ/Ð/Ð/Õ1DÀUÑ1KÔ1KÈUÑSÔSÐSÐSø•
˜cÐ/Ð/Ð/Õ1DÀUÑ1KÔ1KÈUÑSÔSÐSÐSøøøØˆMs   ’/A ÁB Á A"Á"B Â#B+r   )rZ   r[   rA   s   ` €r   Úwrapzprof.<locals>.wrap€   s9   øø€ Ý	ˆq‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð ˆr   r&   )rK   rA   r\   s    ` r   r   r   k   s8   ø€ ð*ð ð ð ð ð" 
ð Øˆt�B‰xŒxˆàˆr   zDeprecated, use `@prof` instead)Úcategoryc                 ó   ‡ — ˆ fd„}|S )z¾
    @profile decorator adds latency and success/failure metrics to any given function.

    Usage

    ::

     @metrics.profile("my_metric_group")
     def some_function(<arguments>):
    c                 ó@   •‡ — t          ‰ ¦  «        ˆ ˆfd„¦   «         }|S )Nc            	      ój  •— 	 t          j         ¦   «         } ‰| i |¤Ž}t          ‰‰j        › d�d¦  «         n(# t          $ r t          ‰‰j        › d�d¦  «         ‚ w xY w	 t          ‰‰j        › d�t	          |¦  «        ¦  «         n+# t          ‰‰j        › d�t	          |¦  «        ¦  «         w xY w|S rS   )r<   r   r    rT   r   )rU   rV   Ú
start_timerY   ÚfuncrA   s       €€r   r[   z&profile.<locals>.wrap.<locals>.wrapper¥   sú   ø€ ðÝ!œY™[œ[�
Ø˜˜tÐ. vÐ.Ð.�å˜u¨¬Ð&@Ð&@Ð&@À!ÑDÔDÐDÐDøÝð ð ð å˜u¨¬Ð&@Ð&@Ð&@À!ÑDÔDÐDØðøøøð Eõ àØ”}Ð2Ð2Ð2Ý'¨
Ñ3Ô3ñ	ô ð ð ø•àØ”}Ð2Ð2Ð2Ý'¨
Ñ3Ô3ñ	ô ð ð øøøð ˆMs   ƒ48 ·B ¸%AÁB Â(B0r   )rb   r[   rA   s   ` €r   r\   zprofile.<locals>.wrap¤   s9   øø€ Ý	ˆt‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð& ˆr   r&   )rA   r\   s   ` r   r   r   —   s#   ø€ ðð ð ð ð ð. €Kr   r9   r:   Úmetric_groupc                 óL   — t          |¦  «                             | |¦  «         dS )z“
    Publish a metric data point.

    Usage

    ::

     put_metric("metric_name", 1)
     put_metric("metric_name", 1, "metric_group_name")
    N©r   r=   )r9   r:   rc   s      r   r   r   ¾   s(   € õ ˆlÑÔ×%Ò% k°<Ñ@Ô@Ð@Ð@Ð@r   zMDeprecated, use `put_metric(metric_group)(metric_name, metric_value)` insteadc                 óP   — t          | ¦  «        }|                     ||¦  «         d S r   re   )rc   r9   r:   Úmetric_streams       r   r   r   Ì   s-   € õ
 ˜lÑ+Ô+€MØ×Ò˜K¨Ñ6Ô6Ð6Ð6Ð6r   Ústart_time_in_secondsc                 óR   — t          j         ¦   «         }t          || z
  dz  ¦  «        S )z<Return the elapsed time in millis from the given start time.iè  )r<   r>   )rh   Úend_times     r   r   r   Õ   s&   € åŒy‰{Œ{€HÝ�Ð0Ñ0°DÑ8Ñ9Ô9Ð9r   r   )NrO   )rO   ) r,   r<   Úcollectionsr   Ú	functoolsr   Útyping_extensionsr   Ú__all__r   r   ÚABCr   r	   r
   r   r?   r$   r%   Ú__annotations__r@   r   r   rN   r   ÚFutureWarningr   r>   r   r   Úfloatr   r&   r   r   ú<module>rs      sÕ  ðð €
€
€
€
Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (ðð ð €ð  ˆZ˜Ð&RÐ&RÐ&RÑSÔS€
ðð ð ð ð ñ ô ð ðð ð ð ð �C”Gñ ô ð ð
ð 
ð 
ð 
ð 
˜=ñ 
ô 
ð 
ðð ð ð ð ˜ñ ô ð ð

ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð *,€ˆd�3˜Ð%Ô&Ð +Ð +Ñ +Ø*;Ð*;Ñ*=Ô*=Ð ˜-Ð =Ð =Ñ =ð&ð &�}ð &¨S°4©Zð &ð &ð &ð &ð(�Sð (ð (ð (ð (ð

ð 
ð 
ð)ð )˜ð )ð )ð )ð )ðX €Ð-¸ÐFÑFÔFð#ð #ð #ñ GÔFð#ðLAð A˜Cð A¨sð AÀ#ð Að Að Að Að €ØSØðñ ô ð7 ð 7°3ð 7Àcð 7ð 7ð 7ñ	ô ð7ð
:¨uð :ð :ð :ð :ð :ð :r   