o
    Rh m                     @   s  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 zd dlmZ W n e	y/   dZY nw dZ
erd dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ eeee eee f ed f Zed	 Zed
i deed eeeef  f dedeeeee f f dedee! dedeeeef  dedeed eeeef  f dedededeeef dee ded de deeee f eeeee f  eee f eee eed eeeef  f ee eed eee f eee f dd d!Z"ed"d#d#Z#e$d$Z%d%Z&d&d' Z'd(d) Z(dqd*d+Z)G d,d- d-Z*erAed.Z+ee*e+f Z,d/d0 Z-d1d2 Z.d3d4d5e/fd6d7Z0d8d9 Z1			dd:d;Z2	dqd<d=Z3d>d? Z4d@dA Z5dBdC Z6		D	D		drdEdFZ7	D	D	dsdGdHZ8dIdJ Z9dKdL Z:					dtdMdNZ;e<e=dOZ>e>rdPdQ Z?ndRdQ Z?			 	 	dudSdTZ@		dvdUdVZAdWdX ZBdYdZ ZCd[d\ ZDdd]d^ZEdqd_d`ZFdadb ZG		dvdcddZHdedf ZIdgdh ZJdidj ZKdkdl ZLdmdn ZMdqdodpZNdS )w    N)datetime)TYPE_CHECKING)BaseExceptionGroupi   )	FrameTypeTracebackType)AnyCallableDictIteratorListLiteralOptionalSetTupleType	TypedDictTypeVarUnioncast)NNN)fatalcriticalerrorwarninginfodebugEventbreadcrumbsvaluescheck_in_idcontextsdistdurationenvironmenterrorsevent_id	exceptionlevelloggermessagemodulesmonitor_slugplatformpythonprofilerelease)check_intransaction)requestserver_namespans
stacktracestart_timestampstatusthreads	timestampr0   typeuser_metrics_summaryF)totali     z^[a-zA-Z0-9/+=]*$z
[Filtered]c                 C   s   | t   S N)epochtotal_secondsvalue rC   Y/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/posthog/exception_utils.pyto_timestampr      rE   c                 C   s
   |  dS )Nz%Y-%m-%dT%H:%M:%S.%fZ)strftimerA   rC   rC   rD   format_timestampw   s   
rH   c                 C   s2   | du r	t  } nt| } | d du rd} d| iS )z+Creates a hint with the exc info filled in.Nr   exc_info)sysrI   exc_info_from_errorrI   rC   rC   rD   event_hint_with_exc_info|   s   
rM   c                   @   sH   e Zd ZdZdZdd Zdd Zedd Zed	d
 Z	edd Z
dS )AnnotatedValuezA
    Meta information for a data field in the event payload.
    rB   metadatac                 C   s   || _ || _d S r>   rO   )selfrB   rP   rC   rC   rD   __init__   s   
