
    Zis                     4   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	 n# e
$ r dZ	Y nw xY wdZerqd 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 !          Z" ed"d#d#          Z# ej$        d$          Z%d%Z&d& Z'd' Z(dSd(Z) G d) d*          Z*er ed+          Z+ee*e+f         Z,d, Z-d- Z.d.d/d0e/fd1Z0d2 Z1	 	 	 dd3Z2	 dSd4Z3d5 Z4d6 Z5d7 Z6	 	 	 	 	 dTd9Z7	 	 	 dUd:Z8d; Z9d< Z:	 	 	 	 	 dVd=Z; e<e=d>          Z>e>rd? Z?nd@ Z?	 	 	 	 	 dWdAZ@	 	 dXdBZAdC ZBdD ZCdE ZDddFZEdSdGZFdH ZGdI ZHdJ ZIdK ZJ	 	 dXdLZKdM ZLdN ZMdO ZNdP ZOdQ ZPdSdRZQdS )Y    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	timestampr1   typeuser_metrics_summaryF)totali     z^[a-zA-Z0-9/+=]*$z
[Filtered]c                 :    | t           z
                                  S N)epochtotal_secondsvalues    R/root/projects/butler/venv/lib/python3.11/site-packages/posthog/exception_utils.pyto_timestamprF   s   s    EM((***    c                 ,    |                      d          S )Nz%Y-%m-%dT%H:%M:%S.%fZ)strftimerC   s    rE   format_timestamprJ   x   s    >>1222rG   c                 h    | t          j                    } nt          |           } | d         d} d| iS )z+Creates a hint with the exc info filled in.Nr   exc_info)sysrL   exc_info_from_errorrL   s    rE   event_hint_with_exc_inforP   }   s>     <>>&x00{!!rG   c                   d    e Zd ZdZdZd Zd Zed             Zed             Z	ed             Z
dS )	AnnotatedValuezA
    Meta information for a data field in the event payload.
    rD   metadatac                 "    || _         || _        d S r@   rS   )selfrD   rT   s      rE   __init__zAnnotatedValue.__init__   s    
 rG   c                 p    t          |t                    sdS | j        |j        k    o| j        |j        k    S )NF)
isinstancerR   rD   rT   )rV   others     rE   __eq__zAnnotatedValue.__eq__   s6    %00 	5zU[(LT]en-LLrG   c                 .    t          ddddggi          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xrS   rR   clss    rE   removed_because_raw_dataz'AnnotatedValue.removed_because_raw_data   s6     

 

 

 
	
rG   c                 .    t          ddddggi          S )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)r]   r^   !configr_   rS   r`   ra   s    rE   removed_because_over_size_limitz.AnnotatedValue.removed_because_over_size_limit   s6     !

 

 

 
	
rG   c                 8    t          t          dddggi          S )zHThe actual value was removed because it contained sensitive information.r^   re   srS   )rR   SENSITIVE_DATA_SUBSTITUTEra   s    rE   +substituted_because_contains_sensitive_dataz:AnnotatedValue.substituted_because_contains_sensitive_data   s6     +!

 

 

 
	
rG   N)__name__
__module____qualname____doc__	__slots__rW   r[   classmethodrc   rf   rj    rG   rE   rR   rR      s          &I! ! !
M M M 
 
 [
 
 
 [
 
 
 [
 
 
rG   rR   Tc                 F    t          | dd           pt          | dd           S )Nrm   rk   getattrra   s    rE   get_type_namerv      s%    3--Oj$1O1OOrG   c                 4    t          | dd           }|dvr|S d S )Nrl   )Nbuiltins__builtins__rt   )rb   mods     rE   get_type_moduler{      s)    
#|T
*
*C
444
4rG   framer   returnc                     	 | j         d         }|                    d          rdS n# t          t          f$ r Y nw xY wdD ]#}	 | j        |         r dS # t
          $ r Y  w xY wdS )Nrk   zsentry_sdk.T)__traceback_hide____tracebackhide__F)	f_globals
startswithAttributeErrorKeyErrorf_locals	Exception)r|   rz   	flag_names      rE   should_hide_framer      s    oj)>>-(( 	4	H%    ?  		~i( tt 	 	 	D	 5s   "' ;;A
A! A!c              #   X   K   | }|#t          |j                  s|V  |j        }|!d S d S r@   )r   tb_frametb_next)tbtb_s     rE   iter_stacksr      sA      
C
/ .. 	IIIk /////rG   c                    d}d }|Vt          |d          rF	 |                    |          }n# t          t          f$ r d }Y nw xY w||                                }|2	 t          j        |           }n# t          t          f$ r g d g fcY S w xY w|sg d g fS t          d||z
            }t          |dz   |z   t          |                    }		 fd|||         D             }
t          ||                             d                    }fd||dz   |	         D             }|
||fS # t          $ r g d g fcY S w xY w)	N   
get_sourcer   r>   c                 X    g | ]&}t          |                    d                     'S 

max_lengthstrip_stringstrip.0liner   s     rE   
<listcomp>z'get_lines_from_file.<locals>.<listcomp>  sB     
 
 
 F++
CCC
 
 
rG   r   r   c                 X    g | ]&}t          |                    d                     'S r   r   r   s     rE   r   z'get_lines_from_file.<locals>.<listcomp>  sB     
 
 
 F++
CCC
 
 
rG   )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_contexts     `          rE   get_lines_from_filer      s    MFgfl;;	**622JJW% 	 	 	JJJ	!**,,F~	 '11FF! 	  	  	 tR<	   4|a-/00Kfqj=0#f++>>K
 
 
 
