
    +j                       U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d dlmZ ej                            dd	                                          d
v Ze G d d                      Z ej        dd          Zded<   d dZd!dZed"d            Ze	d"d            Zd Zd Z G d d          Z e            Z esed"d            Ze	d"d            ZdS dS )#    )annotationsN)deque)asynccontextmanagercontextmanager)	dataclassfieldwraps)AnyGRADIO_PROFILING )1truec                     e Zd ZU dZded<   dZded<   dZded<    eej                  Z	ded<   d	Z
ded
<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   dZded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded<   d	Zded <   d(d$Zd)d'Z dS )*RequestTraceNz
str | Noneevent_idfn_namesession_hash)default_factoryfloat	timestamp        queue_wait_mspreprocess_ms
fn_call_mspostprocess_msstreaming_diff_mstotal_msr   intn_iterations	upload_mspreprocess_move_to_cache_mspreprocess_format_image_ms&postprocess_save_img_array_to_cache_mspreprocess_audio_from_file_ms"postprocess_save_audio_to_cache_mspreprocess_video_ms2postprocess_video_convert_video_to_playable_mp4_ms%postprocess_update_state_in_config_mspostprocess_move_to_cache_mspostprocess_video_ms postprocess_save_pil_to_cache_ms"postprocess_save_bytes_to_cache_mssave_file_to_cache_msnamestrduration_msc                    | d}t          | |          r"t          | |t          | |          |z              |dk    r| xj        dz  c_        d S d S )N_mstotal   )hasattrsetattrgetattrr    )selfr/   r1   attrs       T/home/wildlama/visual-decline/.venv/lib/python3.11/site-packages/gradio/profiling.py	set_phasezRequestTrace.set_phase,   sk    |||4 	CD$d 3 3k ABBB7??" ?    returndict[str, Any]c           	     p   i d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        d| j
        d| j        d| j        d| j        d| j        d| j        d| j        | j        | j        | j        | j        | j        | j        | j        dS )Nr   r   r   r   r   r   r   r   r   r   r    r"   r#   r$   r%   r&   r'   )r(   r)   r*   r+   r,   r-   r.   )r   r   r   r   r   r   r   r   r   r   r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r9   s    r;   to_dictzRequestTrace.to_dict4   s?   

t|
 D-
 	

 T/
 T/
 $/
 d1
  !7
 
 D-
 *4+K
 )$*I
 5d6a
 ,T-O
  1$2Y!
" "4#;#
$ CGBy595_,0,M$($=040U262Y%)%?1
 
 
 	
r=   )r/   r0   r1   r   r>   r?   )!__name__
__module____qualname__r   __annotations__r   r   r   timer   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r<   rB    r=   r;   r   r      s        HG#L####uTY777I7777MMJN"""""HLI),,,,,(+++++47*7777+.!....03&3333!$$$$$@C6CCCC36)6666*- ----"%%%%%.1$111103&3333#&&&&&# # # #
 
 
 
 
 
