Ë
    M²jw  ã                   ó°  — 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y)(é    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                   ó0   — e Zd ZdgZddeeef   dz  fd„Zy)r   ÚparamsNc                 ó:   — || _         | j                   €i | _         y y ©N)r   )Úselfr   s     úd/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/distributed/elastic/metrics/api.pyÚ__init__zMetricsConfig.__init__'   s   € ØˆŒØ�;‰;ÐØˆD�Kð ó    r   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__ÚdictÚstrr   © r   r   r   r   $   s"   „ Ø�
€Iñ˜t C¨ H™~°Ñ4ô r   r   c                   ó6   — e Zd Zej                  defd„«       Zy)r   Úmetric_datac                  ó   — y 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y)r	   r(   c           
      ó‚   — t        d|j                  › d|j                  › d|j                  › d|j                  › �«       y )Nú[z][z]: ú=)Úprintr   r   r   r   r*   s     r   r+   zConsoleMetricHandler.emit4   sD   € ÜØ�×%Ñ%Ð& b¨×)?Ñ)?Ð(@ÀÀK×DTÑDTÐCUÐUVÐWb×WhÑWhÐViÐ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y)r
   r(   c                  ó   — y 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y)r   r   Úhandlerc                 ó    — || _         || _        y r   )r   r7   )r   r   r7   s      r   r   zMetricStream.__init__@   s   € Ø$ˆŒØˆ�r   Úmetric_nameÚmetric_valuec                 óŠ   — | j                   j                  t        t        j                  «       | j                  ||«      «       y r   )r7   r+   r   Útimer   )r   r9   r:   s      r   Ú	add_valuezMetricStream.add_valueD   s,   € Ø�‰×ÑÜ”t—y‘y“{ D§O¡O°[À,ÓOõ	
r   N)r    r!   r"   r%   r   r   Úintr=   r&   r   r   r   r   ?   s(   „ ð 3ð °ó ð
 Sð 
¸ô 
r   r   Ú_metrics_mapÚ_default_metrics_handlerr7   Úgroupc                 ó    — |€| a y | t        |<   y r   )r@   r?   )r7   rA   s     r   r   r   O   s   € Ø€}ð $+Ñ à%Œ�UÒr   c                 óN   — t         j                  | t        «      }t        | |«      S r   )r?   Úgetr@   r   )rA   r7   s     r   r   r   Y   s"   € Ü×Ñ˜uÔ&>Ó?€GÜ˜˜wÓ'Ð'r   c                 ó¼   — | j                   }|j                  d«      }t        |«      dk(  r0| j                  }|r|j                  d«      d   dz   |d   z   S |d   S |S )Nú.é   éÿÿÿÿr   )r"   ÚsplitÚlenr!   )ÚfnÚqualnamerI   Úmodules       r   Ú_get_metric_namerN   ^   s`   € Ø�‰€HØ�N‰N˜3Ó€EÜ
ˆ5ƒz�Q‚Ø—‘ˆÙØ—<‘< Ó$ RÑ(¨3Ñ.°°q±Ñ9Ð9à˜‘8ˆOàˆr   c                 ó&   ‡— ˆ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                 ó2   •‡ — t        ‰ «      ˆ ˆfd„«       }|S )Nc                  ó$  •— t        ‰«      }	 t        j                  «       } ‰| i |¤Ž}t        |› d�d‰«       	 t        |› d�t	        |«      ‰«       |S # t        $ r t        |› d�d‰«       ‚ w xY w# t        |› d�t	        «      ‰«       w xY w©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˜U (Ð+¨Q°Õ6ô
 ˜c˜U ,Ð/Ô1DÀUÓ1KÈUÔSØˆMøô ò Ü˜c˜U (Ð+¨Q°Ô6Øðûô ˜c˜U ,Ð/Ô1DÀUÓ1KÈUÕSús   Ž,A ÁA1Á1A4 Á4Br   )rY   rZ   rA   s   ` €r   Úwrapzprof.<locals>.wrap€   s    ù€ Ü	ˆq‹ô	ó 
ð	ð ˆr   r&   )rK   rA   r[   s    ` r   r   r   k   s   ø€ ô*ñ" 
Ù�B‹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                 ó2   •‡ — t        ‰ «      ˆ ˆfd„«       }|S )Nc            	      ó^  •— 	 t        j                   «       } ‰| i |¤Ž}t        ‰‰j                  › d�d«       	 t        ‰‰j                  › d�t	        |«      «       |S # t        $ r t        ‰‰j                  › d�d«       ‚ w xY w# t        ‰‰j                  › d�t	        «      «       w xY wrR   )r<   r   r    rS   r   )rT   rU   Ú
start_timerX   ÚfuncrA   s       €€r   rZ   z&profile.<locals>.wrap.<locals>.wrapper¥   s²   ø€ ðÜ!ŸY™Y›[�
Ù˜tÐ. vÑ.�ä˜u¨¯©¨°xÐ&@À!ÕDô àØ—}‘}�o \Ð2Ü'¨
Ó3ô	ð ˆMøô ò ä˜u¨¯©¨°xÐ&@À!ÔDØðûô
 àØ—}‘}�o \Ð2Ü'¨
Ó3õ	ús   ƒ6A Á%BÂB Â%B,r   )ra   rZ   rA   s   ` €r   r[   zprofile.<locals>.wrap¤   s    ù€ Ü	ˆt‹ô	ó 
ð	ð& ˆr   r&   )rA   r[   s   ` r   r   r   —   s   ø€ ôð. €Kr   r9   r:   Úmetric_groupc                 ó:   — t        |«      j                  | |«       y)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:   rb   s      r   r   r   ¾   s   € ô ˆlÓ×%Ñ% k°<Õ@r   zMDeprecated, use `put_metric(metric_group)(metric_name, metric_value)` insteadc                 ó>   — t        | «      }|j                  ||«       y r   rd   )rb   r9   r:   Úmetric_streams       r   r   r   Ì   s   € ô
 ˜lÓ+€MØ×Ñ˜K¨Õ6r   Ústart_time_in_secondsc                 óL   — t        j                   «       }t        || z
  dz  «      S )z<Return the elapsed time in millis from the given start time.iè  )r<   r>   )rg   Úend_times     r   r   r   Õ   s#   € ä�y‰y‹{€HÜ�Ð0Ñ0°DÑ8Ó9Ð9r   r   )NÚtorchelastic)rj   ) 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=  ðô Û Ý "Ý Ý (ò€ñ  ˜Ò&RÓS€
÷ñ ô�C—G‘Gô ô
˜=ô 
ô˜ô ÷

ñ 
ð *,€ˆd�3˜Ð%Ñ&Ó +Ù*;Ó*=Ð ˜-Ó =ñ&�}ð &¨S°4©Zó &ð(�Só (ò

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