
    Fg                    j   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSKrSSKJr  SSKJr  SSKrSSKJr  SSKJrJr   SS	KJr  SrSrSS jrSS jrSS jrSS jrSS jr S r!SS jr"SS jr#     S                     SS jjr$SS jr%S S jr&g! \ a    S
 r Naf = f)!z-Functions related to analytics and telemetry.    )annotationsN)Any)_send_telemetry_in_thread)Version)
wasm_utils)core_gradio_componentsget_package_version)pyfetchc                     #    [        S5      e7f)Nz:pyodide.http.pyfetch is not available in this environment.)NotImplementedError)_args_kwargss     a/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/gradio/analytics.pypyodide_pyfetchr      s     !H
 	
s   zhttps://api.gradio.app/z"https://api.gradio.app/pkg-versionc                6    U R                   R                  5       $ )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                 6    [         R                  " SS5      S:H  $ )z:
Returns: True if analytics are enabled, False otherwise.
GRADIO_ANALYTICS_ENABLEDTrue)osgetenv r   r   analytics_enabledr   +   s     99/8FBBr   c                    [         R                  (       a  [        R                  " [	        U US95        g [
        R                  " [        U US.S9R                  5         g )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                \     [        U SUR                  S5      US9  g ! [         a     g f = f)Ngradioversion)r"   library_namelibrary_version
user_agent)r   get	Exceptionr!   s     r   r+   r+   D   s8    !! HHY/		
  s    
++c           	        #    [         R                  R                  U5      R                  S5      nSS0n [        R
                  " [        U SX2S9SS9I S h  vN   g  N! [        R                   a     g f = f7f)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   sx      <<!!$'..w7D;GCK
 	
 	
  s:   3A9!A AA A9A A63A95A66A9c                     [        5       n [        R                  " [        SS9R	                  5       S   n[        U5      [        U 5      :  a  [        R                  " SU  SU S35        g g ! [        R                  R                   a    [        R                  " S5         g [         a    [        R                  " S5         g [         a     g f = f)	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- -4C#C	CCc                x    [        5       (       d  g [        R                  (       d  SO[         S3n[	        UU S9  g )Nzgradio/initiatedzgradio-initiated-analytics/r!   r   r   r%   ANALYTICS_URLr-   r    r"   s     r   initiated_analyticsrU   s   s>     !! 	9: 

 r   c                   [        5       (       d  g / / / / / 4u  nnnnn[        U R                  R                  5       5       H"  nUR	                  UR                  5       5        M$     U R                  R                  5        GH&  nUUR                   Vs/ s H8  nUS   U R                  ;   d  M  U R                  US      R                  5       PM:     sn-   nUUR                   Vs/ s H  oS   U R                  ;   d  M  US   PM     sn-   nUUR                   Vs/ s H1  oU R                  ;   d  M  U R                  U   R                  5       PM3     sn-   nUUR                   Vs/ s H1  oU R                  ;   d  M  U R                  U   R                  5       PM3     sn-   nGM)             S
S jn	[        5        V
s/ s H  n
[        U
5      PM     nn
[        5       U R                  U R                  U R                  S LU R                  U	" U R                   U R"                  U5      U	" U R                   U R$                  U5      UUU[&        R(                  S.nU Vs/ s H  oU;  d  M
  UPM     nn[+        U5      S:  nXS'   XS'   UR-                  U5        [&        R(                  (       d  SO[.         S3n[1        UUS	9  g s  snf s  snf s  snf s  snf s  sn
f s  snf )Nr      c                n    U S:X  a)  U(       a   U Vs/ s H  o3R                  5       PM     sn$ S $ U$ s  snf )N	interface)r   )mode
componentsfallbackbs       r   get_inputs_outputs.launched_analytics.<locals>.get_inputs_outputs   s9    
 ;?I
;
1$$&
;StS <s   2)r0   	is_kaggleis_sagemaker
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   listrg   valuesappendr   fnsrf   rd   re   r   r	   r`   ra   authrc   rZ   input_componentsoutput_componentsr   r%   lenupdaterS   r-   )rg   r    blocks_telemetryinputs_telemetryoutputs_telemetrytargets_telemetryevents_telemetryxyr^   ccore_componentsadditional_datar]   rk   rj   r"   s                    r   launched_analyticsr      s    	



	 &--&&() 0 0 23 *ZZ - YY1
 tv}}$ 1FMM!A$..01
 
 ,))/
#Qtv}}'<DAaD)/
 
 ,78xx/
7?!CU-FMM!++-x/
 
 .78yy1
7@!DV-FMM!++-y1
 
 !"<  
	 3I2JK2JQ~a(2JOK '(%%++kk-OO$KK002B
 &KK113D
 %""%%O" %5Q$4q8P$4Q !23a70F,-+<'(KK  !! 	89 
 D1s1
/
/
1
 L& RsB   K/$K'K	KK5!K*K!KK!&	K&3K&c
                R    U UUUUUUUUU	S.
n
[        5       (       d  g [        SU
S9  g )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      sE     ""&&$"""D (r   c                x    [        5       (       d  g [        R                  (       d  SO[         S3n[	        UU S9  g )Nzgradio/integrationzgradio-integration-analytics/r!   rR   rT   s     r   integration_analyticsr      s>     !! 	;< 

 r   c                    [        5       (       d  gSU 0n[        R                  (       d  SO[         S3n[	        UUS9  g)zW
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     sJ     WD !! 	56 

 r   )rm   rl   )rm   bool)r"   rl   r    dict[str, Any]rm   None)r   rl   r    r   rm   r   )r    r   rm   r   )rg   zgradio.Blocksr    r   rm   r   )NNNNN)r   rl   r   
str | Noner   bool | Noner   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   r   )r   rl   rm   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   <module>r      s   3 "   	      F %   D
7 *6'C$	"$N2n "& $"""  	
       
BW  


s   
B& &	B21B2