{612
 
 
 $F6N$8$8$@$@ZXXX
 
 
 

k9:
 
 
 L,66   4|s4   / AA!A6 6BBAD. .E ?E c                    	 | j         j        }n# t          $ r d }Y nw xY w	 | j        d         }n# t          $ r g d g fcY S w xY w	 | j        d         }n# t          $ r d }Y nw xY w|dz
  }||rt	          |||||          S g d g fS )Nrk   
__loader__r>   )r   r   )f_codeco_filenamer   r   r   )r|   	tb_linenomax_value_lengthabs_pathr   r   r   s          rE   get_source_contextr   (  s    <+   ,   4|.   ]Fh"f.vf
 
 
 	
 tR<s-    0 AAA A#"A#c                 `    	 t          |           S # t          $ r t          |           cY S w xY wr@   )strr   	safe_reprrC   s    rE   safe_strr   B  sB     5zz       s    --c                 D    	 t          |           S # t          $ r Y dS w xY w)Nz<broken repr>)reprr   rC   s    rE   r   r   J  s5    E{{   s    
c                    |r| s|S 	 |                     d          r
|d d         }|                     dd          d         }|| k    rt          j                            |          S t
          j        |         j        }|s|S |                    |                    t          j	        d          d         d          d         
                    t          j	                  S # t          $ r |cY S w xY w)Nz.pyc.r>   r      )endswithsplitospathbasenamerM   r*   __file__rsplitseplstripr   )r   r   base_modulebase_module_paths       rE   filename_for_moduler   R  s    6 V$$ 	%}Hll3**1-&  7##H---;{3< 	O~~.55bfa@@CQGGKRRF
 
 	
    s   AC  (C  AC   C/.C/Tc                 x   t          | dd           }|sd }d }n| j        j        }| j        j        }	 | j        d         }	n# t
          $ r d }	Y nw xY w|| j        }dt          |	|          pd |rt          j	        
                    |          nd |pd|	|d}
