
    	D,jS                         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	m
Z
 d dlmZ d dlmZ d dlmZ dZd	 Zd
 ZdZdZdZ G d d          Zedk    r e ee                     dS dS )    N)Path)MixpanelException)Posthog)__version__)dump)model_info_manager
   c                 H    t          t          d| z  dz            d          S )zConvert percentage to 6-digit hex threshold.

    Args:
        percent: Percentage threshold (0-100)

    Returns:
        str: 6-digit hex threshold
    i d   06x)formatint)percents    ^/home/rurouni/.local/share/uv/tools/aider-chat/lib/python3.11/site-packages/aider/analytics.pycompute_hex_thresholdr      s&     #h(3.//777    c                     d|cxk    rdk    sn t          d          | sdS |dk    rdS t          |          }| dd         |k    S )zCheck if a UUID string falls within the first X percent of the UUID space.

    Args:
        uuid_str: UUID string to test
        percent: Percentage threshold (0-100)

    Returns:
        bool: True if UUID falls within the first X percent
    r   r   z$Percentage must be between 0 and 100FN   )
ValueErrorr   )uuid_strr   	thresholds      r   is_uuid_in_percentager      so     C?@@@ u !||u%g..IBQB<9$$r    6da9a43058a5d1b9f3353153921fb04d/phc_99T7muzafUMMZX15H8XePbMSreEUzahHbtWjy3l5Qbvzhttps://us.i.posthog.comc                   z    e Zd ZdZdZdZdZdZdZ	 	 	 	 ddZ	d Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd ZddZdS )	AnalyticsNFc                     || _         |                                  || _        || _        | j        s	|s| j        s|                     |           d S d S N)logfileget_or_create_uuidcustom_posthog_hostcustom_posthog_project_api_keypermanently_disableasked_opt_indisable)selfr   r#   posthog_hostposthog_project_api_keys        r   __init__zAnalytics.__init__I   sm     !!!#/ .E+# 	.': 	.$BS 	.LL,-----	. 	.r   c                 J   | j         s|                     d           d S | j        r|                     d           d S | j        s|                     d           d S t	          | j        pt          | j        pt          | j	        d| 
                                          | _        d S )NFT)project_api_keyhoston_errorenable_exception_autocapturesuper_properties)user_idr%   r#   r$   r   r"   r(   r!   r'   posthog_errorget_system_infophr&   s    r   enablezAnalytics.enableX   s    | 	LLF# 	LLF  	LLF  ?ZCZ)9\')-!1133
 
 
r   c                 n    d | _         d | _        |r$d| _        d| _        |                                  d S d S )NT)mpr3   r$   r#   	save_data)r&   permanentlys     r   r%   zAnalytics.disablen   sH     	 $D'+D$NN	 	r   c                     |du rdS | j          o| j         }|sdS |du rdS |
J |            | j        sdS t          | j        t                    S )NFT)r$   r#   r0   r   PERCENT)r&   args_analytics	could_asks      r   need_to_askzAnalytics.need_to_askw   sz    U""5))J$2J.J	 	5T!!4%%~%%%| 	5$T\7;;;r   c                     	 t          j                    dz  dz  }|j                            dd           |S # t          $ r |                     d           Y d S w xY w)Nz.aiderzanalytics.jsonT)parentsexist_okFr9   )r   homeparentmkdirOSErrorr%   )r&   	data_files     r   get_data_file_pathzAnalytics.get_data_file_path   su    		h.1AAI""4$"??? 	 	 	LLUL+++44	s   69  AAc                     |                                   | j        rd S t          t          j                              | _        |                                  d S r   )	load_datar0   struuiduuid4r8   r4   s    r   r    zAnalytics.get_or_create_uuid   sL    < 	F4:<<((r   c                    |                                  }|sd S |                                r	 t          j        |                                          }|                    d          | _        |                    d          | _        |                    dd          | _        d S # t          j	        j
        t          f$ r |                     d           Y d S w xY wd S )Nr#   rL   r$   FrB   )rH   existsjsonloads	read_textgetr#   r0   r$   decoderJSONDecodeErrorrF   r%   r&   rG   datas      r   rJ   zAnalytics.load_data   s    ++--	 	F 	00z)"5"5"7"788+/884I+J+J(#xx//$(HH^U$C$C!!!L0': 0 0 0//////0	0 	0s   A5B% %1CCc                    |                                  }|sd S t          | j        | j        | j                  }	 |                    t          j        |d                     d S # t          $ r | 	                    d           Y d S w xY w)N)rL   r#   r$      )indentFrB   )