r=   r   _current_trace)defaultz+contextvars.ContextVar[RequestTrace | None]r>   RequestTrace | Nonec                 4    t                                           S N)rJ   getrI   r=   r;   get_current_tracerP   V   s    r=   tracecontextvars.Tokenc                6    t                               |           S rN   )rJ   set)rQ   s    r;   set_current_tracerU   Z   s    e$$$r=   r/   r0   c               F  K   t                                           }|dW V  dS t          j                    }	 dW V  t          j                    |z
  dz  }|                    | |           dS # t          j                    |z
  dz  }|                    | |           w xY w)zSAsync context manager that records timing for a named phase into the current trace.N  rJ   rO   rH   	monotonicr<   r/   rQ   startr1   s       r;   trace_phaser\   ^   s         E}NE+~''%/47k***** ~''%/47k****s   A/ /1B c              #  B  K   t                                           }|dV  dS t          j                    }	 dV  t          j                    |z
  dz  }|                    | |           dS # t          j                    |z
  dz  }|                    | |           w xY w)zMContext manager that records timing for a named phase into the current trace.NrW   rX   rZ   s       r;   trace_phase_syncr^   m   s         E}NE+~''%/47k***** ~''%/47k****s   A- -1Bc                &     t           sd S  fd}|S )Nc                    | S rN   rI   fs    r;   <lambda>ztraced.<locals>.<lambda>~        r=   c                @     t                      fd            }|S )Nc                    K   t                    4 d {V   | i | d {V cd d d           d {V  S # 1 d {V swxY w Y   d S rN   )r\   argskwargsrb   phases     r;   wrapperz)traced.<locals>._factory.<locals>.wrapper   s      "5)) 0 0 0 0 0 0 0 0Q/////////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   :
AAr	   rb   rk   rj   s   ` r;   _factoryztraced.<locals>._factory   s9    	q	0 	0 	0 	0 	0 
	0 r=   PROFILING_ENABLEDrj   rm   s   ` r;   tracedrq   |   3     {     Or=   c                &     t           sd S  fd}|S )Nc                    | S rN   rI   ra   s    r;   rc   ztraced_sync.<locals>.<lambda>   rd   r=   c                @     t                      fd            }|S )Nc                 f    t                    5   | i |cd d d            S # 1 swxY w Y   d S rN   )r^   rg   s     r;   rk   z.traced_sync.<locals>._factory.<locals>.wrapper   s    !%(( * *q$)&))* * * * * * * * * * * * * * * * * *s   &**r	   rl   s   ` r;   rm   ztraced_sync.<locals>._factory   s9    	q	* 	* 	* 	* 	* 
	* r=   rn   rp   s   ` r;   traced_syncrw      rr   r=   c                  8    e Zd ZdddZddZdddZddZd ZdS )TraceCollector順 maxlenr   c                0    t          |          | _        d S )N)r{   )r   _traces)r9   r{   s     r;   __init__zTraceCollector.__init__   s    ,1,@,@,@r=   rQ   r   c                :    | j                             |           d S rN   )r}   append)r9   rQ   s     r;   addzTraceCollector.add   s    E"""""r=   Nlast_n
int | Noner>   list[dict[str, Any]]c                \    t          | j                  }||| d          }d |D             S )Nc                6    g | ]}|                                 S rI   )rB   .0ts     r;   
<listcomp>z*TraceCollector.get_all.<locals>.<listcomp>   s     ,,,		,,,r=   )listr}   )r9   r   tracess      r;   get_allzTraceCollector.get_all   s;    dl##VGHH%F,,V,,,,r=   r?   c           	       	 | j         sdi dS dd ld | j         D             }d | j         D             }g d}fd}t          |          i d}|D ]M		fd|D             }|r( |                    |                    |d         	<   :d	d	d	d	d	d	d	d
|d         	<   N|r>d |D             }dt          |          i |                    |                    |d<   |S )Nr   )countphasesc                (    g | ]}|j         d k    |S gradio_file_uploadr   r   s     r;   r   z.TraceCollector.get_summary.<locals>.<listcomp>   s,     
 
 
qy4H'H'HA'H'H'Hr=   c                (    g | ]}|j         d k    |S r   r   r   s     r;   r   z.TraceCollector.get_summary.<locals>.<listcomp>   s%    VVVqAIAU4U4U4U4U4Ur=   )
queue_wait
preprocessfn_callpostprocessstreaming_diffr4   c                   t                              | d                    t                              | d                    t                              | d                    t                              | d                    t                              |                     t                              |                     t                              |                     dS )N2   Z   _   c   p50p90p95p99meanminmax)r   
percentiler   r   r   )arrnps    r;   _percentilesz0TraceCollector.get_summary.<locals>._percentiles   s    R]]33344R]]33344R]]33344R]]33344bggcll++RVVC[[))RVVC[[))  r=   c                6    g | ]}t          | d           S )r3   )r8   )r   r   rj   s     r;   r   z.TraceCollector.get_summary.<locals>.<listcomp>   s)    KKKAgaE//KKKr=   r   r   r   c                    g | ]	}|j         
S rI   )r!   r   s     r;   r   z.TraceCollector.get_summary.<locals>.<listcomp>   s    @@@QQ[@@@r=   r   upload)r}   numpylenarray)
r9   prediction_tracesupload_tracesr   r   resultvaluesupload_valuesr   rj   s
           @@r;   get_summaryzTraceCollector.get_summary   s   | 	."---
 
|
 
 
 WVDLVVV
 
 
		 		 		 		 		 *++"
 "
  	 	EKKKK9JKKKF *6,rxx7G7G*H*Hx '' + +x ''  	@@-@@@M]++ ,rxx6677 F8
 r=   c                8    | j                                          d S rN   )r}   clearrA   s    r;   r   zTraceCollector.clear   s    r=   )rz   )r{   r   )rQ   r   rN   )r   r   r>   r   rC   )rD   rE   rF   r~   r   r   r   r   rI   r=   r;   ry   ry      s        A A A A A# # # #- - - - -9 9 9 9v    r=   ry   c                  K   d W V  d S rN   rI   r/   s    r;   r\   r\      s      r=   c              #     K   d V  d S rN   rI   r   s    r;   r^   r^      s      r=   )r>   rL   )rQ   r   r>   rR   )r/   r0   )!
__future__r   contextvarsosrH   collectionsr   
contextlibr   r   dataclassesr   r   	functoolsr
   typingr   environrO   stripro   r   
ContextVarrJ   rG   rP   rU   r\   r^   rq   rw   ry   	collectorrI   r=   r;   <module>r      sV   " " " " " " "     				        : : : : : : : : ( ( ( ( ( ( ( (            JNN#5r::@@BBmS  >
 >
 >
 >
 >
 >
 >
 >
B ?Uk>Td? ? ?    
       % % % % + + + + + + + +    I I I I I I I IZ N	  	        ^  	 	r=   