|rt          | ||          \  |
d<   |
d<   |
d<   |r	 |
S )	Nr   rk   r-   z	<unknown>)r,   r   r   functionr   r   r   r   r   )ru   r   r   co_namer   r   f_linenor   r   r   abspathr   )r|   r   include_local_variablesinclude_source_contextr   custom_reprr   r   r   r   rvs              rE   serialize_framer   j  s    UHd++F (<+<',    N	 '99AT19CBGOOH---t+
 
B  
DV9.E
 E
A=2n-r./A  Is   A   AAc                     d}g }t          j                    }|>t          |          s&|                    t	          || ||                     |j        }|>|                                 |ddS )NT)r   r   r   rawframesr:   )rM   	_getframer   appendr   f_backreverse)r   r   r   r   r   fs         rE   current_stacktracer     s     FA
- ## 	MM,C+A%5	     H - NNe,,,rG   c                 $    t          | dd           S )Nerrnort   )	exc_values    rE   	get_errnor     s    9gt,,,rG   c                 h    t          | dd          pt          | dd          p| }t          |          S )Nr)   r]   detail)ru   r   )r   r)   s     rE   get_error_messager     sD     		9b)) 	9h++	  GrG   c                 0   i }|r|                                 nddd|d<   |||d         d<   |t          |          }	nd}	|	D|d                             di                               di                               d	|	           |||d         d
<   |dk    }
|
s|||d         d<   d|d         d<   |
rd|d         vrd|d         d<   t          duot	          |t                    }|rd|d         d<   t          |           |d<   t          |           |d<   t          |          |d<   |ddt          dn-|d         |d         |d         |	                    d          fdt          |          D             }|r|dd|d<   |S )zJ
    Creates a dict that goes into the events `exception.values` list
    genericT)r:   handled	mechanismNexception_idmetar   numberr   r   	parent_idchainedr:   is_exception_groupr   rD   r   r   r   r   c           
      N    g | ]!}t          |j        |j                   "S ))r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   s     rE   r   z5single_exception_from_error_tuple.<locals>.<listcomp>  sP     
 
 
  	Kl$;#9-#	
 	
 	

 
 
rG   r   r   r5   )copyr   
setdefaultr   rY   r{   rv   r   DEFAULT_MAX_VALUE_LENGTHgetr   )exc_typer   r   client_optionsr   r   r   r   exception_valuer   is_root_exceptionr   r   r   r   r   r   s                @@@@rE   !single_exception_from_error_tupler    sH    O%O	I$+O+O K  7C$^4)$$$//;;FFR	
 	

*Xu
%
%
%17$X.$) 9!64=$[1/8$V, 9V?;+GGG/8$V,+47 J%= =  B=A$%9: / 9 9OH+H55OF0;;OG"&!%3"01J"K!/0H!I)*<=$((77
 
 
 
 
 
 
 b//
 
 
F  J395(I(I%rG   __suppress_context__c              #     K   | \  }}}g }t                      }||t          |          |vr|||fV  |                    |           |                    t          |                     |j        r|j        }n|j        }|d S t          |          }|}t          |dd           }||t          |          |vd S d S d S d S d S d S )N__traceback__)	setidr   addr  	__cause____context__r:   ru   )rL   r   r   r   seen_exceptionsseen_exception_idscauses          rE   walk_exception_chainr    s     "*)R UU  %9%777Ir))))
 ""9---""2i==111- .!+!-}E{{HI66B)  %9%77777 ! %%77 ! %%rG   c              #      K   | V  d S r@   rq   rO   s    rE   r  r  7  s      rG   c                 0   t          | |||||||          }|g}	|}|dz  }t          |d          o|j        }
|
ro|ot          |d          o|j        du}|rQ|j        }t	          t          |          |t          |dd          |||d          \  }}|	                    |           nn|ot          |d          o|j        du}|rQ|j        }t	          t          |          |t          |dd          |||d          \  }}|	                    |           |ot          |d	          }|rht          |j
                  D ]S\  }}t	          t          |          |t          |dd          ||||d
