o
    Q5i$                     @   sx  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m	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ ejrcd dlZd dlmZ ejrjd dlZejooej Z!edd Z"e	G dd dZ#edd Z$edd Z%edd Z&ede'fddZ(edd Z)edd Z*e	G dd de#Z+G d d! d!Z,e, Z-dS )"    N)abstractmethod)asdict	dataclassfield)cache)Path)Any)CHECK_POSTHOGCHECK_TORCH)
EngineArgs)MANAGER)logger)ModelCapabilites)Posthogc                   C   s   t r	td d S tdS )NzOAnonymized telemetry can be disabled via environment variable `DO_NOT_TRACK=1`.zDDO_NOT_TRACK=1 registered. Anonymized usage statistics are disabled.)TELEMETRY_ENABLEDr   info r   r   d/lsinfo/ai/hellotax_ai/llm_service/venv_embed/lib/python3.10/site-packages/infinity_emb/telemetry.pytelemetry_log_info   s
   
r   c                   @   s8   e Zd Zedeeef fddZedefddZdS )ProductTelemetryEventreturnc                 C      d S Nr   selfr   r   r   render'      zProductTelemetryEvent.renderc                 C   r   r   r   r   r   r   r   name*   r   zProductTelemetryEvent.nameN)	__name__
__module____qualname__r   dictstrr   r   r   r   r   r   r   r   %   s
    r   c                  C   sT   g } |  t j |  t j |  t j d| }t|	 
 }|S )N|)appendplatformunamereleaseversionmachinejoinhashlibsha256encode	hexdigest)
attributesfingerprint_strfingerprint_hashr   r   r   get_system_anonymous_name.   s   
r2   c                  C   s   ddl m}  | S )Nr   __version__)infinity_embr4   r3   r   r   r   infinity_versionA   s   r6   c                  C   sZ   d} d}d}t jr'tj r'tjd}tj } t|j}t|j	d d }| ||dS )Nr    i@B    )	gpu_countgpu_typegpu_memory_per_device_mb)
r
   is_availabletorchcudaget_device_propertiesdevice_countr"   r   inttotal_memory)r9   r:   r;   device_propertyr   r   r   get_system_propertiesH   s   


rD   r   c            	      C   s   ddi} |   D ]\}}tj|r|  S qg d}ddddd}|D ]#}t|}| rG|  }|  D ]\}}||v rF|    S q8q$d	S )
NRUNPOD_DC_IDRUNPOD)z!/sys/class/dmi/id/product_versionz/sys/class/dmi/id/bios_vendorz/sys/class/dmi/id/product_namez#/sys/class/dmi/id/chassis_asset_tagz/sys/class/dmi/id/sys_vendorAWSAZUREGCPOCI)amazonzmicrosoft corporationgoogleoraclecloudUNKNOWN)itemsosenvirongetr   is_file	read_textlower)	env_to_cloud_providerenv_varprovidervendor_filescloud_identifiersvendor_filepathfile_content
identifierr   r   r   _detect_cloud_provider[   s,   	r_   c                  C   sx   z
dd l } |  }W n ty   i }Y nw |dd|dddt|ddt|ddt|d	dgd
S )Nr   count	brand_rawr7   ,familymodelstepping)r`   cpu_typecpu_family_model_stepping)cpuinfoget_cpu_info	ExceptionrR   r*   r"   )ri   r   r   r   r   _get_cpu_info   s   

rl   c                  C   sL   zdd l } |  jd }W n ty   d}Y nw t t t |dS )Nr   r8   ra   )rP   architecturer)   rB   )psutilvirtual_memorytotalrk   r%   systemr)   	processor)rn   memoryr   r   r   _get_os_info   s   rt   c                   @   sB  e Zd ZU ded< eed< ed ed< eed< eedZ	eed< ed	d
 dZ
eed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< edd
 dZeed< eedZeed< dd  Zd!d" Zd#S )$StartupTelemetryr   engine_argsnum_enginesr   capabilities
session_id)default_factorycloud_providerc                   C   
   t  d S )NrP   rt   r   r   r   r   <lambda>      
 zStartupTelemetry.<lambda>rP   c                   C   r|   )Nrm   r}   r   r   r   r   r~      r   rm   c                   C   r|   )Nr)   r}   r   r   r   r   r~      r   r)   c                   C   r|   )Nr`   rl   r   r   r   r   r~      r   	cpu_countc                   C   r|   )Nrg   r   r   r   r   r   r~      r   rg   c                   C   r|   )Nrh   r   r   r   r   r   r~      r   rh   c                   C   r|   )NrB   r}   r   r   r   r   r~      r   rB   c                   C   r|   )Nr9   rD   r   r   r   r   r~      r   r9   c                   C   r|   )Nr:   r   r   r   r   r   r~      r   r:   c                   C   r|   )Nr;   r   r   r   r   r   r~      r   r;   r(   c                 C   sp   t | j}dd |d D }i ||| j| j| j| j| j| j	| j
| j| j| j| j| j| j| j| jdS )z)defines the message to be sent to posthogc                 S   s   i | ]\}}t |t |qS r   )r"   ).0kvr   r   r   
<dictcomp>   s    z+StartupTelemetry.render.<locals>.<dictcomp>_loading_strategy)ry   rw   rx   r{   rm   rP   r)   r   rg   rh   rB   r9   r:   gpu_memory_per_devicer(   )r   rv   poprO   ry   rw   rx   r{   rm   rP   r)   r   rg   rh   rB   r9   r:   r;   r(   )r   ealoading_strategyr   r   r   r      s.   
zStartupTelemetry.renderc                 C   s   dS )N
startup_v1r   r   r   r   r   r      r   zStartupTelemetry.nameN)r   r   r    __annotations__rA   setr"   r   r_   r{   rP   rm   r)   r   rg   rh   rB   r9   r:   r;   r6   r(   r   r   r   r   r   r   ru      s.   
 ru   c                   @   s6   e Zd Zdd Zeedd Zdeddfdd	ZdS )
_PostHogCapturec                 C   s|   d | _ d| _tsd| _d S dtjv rd| _dt_zd}t|d| jd| _ t	d}d|_W d S  t
y=   td Y d S w )	NFTpytest/phc_IOq2AjB200yaxV2qtYTmhAacFE4x42RKOW0K0G5v5uhzhttps://eu.i.posthog.com)project_api_keyhostdisabledposthogzFailed to startup posthog)_posthog_posthog_disabledr   sysmodulesr   r   r   logging	getLoggerrk   r   debug)r   r   posthog_loggerr   r   r   __init__   s*   

z_PostHogCapture.__init__c                 C   s   t  S r   )r2   r   r   r   r   anonymous_user_id   s   z!_PostHogCapture.anonymous_user_ideventr   Nc              
   C   sn   | j d u rd S z| j j| j| | d W d S  ty6 } ztd| d|  W Y d }~d S d }~ww )N)distinct_idr   
propertieszFailed to send telemetry event z: )r   capturer   r   r   rk   r   r   )r   r   er   r   r   r      s   
$z_PostHogCapture.capture)	r   r   r    r   propertyr   r   r   r   r   r   r   r   r      s    r   ).r+   r   rP   r%   r   abcr   dataclassesr   r   r   	functoolsr   pathlibr   typingr   infinity_emb._optional_importsr	   r
   infinity_emb.argsr   infinity_emb.envr   infinity_emb.log_handlerr   infinity_emb.primitivesr   r<   r   r   r=   anonymous_usage_statsr   r   r   r2   r6   rD   r"   r_   rl   rt   ru   r   PostHogr   r   r   r   <module>   sR    
	


$

4
1