Ë
    g^(h,  ã                   ó¼  — U d dl Z d dlZd dlm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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!y))é    N)Ú
namedtuple©Úwraps)Ú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                   ó0   — e Zd ZdgZddeeeef      fd„Zy)r   ÚparamsNc                 ó:   — || _         | j                   €i | _         y y ©N)r   )Úselfr   s     úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/elastic/metrics/api.pyÚ__init__zMetricsConfig.__init__(   s   € ØˆŒØ�;‰;ÐØˆD�Kð ó    r   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   ÚdictÚstrr   © r    r   r   r   %   s"   „ Ø�
€Iñ˜x¨¨S°#¨X©Ñ7ô 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.emit5   sD   € ÜØ�×%Ñ%Ð& b¨×)?Ñ)?Ð(@ÀÀK×DTÑDTÐCUÐUVÐWb×WhÑWhÐViÐ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y)r   r)   c                  ó   — y 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y)r   r   Úhandlerc                 ó    — || _         || _        y r   )r   r8   )r   r   r8   s      r   r   zMetricStream.__init__A   s   € Ø$ˆŒØˆ�r    Úmetric_nameÚmetric_valuec                 óŠ   — | j                   j                  t        t        j                  «       | j                  ||«      «       y r   )r8   r,   r   Útimer   )r   r:   r;   s      r   Ú	add_valuezMetricStream.add_valueE   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_handlerr8   Úgroupc                 ó    — |€| a y | t        |<   y r   )rA   r@   )r8   rB   s     r   r   r   P   s   € Ø€}ð $+Ñ à%Œ�UÒr    c                 óJ   — | 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                   }|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   b   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ÚfrB   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   rB   s   ` €r   Úwrapzprof.<locals>.wrap„   s    ù€ Ü	ˆq‹ô	ó 
ð	ð ˆr    r'   )rK   rB   r[   s    ` r   r   r   o   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   ÚfuncrB   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   rB   s   ` €r   r[   zprofile.<locals>.wrap¨   s    ù€ Ü	ˆt‹ô	ó 
ð	ð  ˆr    r'   )rB   r[   s   ` r   r   r   ›   s   ø€ ôð( €Kr    r:   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>   )r:   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   r:   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   Útypingr   Útyping_extensionsr   Ú__all__r   r   ÚABCr	   r
   r   r   r@   r%   r&   Ú__annotations__rA   r   r   rN   r   ÚFutureWarningr   r?   r   r   Úfloatr   r'   r    r   ú<module>rt      s@  ðô Û Ý "Ý Ý Ý (ò€ñ  ˜Ò&RÓS€
÷ñ ô�C—G‘Gô ô
˜=ô 
ô˜ô ÷

ñ 
ð *,€ˆd�3˜Ð%Ñ&Ó +Ù*;Ó*=Ð ˜-Ó =ñ&�}ð &¨X°c©]ó &ð(�Só (ò
ñ)˜ó )ñX Ð-¸ÔFò ó Gð ñFA˜Cð A¨sð AÀ#ó Añ ØSØôð7 ð 7°3ð 7Àcò 7ó	ð7ð
:¨uô :r    