
    Ii/m                     Z   S SK r S SKrS SKrS SKrS SKJr  S SKJr   S SKJr  Sr
\(       Ga  S SKJrJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJr  \\\\   \\\   4   \S   4   r\S	   r\" S
0 S\\S   \\\\4      4   _S\_S\\\\\ 4   4   _S\_S\\!   _S\_S\\\\4      _S\_S\\S   \\\\4      4   _S\_S\_S\_S\\\4   _S\\   _S\S   _S\ _S\_\\\ 4   \\\\\ 4      \\\ 4   \\\   \\S   \\\\4      4   \\   \\S   \\\ 4   \\\ 4   S.ES S!9r"\" S"S#S#5      r#\RH                  " S$5      r%S%r&S& r'S' r(SOS( jr) " S) S*5      r*\(       a  \" S+5      r+\\*\+4   r,S, r-S- r.S.S/S0\/4S1 jr0S2 r1   SS3 jr2 SOS4 jr3S5 r4S6 r5S7 r6     SPS8 jr7   SQS9 jr8S: r9S; r:     SRS< jr;\<" \=S=5      r>\>(       a  S> r?OS? r?     SSS@ jr@  STSA jrASB rBSC rCSD rDSSE jrESOSF jrFSG rG  STSH jrHSI rISJ rJSK rKSL rLSM rMSOSN jrNg! \	 a    Sr GNf = f)U    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                 0    U [         -
  R                  5       $ N)epochtotal_secondsvalues    =/venv/lib/python3.13/site-packages/posthog/exception_utils.pyto_timestamprF   h   s    EM((**    c                 $    U R                  S5      $ )Nz%Y-%m-%dT%H:%M:%S.%fZ)strftimerC   s    rE   format_timestamprJ   m   s    >>122rG   c                 b    U c  [         R                  " 5       n O[        U 5      n U S   c  Sn SU 0$ )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   r   s9     <<>&x0{!!rG   c                   X    \ rS rSrSrSrS rS r\S 5       r	\S 5       r
\S 5       rS	rg
)AnnotatedValue~   z
Meta information for a data field in the event payload.
This is to tell Relay that we have tampered with the fields value.
See:
https://github.com/getsentry/relay/blob/be12cd49a0f06ea932ed9b9f93a655de5d6ad6d1/relay-general/src/types/meta.rs#L407-L423
rD   metadatac                     Xl         X l        g r@   rT   )selfrD   rU   s      rE   __init__AnnotatedValue.__init__   s    
 rG   c                     [        U[        5      (       d  gU R                  UR                  :H  =(       a    U R                  UR                  :H  $ )NF)
isinstancerR   rD   rU   )rW   others     rE   __eq__AnnotatedValue.__eq__   s7    %00zzU[[(LT]]enn-LLrG   c                      [        SSSS//0S9$ )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xrT   rR   clss    rE   removed_because_raw_data'AnnotatedValue.removed_because_raw_data   s,     

 
	
rG   c                      [        SSSS//0S9$ )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`   ra   !configrb   rT   rc   rd   s    rE   removed_because_over_size_limit.AnnotatedValue.removed_because_over_size_limit   s,     !

 
	
rG   c                 (    [        [        SSS//0S9$ )zHThe actual value was removed because it contained sensitive information.ra   ri   srT   )rR   SENSITIVE_DATA_SUBSTITUTErd   s    rE   +substituted_because_contains_sensitive_data:AnnotatedValue.substituted_because_contains_sensitive_data   s,     +!

 
	
rG   )rU   rD   N)__name__
__module____qualname____firstlineno____doc__	__slots__rX   r]   classmethodrf   rj   ro   __static_attributes__ rG   rE   rR   rR   ~   sU     &I!
M 
 
 
 
 
 
rG   rR   Tc                 D    [        U SS 5      =(       d    [        U SS 5      $ )Nrs   rq   getattrrd   s    rE   get_type_namer~      s    3-Oj$1OOrG   c                 .    [        U SS 5      nUS;  a  U$ g )Nrr   )Nbuiltins__builtins__r|   )re   mods     rE   get_type_moduler      s!    
#|T
*C
44
rG   framer   returnc                      U R                   S   nUR                  S5      (       a  g S H  n U R                  U   (       a    gM     g! [        [        4 a     N3f = f! [
         a     MB  f = f)Nrq   zsentry_sdk.T)__traceback_hide____tracebackhide__F)	f_globals
startswithAttributeErrorKeyErrorf_locals	Exception)r   r   	flag_names      rE   should_hide_framer      s    ooj)>>-(( )
 ?		~~i( ) ?  H%   		s"   %A
 A 
AA 
A.-A.c              #   v   #    U nUb0  [        UR                  5      (       d  Uv   UR                  nUb  M/  g g 7fr@   )r   tb_frametb_next)tbtb_s     rE   iter_stacksr      s3     
C
/ ..Ikk /s   399c                    SnS nUb6  [        US5      (       a%   UR                  U5      nUb  UR	                  5       nUc   [
        R                  " U 5      nU(       d  / S / 4$ [        SX-
  5      n[        US-   U-   [        U5      5      n	 XhU  V
s/ s H  n
[        U
R                  S5      US9PM     nn
[        Xa   R                  S5      US9nXaS-   U	  V
s/ s H  n
[        U
R                  S5      US9PM     nn
XU4$ ! [        [        4 a    S n Nf = f! [        [        4 a    / S / 4s $ f = fs  sn
f s  sn
f ! [         a    / S / 4s $ f = f)N   
get_sourcer   r>   z
)
max_length)hasattrr   ImportErrorIOError
splitlines	linecachegetlinesOSErrormaxminlenstrip_stringstrip
IndexError)filenamelinenor   loadermodulecontext_linessource
source_strlower_boundupper_boundlinepre_contextcontext_linepost_contexts                 rE   get_lines_from_filer      s    MFgfl;;	**62J !**,F~	 ''1F 4|a/0Kfqj=0#f+>K
[ant[uv[uSW|DJJv$6:N[uv#FN$8$8$@ZX 
k:
: F+
C: 	 
 ,661 W% 	J	 ! 	 tR<	  w

  4|sS   D D E #D97&E #D> E DDD65D69
E EEc                      U R                   R                  n U R                  S   n U R                  S   nUS-
  nUb  U(       a  [	        X6X%US9$ / S / 4$ ! [         a    S n NMf = f! [         a    / S / 4s $ f = f! [         a    S n NTf = f)Nrq   
__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    <<++,. ]Fh"85E]cddtR<    4|  s3   A A) A> A&%A&)A;:A;>BBc                 P     [        U 5      $ ! [         a    [        U 5      s $ f = fr@   )strr   	safe_reprrC   s    rE   safe_strr   5  s+     5z   s   
 %%c                 :     [        U 5      $ ! [         a     gf = f)Nz<broken repr>)reprr   rC   s    rE   r   r   =  s#    E{ s   
 
c                    U(       a  U (       d  U$  UR                  S5      (       a  US S nU R                  SS5      S   nX :X  a  [        R                  R	                  U5      $ [
        R                  U   R                  nU(       d  U$ UR                  UR                  [        R                  S5      S   S5      S   R                  [        R                  5      $ ! [         a    Us $ f = f)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   E  s    6V$$}Hll3*1- 77##H--;;{3<<O~~.55bffa@CQGKRRSUSYSYZZ s   AC &%C AC C.-C.c                    [        U SS 5      nU(       d  S nS nO,U R                  R                  nU R                  R                  n U R                  S   n	Uc  U R                  nS[        X5      =(       d    S U(       a  [        R                  R                  U5      OS U=(       d    SU	US.n
U(       a  [        XU5      u  U
S'   U
S'   U
S'   U(       a   U
$ ! [
         a    S n	 Nf = f)	Nr   rq   r-   z	<unknown>)r,   r   r   functionr   r   r   r   r   )r}   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   [  s     UHd+F<<++<<'', NN	 '9AT19BGGOOH-t+
B DV.E
A=2n-r./A  	I;  s   C C('C(c           	          Sn/ n[         R                  " 5       nUb<  [        U5      (       d  UR                  [	        UU UUS95        UR
                  nUb  M<  UR                  5         USS.$ )NT)r   r   r   rawframesr:   )rM   	_getframer   appendr   f_backreverse)r   r   r   r   r   fs         rE   current_stacktracer     ss     FA
- ##MM,C+A%5	 HH - NNe,,rG   c                     [        U SS 5      $ )Nerrnor|   	exc_values    rE   	get_errnor     s    9gt,,rG   c                 h    [        U SS5      =(       d    [        U SS5      =(       d    [        U 5      $ )Nr)   r`   detail)r}   r   r   s    rE   get_error_messager     s+    9i,g	8R0PgT\]fTggrG   c                    0 nU(       a  UR                  5       OSSS.US'   Ub  XXS   S'   Ub  [        U5      n	OSn	U	b5  US   R                  S0 5      R                  S0 5      R                  S	U	5        Ub  XxS   S
'   US:H  n
U
(       d  Ub  XhS   S'   SUS   S'   U
(       a  SUS   ;  a  SUS   S'   [        SL=(       a    [	        U[        5      nU(       a  SUS   S'   [        U 5      US'   [        U 5      US'   [        U5      US'   Uc  SnSn[        nSnO US   nUS   nUS   nUR                  S5      n[        U5       Vs/ s H%  n[        UR                  UR                  UUUUS9PM'     nnU(       a  USS.US'   U$ s  snf )z
Creates a dict that goes into the events `exception.values` list and is ingestible by Sentry.

See the Exception Interface documentation for more details:
https://develop.sentry.dev/sdk/event-payloads/exception/
genericT)r:   handled	mechanismNexception_idmetar   numberr   r   	parent_idchainedr:   is_exception_groupr   rD   r   r   r   r   )r   r   r   r   r   r   r   r5   )copyr   
setdefaultr   r[   r   r~   r   DEFAULT_MAX_VALUE_LENGTHgetr   r   r   r   )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    s   " O7@9>>#3yeiFjOK 7C$^4)$$//;FFwPRS^^_gino17$X.$)!64=$[1/8$V,V?;+GG/8$V,+47eJyRd<e=A$%9: / 9OH+H5OF0;OG"&!%3"01J"K!/0H!I)*<=$((7 b/
 "B 	KKll$;#9-#	
 "  
 395(I%
s   
,F	__suppress_context__c              #     #    U u  pn/ n[        5       nUb  Ub  [        U5      U;  a  XU4v   UR                  U5        UR                  [        U5      5        UR                  (       a  UR
                  nOUR                  nUc  g [        U5      nUn[        USS 5      nUb  Ub  [        U5      U;  a  M  g g g g g g 7f)N__traceback__)	setidr   addr  	__cause____context__r:   r}   )rL   r   r   r   seen_exceptionsseen_exception_idscauses          rE   walk_exception_chainr    s     "*R U"y'<IVhAhr))
 ""9-""2i=1--!++!--}E{HI6B# "y'<IVhAh'<"Ah'<"s   B5B?9B?c              #      #    U v   g 7fr@   ry   rO   s    rE   r  r     s
     s   c                 @   [        U UUUUUUUS9nU/n	UnUS-  n[        US5      =(       a    UR                  n
U
(       at  U=(       a!    [        US5      =(       a    UR                  SLnU(       aB  UR                  n[	        [        U5      U[        USS5      UUUSS9u  p]U	R                  U5        OsU=(       a!    [        US5      =(       a    UR                  SLnU(       aB  UR                  n[	        [        U5      U[        USS5      UUUSS9u  p]U	R                  U5        U=(       a    [        US	5      nU(       aY  [        UR                  5       H@  u  nn[	        [        U5      U[        USS5      UUUUS
U-  S9u  p]U	R                  U5        MB     XY4$ )z
Creates the list of exceptions.
This can include chained exceptions and exceptions from an ExceptionGroup.

See the Exception Interface documentation for more details:
https://develop.sentry.dev/sdk/event-payloads/exception/
)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:   r}   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  %  s   & /%!	F JIAL$Y0FGjILjLj (oGI{,KoPYPcPckoPo''E/De5/48-#)"0,\ ./
 !* ugi.O uT]TiTiquTu ++G/Dg!7OT:-#)$0,\ ./ #Gwy,'G	 4 45FC/Da1ot4-#)#'#-	0,\ ./ 6 %%rG   c           
         U u  p4n[         S L=(       a    [        U[         5      nU(       a  [        UUUUUSSS9u  pxO3/ n[        U 5       H"  u  p4nUR	                  [        X4XQU5      5        M$     UR                  5         U$ )Nr   )r   r   r   r   r   r   r   )r   r[   r  r  r   r  r   )	rL   r   r   r   r   r   r   _r  s	            rE   exceptions_from_error_tupler  }  s     'H+47eJyRd<e/)
J 
';H'E#H?UWirst (F rG   c                 V     [        U 5      $ ! [         a    [        U 5      SS s $ f = f)Nr>   r   )r   UnicodeDecodeErrorr   rC   s    rE   	to_stringr"    s1    !5z !E{1R  !s   
 ((c              #     #    SU ;   a  U S   v   SU ;   a3  U S   R                  S5      =(       d    S H  nSU;   d  M  US   v   M     SU ;   a4  U S   R                  S5      =(       d    S H  nSU;   d  M  US   v   M     g g 7f)Nr5   r8   r   ry   r&   )r   )eventthreadr&   s      rE   iter_event_stacktracesr&    s     uL!!EI&**84::Fv%\** ; e{+//9?R?Iy(-- @ s   8B5B7Bc              #   z   #    [        U 5       H(  nUR                  S5      =(       d    S H  nUv   M	     M*     g 7f)Nr   ry   )r&  r   )r$  r5   r   s      rE   iter_event_framesr(    s4     ,U3
^^H-33EK 4 4s   9;c                 `    [        U 5       H  n[        UR                  S5      UUUS9  M      U $ )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.    s5    ,U3
NN8$))%		
 4 LrG   c                 Z   U (       d  g U  H  nUR                  S5      nUb  M  UR                  S5      n[        Xb5      (       a  SUS'   MA  [        Xa5      (       a  SUS'   MX  UR                  S5      nUc  Mn  [        U5      (       a  SUS'   M  [        Xs5      (       d  M  SUS'   M     U $ )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    8,%8$ 622"E(O 622#E(O 99Z(x((#E(Ox66"E(O; > MrG   c                    [        U [        5      (       a  [        U 5      S:X  a  U u  pnOv[        U [        5      (       aJ  [	        U SS 5      nUb  [        U 5      nU nOC[        R                  " 5       u  pnX La  S nU n[        U 5      nO[        S[        U 5      -  5      eXU4n[        (       a  [        [        U5      nU$ )N   r  z,Expected Exception object to report, got %s!)r[   tupler   BaseExceptionr}   r:   rM   rL   
ValueErrorr   r   ExcInfo)r   r   r   r   rL   s        rE   rN   rN     s    %CJ!O"'R	E=	)	)UOT2>E{HI&)lln#H%!	; G$u+UVVR(H} *OrG   c                 T    [        U 5      n [        U 5      nSS[        XU5      0S.U4$ )Nr   r   )r'   r&   )rN   rP   r  )rL   r   r   hints       rE   event_from_exceptionr=  
  sB     #8,H#H-D "$?Zc$de	
 	 rG   c                 n    U c  gU(       d  gU H#  nX :X  d  U R                  US-   5      (       d  M#    g   g)NFr   Tr   )nameitemsitems      rE   r1  r1    s9    |<4??4#:66  rG   c                 8    [         R                  " SU 5      S LnU$ )Nz [\\/](?:dist|site)-packages[\\/])research)r   external_sources     rE   r2  r2  *  s!     ii CXNVZZOrG   c                 :    Uc  gU R                  U5      (       a  gg)NFTr?  )r   r,  s     rE   r3  r3  1  s$     <((rG   c                 V    U R                  S5      SUS-
   R                  SSS9nUS-   $ )z\
Truncate a UTF-8-encodable string to the last full codepoint so that it fits in max_bytes.
utf-8Nr6  ignore)r$   ...)encodedecode)string	max_bytes	truncateds      rE   _truncate_by_bytesrQ  =  s8    
 g&Q7>>wx>XIurG   c                 d     [        U R                  S5      5      $ ! [        [        4 a     g f = f)NrI  )r   rL  UnicodeEncodeErrorr!  rC   s    rE   _get_size_in_bytesrT  G  s3    5<<()) 23 s    //c                     U (       d  U $ Uc  [         n[        U 5      n[        U 5      nUb  X!:  a  [        X5      nOUb  X1:  a  U S US-
   S-   nOU $ [	        UU=(       d    USSUS-
  U//S.S9$ )Nr6  rK  z!limitrb   )r   ra   rT   )r   rT  r   rQ  rR   )rD   r   	byte_size	text_sizetruncated_values        rE   r   r   O  s    -
"5)IE
I!7,U?		9#9 0*q.1E9)	sJNJ?@
 rG   r@   )NTTNN)TTN)NNNNN)NNr   r   N)NN)Or   r   rD  rM   r   typingr   r   r   r   r   typesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r8  r:  LogLevelStrr   objectfloatr   rA   compileBASE64_ALPHABETrn   rF   rJ   rP   rR   rz   	Annotatedr~   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-  rN   r=  r1  r2  r3  rQ  rT  r   ry   rG   rE   <module>rc     s  
  	 	 
   +    .   " d=!=(=2IIJ	!G RSK(	
4 14S#X3G GH(	
3(	
 S$sF{"334(	
 C	(	

 (	
 3(	
 d4S>*(	
 (	
 gh/d38n1EEF(	
 [(	
 c(	
  s!(	
" tCH~#(	
& HSM'(	
( ))(	
* v+(	
, s-(	
. CK($sF{+,sF{+'sm GH-tDcN/CCD!(+56f% $S&[ 1O(	
R W,E^ 	q! **12( +
3
	"D
 D
N Ana'(IP
[ T $ (\ 0 0  /f !-6-
h K\ !,BC 78 U&t >!.
$N> "	A  s   H H*)H*