
    ;3h                     Z   d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlZddlmZ ddlmZ ddlZddlmZ ddlmZmZ 	 dd	lmZ dZdZddZddZddZddZddZ d Z!ddZ"ddZ#	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dZ$d!dZ%ddZ&d"dZ'y# e$ r d
 ZY Yw xY w)#z-Functions related to analytics and telemetry.    )annotationsN)Any)_send_telemetry_in_thread)Version)
wasm_utils)core_gradio_componentsget_package_version)pyfetchc                     K   t        d      w)Nz:pyodide.http.pyfetch is not available in this environment.)NotImplementedError)_args_kwargss     P/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/gradio/analytics.pypyodide_pyfetchr      s     !H
 	
s   zhttps://api.gradio.app/z"https://api.gradio.app/pkg-versionc                6    | j                   j                         S )z
    This will return "matrix" for Matrix template, and ensures that any component name that is sent from the gradio app is part of the the core components list (no false positives for custom components).
    )__name__lower)
class_names    r   get_block_namer   $   s     $$&&    c                 4    t        j                  dd      dk(  S )zB
    Returns: True if analytics are enabled, False otherwise.
    GRADIO_ANALYTICS_ENABLEDTrue)osgetenv r   r   analytics_enabledr   +   s     99/8FBBr   c                    t         j                  r!t        j                  t	        | |             y t        j                  t        | |d      j                          y )N)urldatatopicr    )targetkwargs)	r   IS_WASMasyncioensure_future_do_wasm_analytics_request	threadingThread_do_normal_analytics_requeststartr!   s     r   _do_analytics_requestr-   2   sN    &	
 	/	
 %'r   c                `    	 t        | d|j                  d      |       y # t        $ r Y y w xY w)Ngradioversion)r"   library_namelibrary_version
user_agent)r   get	Exceptionr!   s     r   r+   r+   D   s8    !! HHY/		
  s   ! 	--c                   K   t         j                  j                  |      j                  d      }ddi}	 t	        j
                  t        | d||      d       d {    y 7 # t        j                  $ r Y y w xY ww)NasciizContent-Typez!application/x-www-form-urlencodedPOST)methodheadersbody   )timeout)urllibparse	urlencodeencoder&   wait_forr   TimeoutError)r   r    r;   r:   s       r   r(   r(   P   s{      <<!!$'..w7D;GCdK
 	
 	
  s:   3A>'A% A#A% "A>#A% %A;8A>:A;;A>c                    	 t               } t        j                  t        d      j	                         d   }t        |      t        |       kD  rt        j                  d|  d| d       y y # t        j                  j                  $ r t        j                  d       Y y t        $ r t        j                  d       Y y t        $ r Y y w xY w)	N   )r   r=   r0   z(IMPORTANT: You are using gradio version z, however version z( is available, please upgrade. 
--------z1unable to parse version details from package URL.z*package URL does not contain version info.)r	   httpxr4   PKG_VERSION_URLjsonr   warningswarndecoderJSONDecodeErrorKeyErrorr5   )current_pkg_versionlatest_pkg_versions     r   version_checkrP   a   s    13"YY?AFKKMiX%&1D)EEMM:;N:O P##5"6 7 F <<'' KIJ DBC s   A)A- -2C!C C
Cc                j    t               sy t        j                  sdnt         d}t	        ||        y )Nzgradio/initiatedzgradio-initiated-analytics/r!   r   r   r%   ANALYTICS_URLr-   r    r"   s     r   initiated_analyticsrU   s   s;     !! 	9: 

 r   c                p   t               sy g g g g g f\  }}}}}t        | j                  j                               D ]!  }|j	                  |j                                # | j                  j                         D ]  }||j                  D cg c]3  }|d   | j                  v r | j                  |d      j                         5 c}z   }||j                  D cg c]  }|d   | j                  v s|d    c}z   }||j                  D cg c].  }|| j                  v s| j                  |   j                         0 c}z   }||j                  D cg c].  }|| j                  v s| j                  |   j                         0 c}z   } 	 	 	 	 	 	 	 	 d