|z            \  }}|	                    |           T||	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_errorr:   ru   extendr  	enumerater  )r   r   r   r   r   r   r   r   parentr  should_supress_contextexception_has_causer  child_exceptionsexception_has_contentcontextr   idxes                      rE   r  r  <  sG     /%!	 	 	F JIAL 		122Uy7U   (0  0	;//0#4/ 	
  	0'E/De5/488-#)"0 0 0,\+ .///  2	=112%T1 	
 ! 	0+G/Dg!7OT::-#)$0 0 0,\+ ./// #Gwy,'G'G 0	 455 	0 	0FC/Da1ot44-#)#'#-	0 	0 	0,\+ .////*%%rG   c           
      *   | \  }}}t           d uot          |t                     }|rt          |||||dd          \  }}n>g }t          |           D ],\  }}}|                    t          |||||                     -|                                 |S )Nr   )r   r   r   r   r   r   r   )r   rY   r  r  r   r  r   )	rL   r   r   r   r   r   r   _r  s	            rE   exceptions_from_error_tupler     s     'Hi+47 J%= =  /)
 
 
JJ 
';H'E'E 	 	#Hi1i^Y     rG   c                 p    	 t          |           S # t          $ r t          |           dd         cY S w xY w)Nr>   r   )r   UnicodeDecodeErrorr   rC   s    rE   	to_stringr#    sI    !5zz ! ! !E{{1R4    !s    !55c              #      K   d| v r
| d         V  d| v r.| d                              d          pdD ]}d|v r
|d         V  d| v r.| d                              d          pdD ]}d|v r
|d         V  d S d S )Nr5   r8   r   rq   r&   )r   )eventthreadr&   s      rE   iter_event_stacktracesr'    s      uL!!!!EI&**844: 	+ 	+Fv%%\****e{+//99?R 	. 	.Iy((---- 	. 	.rG   c              #   j   K   t          |           D ] }|                    d          pdD ]}|V  !d S )Nr   rq   )r'  r   )r%  r5   r|   s      rE   iter_event_framesr)    sW      ,U33  
^^H--3 	 	EKKKK	 rG   c                 v    t          |           D ](}t          |                    d          |||           )| S )Nr   )in_app_excludein_app_includeproject_root)r'  set_in_app_in_framesr   )r%  r+  r,  r-  r5   s        rE   handle_in_appr/    sT    ,U33 
 

NN8$$))%		
 	
 	
 	
 	
 LrG   c                 P   | sd S | D ]}|                     d          }||                     d          }t          ||          rd|d<   Et          ||          rd|d<   [|                     d          }|st          |          rd|d<   t          ||          rd|d<   | S )Nin_appr   TFr   )r   _module_in_list_is_external_source_is_in_project_root)r   r+  r,  r-  r|   current_in_appr   r   s           rE   r.  r.    s     t  8,,%8$$ 6>22 	"E(O 6>22 	#E(O 99Z((x(( 	#E(Ox66 	"E(O	 MrG   c                     t          | t                    rt          | d          S t          | t                    r3t	          |           dk    r | d         d uot          | d         d          S dS )N__posthog_exception_capturedr>   F)rY   BaseExceptionr   tupler   r   s    rE   exception_is_already_capturedr;    sz    %'' 	u<=== 
E5	!	! c%jj1nnQxt# 
!H4)
 )
 	
 urG   c                     t          | t                    rt          | dd           d S t          | t                    r4t	          |           dk    r#| d         t          | d         dd           d S d S d S d S )Nr7  Tr>   )rY   r8  setattrr9  r   r:  s    rE   mark_exception_as_capturedr>    s    %'' D5t<<<<< 
E5	!	! Dc%jj1nn8E!H<dCCCCCD DnnrG   c                    t          | t                    rt          |           dk    r| \  }}}nt          | t                    ru	 t	          |            n# t
          $ r Y nw xY wt          | dd           }|t          |           }| }nNt          j	                    \  }}}|| urd }| }t          |           }nt          dt          |           z            |||f}t          rt          t          |          }|S )N   r  z,Expected Exception object to report, got %s!)rY   r9  r   r8  construct_artificial_tracebackr   ru   r:   rM   rL   
