
    l0j                    $   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
Z
ddlmZ ddlmZ 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 n# e$ r d
 ZY nw xY wdZdZd"dZd#dZd#dZd#dZd Z d$dZ!d$dZ"d%dZ#d&dZ$d%dZ%d'd!Z&dS )(z/ Functions related to analytics and telemetry.     )annotationsN)StrictVersion)Any)
wasm_utils)Context)GRADIO_VERSION)pyfetchc                 $   K   t          d          )Nz:pyodide.http.pyfetch is not available in this environment.)NotImplementedError)argskwargss     S/home/wildlama/miniconda3/envs/lam/lib/python3.11/site-packages/gradio/analytics.pypyodide_pyfetchr      s      !H
 
 	
    zhttps://api.gradio.app/z"https://api.gradio.app/pkg-versionreturnboolc                 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     9/88FBBr   urlstrdatadict[str, Any]Nonec                    t           j        r%t          j        t	          | |                     d S t          j        t          | |d                                           d S )Nr   r   )targetr   )	r   IS_WASMasyncioensure_future_do_wasm_analytics_request	threadingThread_do_normal_analytics_requeststartr    s     r   _do_analytics_requestr*   +   s     &  	
 	
 	
 	
 	
 	/ 	
 	
 	
 %'''''r   c                    t                      |d<   	 t          j        | |d           d S # t          j        t          j        j        f$ r Y d S w xY w)N
ip_address   )r   timeout)get_local_ip_addressrequestspostConnectionError
exceptionsReadTimeoutr    s     r   r(   r(   =   sd    -//Dca000000$h&9&EF   s   ,  AAc                ,  K   t                       d {V |d<   t          j                            |                              d          }ddi}	 t          j        t          | d||          d           d {V  d S # t
          j        $ r Y d S w xY w)	Nr,   asciizContent-Typez!application/x-www-form-urlencodedPOST)methodheadersbodyr-   r.   )	get_local_ip_address_wasmurllibparse	urlencodeencoder#   wait_forr   TimeoutError)r   r   r:   r9   s       r   r%   r%   E   s      8::::::::D <!!$''..w77D;GCdKKK
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
    s   -B   BBc                 F   	 t          j        t          d          } | st          |                     d                                          }t          j        t          d          	                                d         }t          |          t          |          k    r't          d| d| d           t          d	           d S d S # t          j        j        $ r t          j        d
           Y d S t           $ r t          j        d           Y d S t"          $ r Y d S w xY w)Nzversion.txtr6      )r   r.   versionz(IMPORTANT: You are using gradio version z, however version z is available, please upgrade.z--------z1unable to parse version details from package URL.z*package URL does not contain version info.)pkgutilget_data__name__FileNotFoundErrordecodestripr0   getPKG_VERSION_URLjsonr   printdecoderJSONDecodeErrorwarningswarnKeyError	Exception)version_datacurrent_pkg_versionlatest_pkg_versions      r   version_checkrY   X   sq   '-@@ 	$##*11'::@@BB%\oqIIINNPP
 +,,}=P/Q/QQQV;N V V#5V V V   * RQ <' K K KIJJJJJJ D D DBCCCCCC   s   CC (D 3D 	D D c                    t                      sdS t          j        d	 t          j        dd          j                                        } n(# t          j        t          j        j	        f$ r d} Y nw xY w| t          _        nt          j        } | S )a  
    Gets the public IP address or returns the string "No internet connection" if unable
    to obtain it or the string "Analytics disabled" if a user has disabled analytics.
    Does not make a new request if the IP address has already been obtained in the
    same Python session.
    Analytics disabledNzhttps://checkip.amazonaws.com/rD   r;   No internet connection)
r   r   r,   r0   rL   textrK   r2   r3   r4   )r,   s    r   r/   r/   o   s      $##!	2!0!  5577 J ((*=*IJ 	2 	2 	21JJJ	2''
s   -A "A10A1c                 b  K   t                      sdS t          j        	 t          j        t          d          d           d{V } |                                  d{V }|                                }n# t          j        t          f$ r d}Y nw xY w|t          _        nt          j        }|S )z6The Wasm-compatible version of get_local_ip_address().r[   Nzhttps://api.ipify.orgr-   r;   r\   )
r   r   r,   r#   rA   r   stringrK   rB   OSError)responseresponse_textr,   s      r   r<   r<      s       $##!	2$-+          H (0'8'8!8!8!8!8!8!8M&,,..JJ$g. 	2 	2 	21JJJ	2''
s   AA8 8BBc                X    t                      sd S t          t           d|            d S )Nzgradio-initiated-analytics/r    r   r*   ANALYTICS_URLr   s    r   initiated_analyticsrg      sE     999     r   blocksgradio.Blocksc                8    t                      sd S g g g g f\  }}}}ddlm} t           j                                                  D ][}t          ||          r'|                    |                                          n!|                    t          |                     \ j
        D ]G}| fd|d         D             z   }| fd|d         D             z   }| fd|d         D             z   }Ht           j         j         j        d u j         j         j         j         j        d	k    r j        n| j        d	k    r j        n|||d
  j
        D             t,          j        d}|                    |           t3          t4           d|           d S )Nr   )BlockContextc                V    g | ]%}|j         v t          j         |                   &S r   rh   r   .0yrh   s     r   
<listcomp>z&launched_analytics.<locals>.<listcomp>   sA     1
 1
 1
 FM!! a !!!!!r   targetsc                V    g | ]%}|j         v t          j         |                   &S r   rm   rn   s     r   rq   z&launched_analytics.<locals>.<listcomp>   s;     /
 /
 /
&'!v}:L:LCa !!:L:L:Lr   inputsc                V    g | ]%}|j         v t          j         |                   &S r   rm   rn   s     r   rq   z&launched_analytics.<locals>.<listcomp>   s;     1
 1
 1
&'1;M;MCa !!;M;M;Mr   outputs	interfacec                8    g | ]}t          |d                    S )trigger)r   )ro   xs     r   rq   z&launched_analytics.<locals>.<listcomp>   s$    BBB3q|$$BBBr   )rE   	is_kaggleis_sagemaker
using_authdev_modeshow_api
show_errortitlert   rv   rr   rh   eventsis_wasmzgradio-launched-telemetry/r    )r   gradio.blocksrk   listrh   values
isinstanceappendget_block_namer   dependenciesr   r{   r|   authr~   r   r   r   modeinput_componentsoutput_componentsr   r"   updater*   re   )	rh   r   blocks_telemetryinputs_telemetryoutputs_telemetrytargets_telemetryrk   rz   additional_datas	   `        r   launched_analyticsr      sE     	


	PL&(9;L +*****&-&&(()) / /7A|8
 8
 	/ 0 0 2 2333&&s1vv..  
 
- 1
 1
 1
 1
 y\1
 1
 1
 
 , /
 /
 /
 /
+,X;/
 /
 /
 
 . 1
 1
 1
 1
+,Y<1
 1
 1
 
 "%+k-OO';+%% ));+%% ++$"BBf.ABBB%% O* 	KK   JJJQUVVVVVVr   c                X    t                      sd S t          t           d|            d S )Nzgradio-integration-analytics/r    rd   rf   s    r   integration_analyticsr      sE     ;;;     r   messagec                `    t                      sdS d| i}t          t           d|           dS )zg
    Send error analytics if there is network
    Parameters:
        message: Details about error
    Nerrorzgradio-error-analytics/r    rd   )r   r   s     r   error_analyticsr      sQ      WD555     r   )r   r   )r   r   r   r   r   r   )r   r   )r   r   r   r   )rh   ri   r   r   r   r   )r   r   r   r   )'__doc__
__future__r   r#   rN   r   rF   r&   urllib.parser=   rR   distutils.versionr   typingr   r0   gradior   gradio.contextr   gradio.utilsr   pyodide.httpr	   r   ImportErrorre   rM   r   r*   r(   r%   rY   r/   r<   rg   r   r   r   r   r   r   <module>r      s   5 5 " " " " " "   				           + + + + + +               " " " " " " ' ' ' ' ' '
7777777 
 
 

 
 
 
 

 *6C C C C   $      &  .   .   0   6W 6W 6W 6Wr        s   A AA