d}	t               D 
cg c]  }
t        |
       }}
t               | j                  | j                  d u| j                   |	| j                  | j                   |       |	| j                  | j"                  |      |||t$        j&                  d
}|D cg c]	  }||vs| }}t)        |      dkD  }||d<   ||d<   |j+                  |       t$        j&                  sdnt,         d}t/        ||	       y c c}w c c}w c c}w c c}w c c}
w c c}w )Nr      c                ^    | dk(  r"|r|D cg c]  }|j                          c}S d S |S c c}w )N	interface)r   )mode
componentsfallbackbs       r   get_inputs_outputsz.launched_analytics.<locals>.get_inputs_outputs   s7    
 ;?I
;1A$$&;StS <s   *)
r0   is_hosted_notebook
using_authdev_modeinputsoutputstargetsblockseventsis_wasmusing_custom_componentcustom_componentszgradio/launchedzgradio-launched-telemetry/r!   )rZ   strr[   z(list[gradio.components.Component] | Noner\   z	list[str]returnzlist[str] | None)r   listre   valuesappendr   fnsrd   rb   rc   r   r	   r_   authra   rZ   input_componentsoutput_componentsr   r%   lenupdaterS   r-   )re   r    blocks_telemetryinputs_telemetryoutputs_telemetrytargets_telemetryevents_telemetryxyr^   ccore_componentsadditional_datar]   ri   rh   r"   s                    r   launched_analyticsr      s    	



	 &--&&() 4 0 0 234ZZ  
- YY1
 tv}}$ MM!A$..01
 
 ,))/
qtv}}'<AaD/
 
 ,78xx/
231CUFMM!++-/
 
 .78yy1
23ADVFMM!++-1
 

"<  
	 3I2JKQ~a(KOK '($77kk-OO$KK002B
 &KK113D
 %""%%O  %5Qq8PQQ !23a70FO,-+<O'(KK  !! 	89 
 D1q1
/
/
1
 L$ Rs<   8JJ0JJ$J$J)&J)%J.8	J3J3c
                N    | |||||||||	d
}
t               sy t        d|
       y )N)
commandtemplateupload_pypiupload_demoupload_sourcegenerate_docsbump_versionnpm_installpython_pathgradio_pathzgradio/custom-componentsr!   r   r-   )r   r   r   r   r   r   r   r   r   r   r    s              r   custom_component_analyticsr      sB     ""&&$"""D (r   c                 <    ddi} t               sy t        d|        y )Nr   sketchzgradio/sketchr!   r   )r    s    r   sketch_analyticsr      s'    8D r   c                j    t               sy t        j                  sdnt         d}t	        ||        y )Nzgradio/integrationzgradio-integration-analytics/r!   rR   rT   s     r   integration_analyticsr      s;     !! 	;< 

 r   c                r    t               syd| i}t        j                  sdnt         d}t	        ||       y)zg
    Send error analytics if there is network
    Parameters:
        message: Details about error
    Nerrorzgradio/errorzgradio-error-analytics/r!   rR   )messager    r"   s      r   error_analyticsr     sG     WD !! 	56 

 r   )rk   rj   )rk   bool)r"   rj   r    dict[str, Any]rk   None)r   rj   r    r   rk   r   )r    r   rk   r   )re   zgradio.Blocksr    r   rk   r   )NNNNN)r   rj   r   
str | Noner   bool | Noner   r   r   r   r   r   r   r   r   r   r   r   r   r   rk   r   )rk   r   )r   rj   rk   r   )(__doc__
__future__r   r&   rH   r   r)   urllib.parser>   rI   typingr   rF    huggingface_hub.utils._telemetryr   packaging.versionr   r/   r   gradio.utilsr   r	   pyodide.httpr
   r   ImportErrorrS   rG   r   r   r-   r+   r(   rP   rU   r   r   r   r   r   r   r   r   <module>r      s   3 "   	      F %   D
7 *6'C$	"$M2l "& $"""  	
       
B
o  


s   
B B*)B*