zAnnotatedValue.__init__c                 C   s&   t |tsdS | j|jko| j|jkS )NF)
isinstancerN   rB   rP   )rQ   otherrC   rC   rD   __eq__   s   
zAnnotatedValue.__eq__c                 C      t ddddggidS )zxThe value was removed because it could not be parsed. This is done for request body values that are not json nor a form. remz!rawxrO   rN   clsrC   rC   rD   removed_because_raw_data      z'AnnotatedValue.removed_because_raw_datac                 C   rV   )zThe actual value was removed because the size of the field exceeded the configured maximum size (specified with the max_request_body_size sdk option)rW   rX   !configrY   rO   rZ   r[   rC   rC   rD   removed_because_over_size_limit   r^   z.AnnotatedValue.removed_because_over_size_limitc                 C   s   t tdddggidS )zHThe actual value was removed because it contained sensitive information.rX   r_   srO   )rN   SENSITIVE_DATA_SUBSTITUTEr[   rC   rC   rD   +substituted_because_contains_sensitive_data   r^   z:AnnotatedValue.substituted_because_contains_sensitive_dataN)__name__
__module____qualname____doc__	__slots__rR   rU   classmethodr]   r`   rc   rC   rC   rC   rD   rN      s    

rN   Tc                 C   s   t | dd pt | dd S )Nrf   rd   getattrr[   rC   rC   rD   get_type_name   s   rm   c                 C   s   t | dd }|dvr|S d S )Nre   )Nbuiltins__builtins__rk   )r\   modrC   rC   rD   get_type_module   s   rq   framer   returnc              	   C   sl   z| j d }|drW dS W n ttfy   Y nw dD ]}z| j| r)W  dS W q ty3   Y qw dS )Nrd   zsentry_sdk.T)__traceback_hide____tracebackhide__F)	f_globals
startswithAttributeErrorKeyErrorf_locals	Exception)rr   rp   	flag_namerC   rC   rD   should_hide_frame   s"   


r}   c                 c   s4    | }|d urt |js|V  |j}|d usd S d S r>   )r}   tb_frametb_next)tbtb_rC   rC   rD   iter_stacks   s   
r   c              	      s6  d}d }|d ur*t |dr*z||}W n ttfy!   d }Y nw |d ur*| }|d u rFzt| }W n ttfyE   g d g f Y S w |sMg d g fS td|| }t	|d | t
|}	z- fdd||| D }
t|| d d} fd	d||d |	 D }|
||fW S  ty   g d g f Y S w )
N   
get_sourcer   r=   c                       g | ]}t |d  dqS 

max_lengthstrip_stringstrip.0liner   rC   rD   
<listcomp>      z'get_lines_from_file.<locals>.<listcomp>r   r   c                    r   r   r   r   r   rC   rD   r     r   )hasattrr   ImportErrorIOError
splitlines	linecachegetlinesOSErrormaxminlenr   r   
IndexError)filenamelinenor   loadermodulecontext_linessource
source_strlower_boundupper_boundpre_contextcontext_linepost_contextrC   r   rD   get_lines_from_file   s@   



r   c                 C   s   z| j j}W n ty   d }Y nw z| jd }W n ty'   g d g f Y S w z| jd }W n ty:   d }Y nw |d }|d urN|rNt|||||dS g d g fS )Nrd   
__loader__r=   )r   r   )f_codeco_filenamer{   rv   r   )rr   	tb_linenomax_value_lengthabs_pathr   r   r   rC   rC   rD   get_source_context'  s*   

r   c                 C   s&   zt | W S  ty   t|  Y S w r>   )strr{   	safe_reprrA   rC   rC   rD   safe_strA  s
   
r   c                 C   s    zt | W S  ty   Y dS w )Nz<broken repr>)reprr{   rA   rC   rC   rD   r   I  s
   
r   c                 C   s   |r| s|S z=| dr|d d }| ddd }|| kr%tj|W S tj| j}|s0|W S ||tj	dd dd 
tj	W S  tyN   | Y S w )Nz.pyc.r=   r      )endswithsplitospathbasenamerJ   r)   __file__rsplitseplstripr{   )r   r   base_modulebase_module_pathrC   rC   rD   filename_for_moduleQ  s"   
r   Tc                 C   s   t | dd }|sd }d }n| jj}| jj}z| jd }	W n ty'   d }	Y nw |d u r/| j}dt|	|p6d |r>tj	
|nd |pBd|	|d}
|rXt| ||\|
d< |
d< |
d< |r[	 |
S )	Nr   rd   r,   z	<unknown>)r+   r   r   functionr   r   r   r   r   )rl   r   r   co_namerv   r{   f_linenor   r   r   abspathr   )rr   r   include_local_variablesinclude_source_contextr   custom_reprr   r   r   r   rvrC   rC   rD   serialize_framei  s6   		r   c                 C   sV   d}g }t  }|d ur"t|s|t|| ||d |j}|d us|  |ddS )NT)r   r   r   rawframesr9   )rJ   	_getframer}   appendr   f_backreverse)r   r   r   ru   r   frC   rC   rD   current_stacktrace  s"   
r   c                 C   s   t | dd S )Nerrnork   	exc_valuerC   rC   rD   	get_errno  rF   r   c                 C   s    t | ddpt | ddpt| S )Nr(   rW   detail)rl   r   r   rC   rC   rD   get_error_message  s
   
r   c                    s  i }|r|  nddd|d< |dur||d d< |dur"t|}	nd}	|	dur8|d di di d	|	 |durB||d d
< |dk}
|
sX|durX||d d< d|d d< |
rfd|d vrfd|d d< tduont|t}|rwd|d d< t| |d< t| |d< t||d< |du rddtd n|d |d |d |	d  fddt
|D }|r|dd|d< |S )zJ
    Creates a dict that goes into the events `exception.values` list
    genericT)r9   handled	mechanismNexception_idmetar   numberr   r   	parent_idchainedr9   is_exception_groupr   rB   r   r   r   r   c              
      s$   g | ]}t |j|j d qS ))r   r   r   r   r   )r   r~   r   )r   r   r   r   r   r   rC   rD   r     s    	z5single_exception_from_error_tuple.<locals>.<listcomp>r   r   r4   )copyr   
setdefaultr   rS   rq   rm   r   DEFAULT_MAX_VALUE_LENGTHgetr   )exc_typer   r   client_optionsr   r   r   r   exception_valuer   is_root_exceptionr   r   rC   r   rD   !single_exception_from_error_tuple  sX   



	r   __suppress_context__c                 c   s    | \}}}g }t  }|d urW|d urYt||vr[|||fV  || |t| |jr2|j}n|j}|d u r;d S t|}|}t|dd }|d ur]|d ur_t||vsd S d S d S d S d S d S )N__traceback__)	setidr   addr   	__cause____context__r9   rl   )rI   r   r   r   seen_exceptionsseen_exception_idscauserC   rC   rD   walk_exception_chain  s4   

r   c                 c   s    | V  d S r>   rC   rL   rC   rC   rD   r   4  s   
c                 C   sH  t | |||||||d}|g}	|}|d7 }t|do|j}
|
rI|o*t|do*|jdu}|rH|j}tt||t|dd|||dd\}}|	| n)|oTt|doT|jdu}|rr|j}tt||t|dd|||dd\}}|	| |oxt|d	}|rt	|j
D ]\}}tt||t|dd||||d
| d\}}|	| q||	fS )zx
    Creates the list of exceptions.
    This can include chained exceptions and exceptions from an ExceptionGroup.
    )r   r   r   r   r   r   r   r   r=   r   r   Nr   )r   r   r   r   r   r   r   r   
exceptionszexceptions[%s])r   r   r   r   exceptions_from_errorr9   rl   extendr   	enumerater   )r   r   r   r   r   r   r   r   parentr   should_supress_contextexception_has_causer   child_exceptionsexception_has_contentcontextr   idxerC   rC   rD   r   9  s   



	


	


r   c           	   	   C   sv   | \}}}t d uot|t }|rt|||||ddd\}}ng }t| D ]\}}}|t||||| q$|  |S )Nr   )r   r   r   r   r   r   r   )r   rS   r   r   r   r   r   )	rI   r   r   r   r   r   r   _r   rC   rC   rD   exceptions_from_error_tuple  s.   


r  c                 C   s.   zt | W S  ty   t| dd  Y S w )Nr=   r   )r   UnicodeDecodeErrorr   rA   rC   rC   rD   	to_string  s
   
r	  c                 c   s    d| v r
| d V  d| v r#| d  dpdD ]}d|v r"|d V  qd| v r<| d  dp/dD ]}d|v r;|d V  q0d S d S )Nr4   r7   r   rC   r%   )r   )eventthreadr%   rC   rC   rD   iter_event_stacktraces  s   


r  c                 c   s.    t | D ]}|dpdD ]}|V  qqd S )Nr   rC   )r  r   )r
  r4   rr   rC   rC   rD   iter_event_frames  s   r  c                 C   s(   t | D ]}t|d|||d q| S )Nr   )in_app_excludein_app_includeproject_root)r  set_in_app_in_framesr   )r
  r  r  r  r4   rC   rC   rD   handle_in_app  s   r  c                 C   s   | sd S | D ]B}| d}|d urq| d}t||r!d|d< qt||r+d|d< q| d}|d u r5qt|r>d|d< qt||rHd|d< qq| S )Nin_appr   TFr   )r   _module_in_list_is_external_source_is_in_project_root)r   r  r  r  rr   current_in_appr   r   rC   rC   rD   r    s0   





r  c                 C   s   t | trt| dkr| \}}}n2t | tr;t| dd }|d ur't| }| }nt \}}}|| ur:d }| }t| }ntdt|  |||f}t	rOt
t|}|S )N   r   z,Expected Exception object to report, got %s!)rS   tupler   BaseExceptionrl   r9   rJ   rI   
ValueErrorr   r   ExcInfo)r   r   r   r   rI   rC   rC   rD   rK     s$   


rK   c                 C   s*   t | } t| }ddt| ||id|fS )Nr   r   )r&   r%   )rK   rM   r  )rI   r   r   hintrC   rC   rD   event_from_exception+  s   r  c                 C   s>   | d u rdS |s
dS |D ]}|| ks|  |d r dS qdS )NFr   Trw   )nameitemsitemrC   rC   rD   r  @  s   r  c                 C   s   t d| d u}|S )Nz [\\/](?:dist|site)-packages[\\/])research)r   external_sourcerC   rC   rD   r  O  s   r  c                 C   s   |d u rdS |  |rdS dS )NFTr  )r   r  rC   rC   rD   r  X  s
   
r  c                 C   s(   |  dd|d  jddd}|d S )zd
    Truncate a UTF-8-encodable string to the last full codepoint so that it fits in max_bytes.
    utf-8Nr  ignore)r#   ...)encodedecode)string	max_bytes	truncatedrC   rC   rD   _truncate_by_bytesd  s    r.  c              	   C   s*   zt | dW S  ttfy   Y d S w )Nr&  )r   r)  UnicodeEncodeErrorr  rA   rC   rC   rD   _get_size_in_bytesn  s
   r0  c                 C   s   | s| S |d u r
t }t| }t| }|d ur ||kr t| |}n|d ur3||kr3| d |d  d }n| S t||p:|dd|d |ggddS )Nr  r(  z!limitrY   )r   rX   rO   )r   r0  r   r.  rN   )rB   r   	byte_size	text_sizetruncated_valuerC   rC   rD   r   v  s"   r   r>   )NTTNN)TTN)NNNNN)NNr   r   N)NN)Or   r   r#  rJ   r   typingr   rn   r   r   r   typesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r  r  LogLevelStrr   objectfloatr   r?   compileBASE64_ALPHABETrb   rE   rH   rM   rN   rj   	Annotatedrm   rq   boolr}   r   r   r   r   r   r   r   r   r   r   r   r   r{   HAS_CHAINED_EXCEPTIONSr   r   r  r	  r  r  r  r  rK   r  r  r  r  r.  r0  r   rC   rC   rC   rD   <module>   s,  @	



17

D
1

.


Q
 	
a
%

'
	