rH   dictr0   r#   r$   
write_textrP   dumpsrF   r%   rV   s      r   r8   zAnalytics.save_data   s    ++--	 	F $ 8*
 
 
	,  D!;!;!;<<<<< 	, 	, 	,LLUL++++++	,s   )A& & B
	B
c                     t           j                                        d         t          j                    t          j                    t          j                    t          dS )Nr   )python_versionos_platform
os_releasemachineaider_version)sysversionsplitplatformsystemreleaserb   r   r4   s    r   r2   zAnalytics.get_system_info   sM    !k//11!4#?,,"*,,'))(
 
 	
r   c                     |sd S t          j        |j                  }|r|j        S d|j        v r#|j                            d          d         dz   S d S )N/r   z	/REDACTED)r   get_model_from_cached_json_dbnamerf   )r&   modelinfos      r   _redact_model_namezAnalytics._redact_model_name   sc     	4!?
KK 	::EJ:##C((+k99tr   c                 2    t          d           d| _        dS )z"disable posthog if we get an errordXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXN)printr3   r4   s    r   r1   zAnalytics.posthog_error   s    i r   c                    | j         s| j        s	| j        sd S i }|rR|                     |          |d<   |                     |j                  |d<   |                     |j                  |d<   |                    |           |                                D ]9\  }}t          |t          t          f          r|||<   't          |          ||<   :| j         rG	 | j                             | j        |t          |                     n# t          $ r
 d | _         Y nw xY w| j        r/| j                            || j        t          |                     | j        r||| j        t          t#          j                              d}	 t%          | j        d          5 }t'          j        ||           |                    d           d d d            d S # 1 swxY w Y   d S # t,          $ r Y d S w xY wd S )N
main_model
weak_modeleditor_model)distinct_id
properties)eventry   r0   timea
)r7   r3   r   rp   rv   rw   updateitems
isinstancer   floatrK   trackr0   r[   r   capturer{   openrP   r   writerF   )	r&   
event_nameru   kwargsry   keyvalue	log_entryfs	            r   rz   zAnalytics.event   sk   w 	tw 	t| 	F
 	Z'+'>'>z'J'JJ|$'+'>'>z?T'U'UJ|$)-)@)@AX)Y)YJ~&&!!! %**,, 	- 	-JC%#u.. -"'
3"%e**
37 	dlJZ8H8HIIII$    7 	_GOOJDLTR\M]M]O^^^< 	#(<DIKK((	 I$,,, "Ii+++GGDMMM" " " " " " " " " " " " " " " " " "    	 	sH   .D DDG! +GG! GG! GG! !
G/.G/)NFNNr   )__name__
__module____qualname__r7   r3   r0   r#   r$   r   r)   r5   r%   r>   rH   r    rJ   r8   r2   rp   r1   rz    r   r   r   r   <   s       	B	B GL G ! $. . . .
 
 
,  < < <$    0 0 0, , ,"
 
 
	 	 	  ) ) ) ) ) )r   r   __main__)rP   rg   rd   r{   rL   pathlibr   mixpanelr   posthogr   aiderr   
aider.dumpr   aider.modelsr   r;   r   r   mixpanel_project_tokenr(   r'   r   r   r   r   r   <module>r      s<     



         & & & & & &                   + + + + + +
	8 	8 	8% % %2 < K )B B B B B B B BJ zD		w	'	'((((( r   