
    8P[i                    N   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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)core_gradio_componentsget_package_version)pyfetchc                     K   t        d      w)Nz:pyodide.http.pyfetch is not available in this environment.)NotImplementedError)_args_kwargss     ^/var/www/html/chatbot/Makanify-Chatbot-2/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 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                  t        | |d      j                          y )Ntopicdata)targetkwargs)	threadingThread_do_normal_analytics_requeststartr   s     r   _do_analytics_requestr'   1   s'    +
 egr   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%   ;   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encodeasynciowait_forr   TimeoutError)urlr    r5   r4   s       r   _do_wasm_analytics_requestr@   G   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?   r7   r*   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   httpxr.   PKG_VERSION_URLjsonr   warningswarndecoderJSONDecodeErrorKeyErrorr/   )current_pkg_versionlatest_pkg_versions     r   version_checkrM   X   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                F    t               sy t         d}t        ||        y )Nzgradio-initiated-analytics/r   r   ANALYTICS_URLr'   r    r   s     r   initiated_analyticsrR   j   s&    o89Er   c           
     `   t               sy g g g g g f\  }}}}}t        | j                  j                               D ]!  }|j	                  |j                                # | j                  j                         D ](  }||j                  D cg c]<  }|d   | j                  v r)| j                  t        |d            j                         > c}z   }||j                  D cg c]  }|d   | j                  v s|d    c}z   }||j                  D cg c]6  }|| j                  v r&| j                  t        |         j                         8 c}z   }||j                  D cg c]6  }|| j                  v r&| j                  t        |         j                         8 c}z   }+ 	 	 	 	 	 	 	 	 d	d}	t               D 
cg c]  }
t        |
       }}
t               | j                  | j                  d u| j                   |	| j                   | j"                  |       |	| j                   | j$                  |      |||d	}|D cg c]	  }||vs| }}t'        |      dkD  }||d<   ||d<   |j)                  |       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   *)	r*   is_hosted_notebook
using_authdev_modeinputsoutputstargetsblockseventsusing_custom_componentcustom_componentszgradio-launched-telemetry/r   )rW   strrX   z(list[gradio.components.Component] | NonerY   z	list[str]returnzlist[str] | None)r   listrb   valuesappendr   fnsra   intr_   r`   r   r   r\   authr^   rW   input_componentsoutput_componentslenupdaterP   r'   )rb   r    blocks_telemetryinputs_telemetryoutputs_telemetrytargets_telemetryevents_telemetryxyr[   ccore_componentsadditional_datarZ   re   rd   r   s                    r   launched_analyticsr|   u   s    	



	 &--&&() 4 0 0 234ZZ  
- YY1
 tv}}$ MM#ad)$3351
 
 ,))/
qtv}}'<AaD/
 
 ,XX/
FMM! MM#a&!002/
 

 .YY1
FMM! MM#a&!002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 o78ED1o1
/
/

1
 L" Rs1   AJ"J9J;J#;J!>J&	J+J+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~   vibezgradio/viber   r   )r    s    r   vibe_analyticsr      s'    6D r   c                F    t               sy t         d}t        ||        y )Nzgradio-integration-analytics/r   rO   rQ   s     r   integration_analyticsr      s&    o:;Er   c                N    t               syd| i}t         d}t        ||       y)zg
    Send error analytics if there is network
    Parameters:
        message: Details about error
    Nerrorzgradio-error-analytics/r   rO   )messager    r   s      r   error_analyticsr      s2     WDo45Er   )rg   rf   )rg   bool)r   rf   r    dict[str, Any]rg   None)r?   rf   r    r   rg   r   )r    r   rg   r   )rb   zgradio.Blocksr    r   rg   r   )NNNNN)r~   rf   r   
str | Noner   bool | Noner   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r   )rg   r   )r   rf   rg   r   )'__doc__
__future__r   r<   rE   r   r#   urllib.parser8   rF   typingr   rC    huggingface_hub.utils._telemetryr   packaging.versionr   r)   gradio.utilsr   r   pyodide.httpr	   r   ImportErrorrP   rD   r   r   r'   r%   r@   rM   rR   r|   r   r   r   r   r   r   r   <module>r      s   3 "   	      F %  D
7 *6'C	"$L2j "& $"""  	
       
B
M  


s   B B$#B$