§
    Ÿ²Åj	  ã                   ó  — U d dl 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¢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e         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)ÚDictÚOptional)Ú
deprecated)ÚMetricsConfigÚMetricHandlerÚConsoleMetricHandlerÚNullMetricHandlerÚMetricStreamÚ	configureÚ	getStreamÚprofÚprofileÚ
put_metricÚpublish_metricÚget_elapsed_time_msÚ
MetricDatar   )Ú	timestampÚ
group_nameÚnameÚvaluec                   ó>   — e Zd ZdgZddeeeef                  fd„ZdS )r	   ÚparamsNc                 ó4   — || _         | j         €	i | _         d S d S ©N)r   )Úselfr   s     úVC:\Projects\Historical\venv\Lib\site-packages\torch/distributed/elastic/metrics/api.pyÚ__init__zMetricsConfig.__init__(   s$   € ØˆŒØŒ;ÐØˆDŒKˆKˆKð Ðó    r   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   Ústrr    © r!   r   r	   r	   %   sH   € € € € € Ø�
€Iðð ˜x¨¨S°#¨X¬Ô7ð ð ð ð ð ð 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.emit5   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   4   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!   Nr4   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   r8   )r   r   r8   s      r   r    zMetricStream.__init__A   s   € Ø$ˆŒØˆŒˆˆr!   Úmetric_nameÚmetric_valuec                 ó†   — | j                              t          t          j        ¦   «         | j        ||¦  «        ¦  «         d S r   )r8   r,   r   Útimer   )r   r:   r;   s      r   Ú	add_valuezMetricStream.add_valueE   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_handlerr8   Úgroupc                 ó&   — |€| a d S | t          |<   d S r   )rA   r@   )r8   rB   s     r   r   r   P   s%   € Ø€}ð $+Ð Ð Ð à%��UÑÐÐr!   c                 ó^   — | t           v rt           |          }nt          }t          | |¦  «        S r   )r@   rA   r   )rB   r8   s     r   r   r   Z   s.   € Ø•ÐÐÝ˜uÔ%ˆˆå*ˆÝ˜˜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   b   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ÚfrB   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[   rB   s   ` €r   Úwrapzprof.<locals>.wrapƒ   s9   øø€ Ý	ˆq‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð ˆr!   r'   )rK   rB   r\   s    ` r   r   r   o   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   ÚfuncrB   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[   rB   s   ` €r   r\   zprofile.<locals>.wrap§   s9   øø€ Ý	ˆt‰Œð	ð 	ð 	ð 	ð 	ñ 
Œð	ð  ˆr!   r'   )rB   r\   s   ` r   r   r   š   s#   ø€ ðð ð ð ð ð( €Kr!   r:   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>   )r:   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   r:   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   Útypingr   r   Útyping_extensionsr   Ú__all__r   r	   ÚABCr
   r   r   r   r@   r&   Ú__annotations__rA   r   r   rN   r   ÚFutureWarningr   r?   r   r   Úfloatr   r'   r!   r   ú<module>rt      sí  ðð €
€
€
€
Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (ðð ð €ð  ˆZ˜Ð&RÐ&RÐ&RÑSÔS€
ðð ð ð ð ñ ô ð ðð ð ð ð �C”Gñ ô ð ð
ð 
ð 
ð 
ð 
˜=ñ 
ô 
ð 
ðð ð ð ð ˜ñ ô ð ð

ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð *,€ˆd�3˜Ð%Ô&Ð +Ð +Ñ +Ø*;Ð*;Ñ*=Ô*=Ð ˜-Ð =Ð =Ñ =ð&ð &�}ð &¨X°c¬]ð &ð &ð &ð &ð(�Sð (ð (ð (ð (ð
ð 
ð 
ð(ð (˜ð (ð (ð (ð (ðV €Ð-¸ÐFÑFÔFð ð  ð  ñ GÔFð ðFAð A˜Cð A¨sð AÀ#ð Að Að Að Að €ØSØðñ ô ð7 ð 7°3ð 7Àcð 7ð 7ð 7ñ	ô ð7ð
:¨uð :ð :ð :ð :ð :ð :r!   