
    ghs(                         S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJ	r	  \	(       a,  S SKJ
r
  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S r " S S5      r " S S5      r " S S5      rg)    N)Session)
json_dumpscapture_internal_exceptions)TYPE_CHECKING)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategoryc                 |    [        U [        5      (       a  U R                  SS5      n [        R                  " U 5      $ )Nutf-8replace)
isinstancebytesdecodejsonloads)datas    V/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/envelope.py
parse_jsonr      s0     ${{7I.::d    c                       \ rS rSrSr  SS jr\S 5       rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS r\S 5       r\S 5       rS rSrg)Envelope   a  
Represents a Sentry Envelope. The calling code is responsible for adhering to the constraints
documented in the Sentry docs: https://develop.sentry.dev/sdk/envelopes/#data-model. In particular,
each envelope may have at most one Item with type "event" or "transaction" (but not both).
Nc                 n    Ub  [        U5      nU=(       d    0 U l        Uc  / nO[        U5      nX l        g N)dictheaderslistitems)selfr!   r#   s      r   __init__Envelope.__init__$   s6     7mG}"=EKE
r   c                 ~    S[        U R                  5      < SSR                  S U R                   5       5      < S3$ )Nzenvelope with z items (z, c              3   8   #    U  H  oR                   v   M     g 7fr   )data_category).0xs     r   	<genexpr>'Envelope.description.<locals>.<genexpr>8   s     :z!oozs   ))lenr#   joinr$   s    r   descriptionEnvelope.description3   s/     

OII:tzz::
 	
r   c                 D    U R                  [        [        US9SS95        g )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r$   r6   s     r   	add_eventEnvelope.add_event;   s     	d:5#9HIr   c                 D    U R                  [        [        US9SS95        g )Nr5   transactionr7   r:   )r$   rA   s     r   add_transactionEnvelope.add_transactionA   s     	d:;#?mTUr   c                 D    U R                  [        [        US9SS95        g )Nr5   profiler7   r:   )r$   rE   s     r   add_profileEnvelope.add_profileG   s     	d:7#;)LMr   c                 j    U R                  [        [        US9SSUR                  SS5      0S95        g )Nr5   profile_chunkplatformpython)r8   r9   r!   )r;   r<   r=   get)r$   rI   s     r   add_profile_chunkEnvelope.add_profile_chunkM   s8     	"6$#]%6%6z8%LM	
r   c                 D    U R                  [        [        US9SS95        g )Nr5   check_inr7   r:   )r$   checkins     r   add_checkinEnvelope.add_checkinY   s     	d:7#;*MNr   c                     [        U[        5      (       a  UR                  5       nU R                  [	        [        US9SS95        g )Nr5   sessionr7   )r   r   to_jsonr;   r<   r=   )r$   rU   s     r   add_sessionEnvelope.add_session_   s5     gw''oo'Gd:7#;)LMr   c                 D    U R                  [        [        US9SS95        g )Nr5   sessionsr7   r:   )r$   rZ   s     r   add_sessionsEnvelope.add_sessionsg   s     	d:8#<:NOr   c                 :    U R                   R                  U5        g r   )r#   append)r$   items     r   r;   Envelope.add_itemm   s     	

$r   c                 X    U R                    H  nUR                  5       nUc  M  Us  $    g r   )r#   	get_event)r$   r#   r6   s      r   rb   Envelope.get_events   s,    ZZEOO%E    r   c                 X    U R                    H  nUR                  5       nUc  M  Us  $    g r   )r#   get_transaction_event)r$   r_   r6   s      r   re   Envelope.get_transaction_event{   s.    JJD..0E   r   c                 ,    [        U R                  5      $ r   )iterr#   r1   s    r   __iter__Envelope.__iter__   s    DJJr   c                     UR                  [        U R                  5      5        UR                  S5        U R                   H  nUR	                  U5        M     g )N   
)writer   r!   r#   serialize_into)r$   fr_   s      r   rn   Envelope.serialize_into   s@     	

4<<()	JJD" r   c                 n    [         R                  " 5       nU R                  U5        UR                  5       $ r   ioBytesIOrn   getvaluer$   outs     r   	serializeEnvelope.serialize   '    jjlC ||~r   c                     [        UR                  5       5      n/ n [        R                  U5      nUc  OUR	                  U5        M,  U " X#S9$ )Nr!   r#   )r   readliner<   deserialize_fromr^   )clsro   r!   r#   r_   s        r   r~   Envelope.deserialize_from   sR    
 QZZ\*((+D|LL	 
 700r   c                 L    U R                  [        R                  " U5      5      $ r   r~   rs   rt   r   r   s     r   deserializeEnvelope.deserialize       
 ##BJJu$566r   c                 @    SU R                   < SU R                  < S3$ )Nz<Envelope headers=z items=>r|   r1   s    r   __repr__Envelope.__repr__   s    37<<LLr   r|   )NN)__name__
__module____qualname____firstlineno____doc__r%   propertyr2   r>   rB   rF   rM   rR   rW   r[   r;   rb   re   ri   rn   rx   classmethodr~   r   r   __static_attributes__ r   r   r   r      s      
 
JVN

ONP  # 1 1 7 7Mr   r   c                   @    \ rS rSr   SS jrS r\S 5       rS rSr	g)	r=      Nc                 (    X0l         Xl        X l        g r   )r   r   path)r$   r   r   r   s       r   r%   PayloadRef.__init__   s     	
	r   c                    U R                   c|  U R                  bH  [        5          [        U R                  S5       nUR	                  5       U l         S S S 5        S S S 5        O'U R
                  b  [        U R
                  5      U l         U R                   =(       d    S$ ! , (       d  f       NS= f! , (       d  f       N4= f)Nrbr   )r   r   r   openreadr   r   )r$   ro   s     r   	get_bytesPayloadRef.get_bytes   s    ::yy$02dii.!%&VVX
 / 32 &'		2
zz S 	 /. 32s"   B0BB0
B-	)B00
B>c                     U R                   b  gU R                  bU  U R                  n[        U[        5      (       a  UR	                  SS5      n[
        R                  " U5      S   nU(       a  U$ g)Nzapplication/jsonr   r   r   zapplication/octet-stream)r   r   r   r   r   	mimetypes
guess_type)r$   r   tys      r   inferred_content_type PayloadRef.inferred_content_type   sa     99 %YY"99D$&&{{7I6%%d+A.B	)r   c                 $    SU R                   < S3$ )Nz	<Payload r   )r   r1   s    r   r   PayloadRef.__repr__   s    !%!;!;==r   )r   r   r   )NNN)
r   r   r   r   r%   r   r   r   r   r   r   r   r   r=   r=      s0     			! * *>r   r=   c                       \ rS rSr    SS jrS r\S 5       r\S 5       rS r	S r
S	 rS
 rS r\S 5       r\S 5       rSrg)r<      Nc                 8   Ub  [        U5      nOUc  0 nX l        [        U[        5      (       a
  [	        US9nO0[        U[
        5      (       a  [	        UR                  S5      S9nOUnUb  XRS'   Ub  X2S'   Ub  XBS'   OSU;  a  UR                  US'   Xl        g )N)r   r   filenamer9   content_type)	r    r!   r   r   r=   strencoder   r8   )r$   r8   r!   r9   r   r   s         r   r%   Item.__init__   s     7mG_Ggu%% w/G%% w~~g'>?GG"*J"FO#&2N#7*&-&C&CGN#r   c                 \    SU R                   < SU R                  < SU R                  < S3$ )Nz<Item headers=z	 payload=z data_category=r   )r!   r8   r)   r1   s    r   r   Item.__repr__   s%     LLLL
 	
r   c                 8    U R                   R                  S5      $ )Nr9   r!   rL   r1   s    r   r9   	Item.type  s     ||''r   c                     U R                   R                  S5      nUS:X  d  US:X  a  gUS:X  a  gUS:X  a  gUS:X  a  gUS:X  a  gUS	:X  a  g
US:X  a  gUS:X  a  gUS:X  a  gUS:X  a  gg)Nr9   rU   rZ   
attachmentrA   r6   errorlogclient_reportinternalrE   rI   statsdmetric_bucketrP   monitordefaultr   )r$   r   s     r   r)   Item.data_category  s     \\f%?bJ.<=  7]5[?"9_?""8^":r   c                 6    U R                   R                  5       $ r   )r8   r   r1   s    r   r   Item.get_bytes"  s    ||%%''r   c                 ~    U R                   S:X  a-  U R                  R                  b  U R                  R                  $ g)z)
Returns an error event if there is one.
r6   Nr9   r8   r   r1   s    r   rb   Item.get_event&  s2    
 99DLL$5$5$A<<$$$r   c                 ~    U R                   S:X  a-  U R                  R                  b  U R                  R                  $ g )NrA   r   r1   s    r   re   Item.get_transaction_event/  s0    99%$,,*;*;*G<<$$$r   c                    [        U R                  5      nU R                  5       n[        U5      US'   UR	                  [        U5      5        UR	                  S5        UR	                  U5        UR	                  S5        g )Nlengthrl   )r    r!   r   r/   rm   r   )r$   ro   r!   r   s       r   rn   Item.serialize_into5  s^     t||$ J	
7#$			r   c                 n    [         R                  " 5       nU R                  U5        UR                  5       $ r   rr   rv   s     r   rx   Item.serializeA  rz   r   c                 z   UR                  5       R                  5       nU(       d  g [        U5      nUR                  S5      nUb"  UR	                  U5      nUR                  5         OUR                  5       R                  S5      nUR                  S5      S;   a  U " U[        [        U5      S9S9nU$ U " X5S9nU$ )Nr   rl   r9   )r6   rA   metric_bucketsr5   r!   r8   )r}   rstripr   rL   r   r=   )r   ro   liner!   r   r8   rvs          r   r~   Item.deserialize_fromG  s    
 zz|""$T"X&ffVnGJJL jjl))%0G;;v"LLWjj>Q.RSB 	 W6B	r   c                 L    U R                  [        R                  " U5      5      $ r   r   r   s     r   r   Item.deserialize^  r   r   r   )NNNN)r   r   r   r   r%   r   r   r9   r)   r   rb   re   rn   rx   r   r~   r   r   r   r   r   r<   r<      s     >
 ( (  4(
  , 7 7r   r<   )rs   r   r   sentry_sdk.sessionr   sentry_sdk.utilsr   r   typingr   r   r   r	   r
   r   r   sentry_sdk._typesr   r   r   r   r=   r<   r   r   r   <module>r      sZ    	   & D  :PM PMf'> '>TI7 I7r   