ValueErrorr   r   ExcInfo)r   r   r   r   rL   s        rE   rN   rN   *  s   % WCJJ!OO"')RR	E=	)	) W	*51111 	 	 	D	UOT22>E{{HII&)lnn#Hi%%!	;; G$u++UVVV)R(H + **Os   A 
A#"A#c                 R   t          | dd           d S d}g }	 	 t          j        |          }|dz  }n# t          $ r Y nw xY w|                    |           A|                                 d }|D ]#}t          j        |||j        |j	                  }$t          | d|           d S )Nr  r   Tr>   )ru   rM   r   rB  r   r   typesr   f_lastir   r=  )r  depthr   r|   r   s        rE   rA  rA  K  s    q/4((4EF	M%((EQJEE 	 	 	E	 	e NN	B K K UEM5>JJA#####s   4 
A Ac                 n    t          |           } t          |           }ddt          | ||          id|fS )Nr   r   )r'   r&   )rN   rP   r   )rL   r   r   hints       rE   event_from_exceptionrJ  d  sX     #8,,H#H--D 5ni 	
 	
 	
 
rG   c                 b    | dS |sdS |D ]#}|| k    s|                      |dz             r dS $dS )NFr   Tr   )nameitemsitems      rE   r2  r2  y  sX    |u u  4<<4??4#:66<44  5rG   c                 4    t          j        d|           d u}|S )Nz [\\/](?:dist|site)-packages[\\/])research)r   external_sources     rE   r3  r3    s&     		5x@@L  rG   c                 <    |dS |                      |          rdS dS )NFTrL  )r   r-  s     rE   r4  r4    s/    u <(( t5rG   c                 v    |                      d          d|dz
                               dd          }|dz   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	truncateds      rE   _truncate_by_bytesr^    s@    
 g&&Q7>>wx>XXIurG   c                 x    	 t          |                     d                    S # t          t          f$ r Y d S w xY w)NrV  )r   rY  UnicodeEncodeErrorr"  rC   s    rE   _get_size_in_bytesra    sI    5<<(())) 23   tts   !$ 99c                     | s| S |t           }t          |           }t          |           }|||k    rt          | |          }n|||k    r| d |dz
           dz   }n| S t	          ||p|dd|dz
  |ggd          S )Nr@  rX  z!limitr_   )r   r^   rS   )r   ra  r   r^  rR   )rD   r   	byte_size	text_sizetruncated_values        rE   r   r     s     -
"5))IE

IZ!7!7,UJ??		9z#9#9 0*q. 01E9)	sJNJ?@
 
   rG   r@   )NTTNN)TTN)NNNNN)NNr   r   N)NN)Rr   r   rQ  rM   rE  r   typingr   rx   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r8  rC  LogLevelStrr   objectfloatr   rA   compileBASE64_ALPHABETri   rF   rJ   rP   rR   rr   	Annotatedrv   r{   boolr   r   r   r   r   r   r   r   r   r   r   r  r   r   HAS_CHAINED_EXCEPTIONSr  r  r   r#  r'  r)  r/  r.  r;  r>  rN   rA  rJ  r2  r3  r4  r^  ra  r   rq   rG   rE   <module>ro     sI       				 				 



                   +++++++   
     M........                               " d=!=(=2IIJ	!G RSKI0	
4!4S#X#770	
 3	0	

 S$sF{"3340	
 C0	
 0	
 30	
 d4S>*0	
 0	
 !4S#X#770	
  [!0	
$ c%0	
( s)0	
* tCH~+0	
. HSM/0	
0 )10	
2 v30	
4 s50	
6 CK($sF{+,V  (sm !4S#X#77 "(+56f% $S&[ 1_0	
 0	
 0	
b g4 4 4En 	q! "*122( + + +
3 3 3
	" 	" 	" 	"A
 A
 A
 A
 A
 A
 A
 A
H  )Ana'(IP P P
  [ T    $   + + + +b    4         4  * * * *\ !- - - -6- - -
   N N N Nb !,BCC  $7 7 7 7@   \& \& \& \&B " " " "J! ! !. . .  
 
 
 
$ $ $ $N  D D D  B$ $ $6    *    	 	 	         s   ) 33