
    wi!                    <   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 n# e$ r d
 ZY nw xY wdZdZd1dZd2dZd3dZd3dZd4dZ d Z!d5dZ"d6dZ#	 	 	 	 	 d7d8d+Z$d9d,Z%d9d-Z&d5d.Z'd:d0Z(dS );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          )Nz:pyodide.http.pyfetch is not available in this environment.)NotImplementedError)_args_kwargss     `/root/.openclaw/workspace/chatterbox_venv_py311/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strc                4    | 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     $$&&&r   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   topicdatadict[str, Any]Nonec                    t           j        r%t          j        t	          | |                     d S t          j        t          | |d                                           d S )N)urlr"   r!   r"   )targetkwargs)	r   IS_WASMasyncioensure_future_do_wasm_analytics_request	threadingThread_do_normal_analytics_requeststartr'   s     r   _do_analytics_requestr2   2   s     &  	
 	
 	
 	
 	
 	/ 	
 	
 	
 %'''''r   c                v    	 t          | d|                    d          |           d S # t          $ r Y d S w xY w)Ngradioversion)r!   library_namelibrary_version
user_agent)r   get	Exceptionr'   s     r   r0   r0   D   sd    !! HHY//		
 	
 	
 	
 	
 	
    s   &* 
88r&   c                   K   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)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77D;GCdKKK
 
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
    s   -A) )A<;A<c                    	 t                      } t          j        t          d                                          d         }t          |          t          |           k    rt          j        d|  d| 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)	N   )r&   rB   r5   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	   httpxr9   PKG_VERSION_URLjsonr   warningswarndecoderJSONDecodeErrorKeyErrorr:   )current_pkg_versionlatest_pkg_versions     r   version_checkrU   a   s(   133"Y?AFFFKKMMiX%&&1D)E)EEEM;N  #5       FE <' K K KIJJJJJJ D D DBCCCCCC   s   A<B (C-C	CCc                x    t                      sd S t          j        sdn	t           d}t	          ||            d S )Nzgradio/initiatedzgradio-initiated-analytics/r'   r    r   r*   ANALYTICS_URLr2   r"   r!   s     r   initiated_analyticsrZ   s   sb      !	;::: 

      r   blocksgradio.Blocksc                    t                      sd S g g g g g f\  }}}}}t           j                                                  D ])}|                    |                                           * j                                        D ]Z}| fd|j        D             z   }| fd|j        D             z   }| fd|j        D             z   }| fd|j	        D             z   }[dd}d t                      D             t                       j         j        d u j         | j         j        |           | j         j        |          |||t$          j        d
}	fd|D             }
t)          |
          dk    }||	d<   |
|	d<   |                    |	           t$          j        sdn	t,           d}t/          ||           d S )Nc                    g | ]C}|d          j         v j         t          |d                                                             DS )r   r[   intr   .0yr[   s     r   
<listcomp>z&launched_analytics.<locals>.<listcomp>   sS     1
 1
 1
 tv}$$ M#ad))$3355$$$r   c                >    g | ]}|d          j         v |d         S )r      )r[   ra   s     r   rd   z&launched_analytics.<locals>.<listcomp>   s4     /
 /
 /
qtv}'<'<AaD'<'<'<r   c                z    g | ]7}|j         v j         t          |                                                   8S r   r_   ra   s     r   rd   z&launched_analytics.<locals>.<listcomp>   sI     /
 /
 /
FM!! M#a&&!0022!!!r   c                z    g | ]7}|j         v j         t          |                                                   8S r   r_   ra   s     r   rd   z&launched_analytics.<locals>.<listcomp>   sI     1
 1
 1
FM!! M#a&&!0022!!!r   moder   
components(list[gradio.components.Component] | Nonefallback	list[str]r   list[str] | Nonec                2    | dk    r|rd |D             nd S |S )N	interfacec                6    g | ]}|                                 S r   r   )rb   bs     r   rd   zBlaunched_analytics.<locals>.get_inputs_outputs.<locals>.<listcomp>   s$    ;;;1A$$&&;;;r   r   )ri   rj   rl   s      r   get_inputs_outputsz.launched_analytics.<locals>.get_inputs_outputs   s3    
 ;?IS;;
;;;;tSr   c                ,    g | ]}t          |          S r   rr   )rb   cs     r   rd   z&launched_analytics.<locals>.<listcomp>   s     KKKQ~a((KKKr   )
r5   is_hosted_notebook
using_authdev_modeinputsoutputstargetsr[   eventsis_wasmc                    g | ]}|v|	S r   r   )rb   rs   core_componentss     r   rd   z&launched_analytics.<locals>.<listcomp>   s#    QQQq8P8P8P8P8Pr   r   using_custom_componentcustom_componentszgradio/launchedzgradio-launched-telemetry/r'   )ri   r   rj   rk   rl   rm   r   rn   )r    listr[   valuesappendr   fnsr|   rz   r{   r   r	   rw   authry   ri   input_componentsoutput_componentsr   r*   lenupdaterX   r2   )r[   r"   blocks_telemetryinputs_telemetryoutputs_telemetrytargets_telemetryevents_telemetryxrt   additional_datar   r   r!   r   s   `            @r   launched_analyticsr      s     	



	 &-&&(()) 4 4 0 0 2 23333Z   
 
- 1
 1
 1
 1
 Y1
 1
 1
 
 , /
 /
 /
 /
)/
 /
 /
 
 , /
 /
 /
 /
X/
 /
 /
 

 . 1
 1
 1
 1
Y1
 1
 1
 
    LK2H2J2JKKKO '(($7k-O$$K02B
 
 &%K13D
 
 %""% O  RQQQ$4QQQ !233a70FO,-+<O'(KK    !	:999 
 D111111r   commandtemplate
str | Noneupload_pypibool | Noneupload_demoupload_sourcegenerate_docsbump_versionnpm_installpython_pathgradio_pathc
                b    | |||||||||	d
}
t                      sd S t          d|
           d S )N)
r   r   r   r   r   r   r   r   r   r   zgradio/custom-componentsr'   r    r2   )r   r   r   r   r   r   r   r   r   r   r"   s              r   custom_component_analyticsr      sj     ""&&$""" D  (     r   c                 P    ddi} t                      sd S t          d|            d S )Nr   sketchzgradio/sketchr'   r   r"   s    r   sketch_analyticsr      sJ    8D       r   c                 P    ddi} t                      sd S t          d|            d S )Nr   vibezgradio/viber'   r   r   s    r   vibe_analyticsr     sJ    6D       r   c                x    t                      sd S t          j        sdn	t           d}t	          ||            d S )Nzgradio/integrationzgradio-integration-analytics/r'   rW   rY   s     r   integration_analyticsr     sb      !	=<<< 

      r   messagec                    t                      sdS d| i}t          j        sdn	t           d}t	          ||           dS )zg
    Send error analytics if there is network
    Parameters:
        message: Details about error
    Nerrorzgradio/errorzgradio-error-analytics/r'   rW   )r   r"   r!   s      r   error_analyticsr      sl      WD !	7666 

      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$   )NNNNN)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$   ))__doc__
__future__r   r+   rM   r   r.   urllib.parserC   rN   typingr   rK    huggingface_hub.utils._telemetryr   packaging.versionr   r4   r   gradio.utilsr   r	   pyodide.httpr
   r   ImportErrorrX   rL   r   r    r2   r0   r-   rU   rZ   r   r   r   r   r   r   r   r   r   <module>r      sN   3 3 " " " " " "   				                 F F F F F F % % % % % %        D D D D D D D D
7777777 
 
 

 
 
 
 

 *6' ' ' 'C C C C   $	 	 	 	   "  $   Q2 Q2 Q2 Q2t "& $"""    B
 
 
 

 
 
 
        s   
A AA