o
    Zhp                     @  sX  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m	Z	m
Z
 d dlZd dlmZ d dlmZmZ d dlmZ ejrWedZedZejeejejejejf f ZeeZd	Zd
Z dZ!dZ"dZ#e	d
dd%ddZ$e	d
dd%ddZ%d&ddZ&e	d
de&d'ddZ'G dd deZ(G dd de(Z)G d d! d!e(Z*e&d(d#d$Z+dS ))    )annotationsN)	lru_cachewraps)user_data_dir)	BaseModelField)get_debug_modePTz https://t.explodinggradients.com   ZragasRAGAS_DO_NOT_TRACKZ__RAGAS_DEBUG_TRACKING)maxsizereturnboolc                   C     t jttd dkS NFtrue)osenvirongetr   strlower r   r   G/var/www/html/lang_env/lib/python3.10/site-packages/ragas/_analytics.pydo_not_track    s   r   c                   C  r   r   )r   r   r   RAGAS_DEBUG_TRACKINGr   r   r   r   r   r   _usage_event_debugging'   s   r   funct.Callable[P, T]c                   s   t  d	 fdd}|S )
NargsP.argskwargsP.kwargsr   t.Anyc               
     s   z | i |W S  t y@ } z,t r(t r!tjd|ddd |td| ntd| W Y d }~d S W Y d }~d S d }~ww )NzTracking Error: %sT   )
stack_info
stacklevel)	Exceptionr   r   loggererrorinfodebug)r   r!   errr   r   r   wrapper/   s   zsilent.<locals>.wrapper)r   r    r!   r"   r   r#   )r   )r   r.   r   r-   r   silent-   s   r/   r   c                  C  s   t td} tj| d}tj|rtt|d }|S dt	
 j }t|  t|d}td|i| W d    |S 1 sBw   Y  |S )N)appnamez	uuid.jsonZuseridza-w)r   USER_DATA_DIR_NAMEr   pathjoinexistsjsonloadopenuuiduuid4hexmakedirsdump)Zuser_id_pathZuuid_filepathuser_idfr   r   r   
get_useridB   s   


r@   c                   @  s(   e Zd ZU ded< eedZded< dS )	BaseEventr   Z
event_type)default_factoryr>   N)__name__
__module____qualname____annotations__r   r@   r>   r   r   r   r   rA   Q   s   
 rA   c                   @  s.   e Zd ZU ded< ded< ded< ded< dS )	EvaluationEventt.List[str]Zmetricsr   Zevaluation_modeintnum_rowslanguageNrC   rD   rE   rF   r   r   r   r   rG   V   
   
 rG   c                   @  s.   e Zd ZU ded< ded< ded< ded< d	S )
TestsetGenerationEventrH   Zevolution_nameszt.List[float]Zevolution_percentagesrI   rJ   r   rK   NrL   r   r   r   r   rN   ]   rM   rN   event_propertiesc                 C  s<   t  rd S t| }t rtd| d S tjt|td d S )NzTracking Payload: %s)r6   timeout)	r   dictr   r(   r*   requestspostUSAGE_TRACKING_URLUSAGE_REQUESTS_TIMEOUT_SEC)rO   payloadr   r   r   trackd   s   rW   )r   r   )r   r   r   r   )r   r   )rO   rA   ),
__future__r   r6   loggingr   typingtr9   	functoolsr   r   rR   appdirsr   Zlangchain_core.pydantic_v1r   r   Zragas.utilsr   TYPE_CHECKING	ParamSpecr	   TypeVarr
   Callable	CoroutineAnyZ	AsyncFunc	getLoggerrC   r(   rT   rU   r2   r   r   r   r   r/   r@   rA   rG   rN   rW   r   r   r   r   <module>   sD    

 

