
    \j%                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 e	r,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 dlmZmZ ddZ G d d      Z G d d      Z G d d      Zy)    N)Session)
json_dumpscapture_internal_exceptions)TYPE_CHECKING)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategoryc                 p    t        | t              r| j                  dd      } t        j                  |       S )Nutf-8replace)
isinstancebytesdecodejsonloads)datas    =/root/env/lib/python3.12/site-packages/sentry_sdk/envelope.py
parse_jsonr      s+    ${{7I.::d    c                   2   e Zd ZdZ	 	 d	 	 	 	 	 ddZedefd       Z	 	 	 	 ddZ	 	 	 	 ddZ		 	 	 	 ddZ
	 	 	 	 dd	Z	 	 	 	 dd
Z	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 d dZd!dZd!dZd"dZ	 	 	 	 d#dZdefdZe	 	 	 	 d$d       Zededd fd       ZdefdZy)%Envelopea.  
    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).
    Nreturnc                 p    |t        |      }|xs i | _        |
g }|| _        y t        |      }|| _        y N)dictheaderslistitems)selfr!   r#   s      r   __init__zEnvelope.__init__#   sC    
 7mG}"=E 
 KE
r   c                 z    dt        | j                        ddj                  d | j                  D              dS )Nzenvelope with z items (z, c              3   4   K   | ]  }|j                     y wr   )data_category).0xs     r   	<genexpr>z'Envelope.description.<locals>.<genexpr>5   s     :!aoo:s   ))lenr#   joinr$   s    r   descriptionzEnvelope.description1   s/     

OII:tzz::
 	
r   c                 P    | j                  t        t        |      d             y )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r$   r3   s     r   	add_eventzEnvelope.add_event8   s     	d:5#9HIr   c                 P    | j                  t        t        |      d             y )Nr2   transactionr4   r7   )r$   r=   s     r   add_transactionzEnvelope.add_transaction>   s     	d:;#?mTUr   c                 P    | j                  t        t        |      d             y )Nr2   profiler4   r7   )r$   r@   s     r   add_profilezEnvelope.add_profileD   s     	d:7#;)LMr   c                 v    | j                  t        t        |      dd|j                  dd      i             y )Nr2   profile_chunkplatformpython)r5   r6   r!   )r8   r9   r:   get)r$   rC   s     r   add_profile_chunkzEnvelope.add_profile_chunkJ   s8     	"6$#]%6%6z8%LM	
r   c                 P    | j                  t        t        |      d             y )Nr2   check_inr4   r7   )r$   checkins     r   add_checkinzEnvelope.add_checkinV   s     	d:7#;*MNr   c                     t        |t              r|j                         }| j                  t	        t        |      d             y )Nr2   sessionr4   )r   r   to_jsonr8   r9   r:   )r$   rM   s     r   add_sessionzEnvelope.add_session\   s2     gw'oo'Gd:7#;)LMr   c                 P    | j                  t        t        |      d             y )Nr2   sessionsr4   r7   )r$   rQ   s     r   add_sessionszEnvelope.add_sessionsd   s     	d:8#<:NOr   c                 :    | j                   j                  |       y r   )r#   append)r$   items     r   r8   zEnvelope.add_itemj   s     	

$r   c                 R    | j                   D ]  }|j                         }||c S  y r   )r#   	get_event)r$   r#   r3   s      r   rW   zEnvelope.get_eventp   s1    ZZ 	EOO%E 	 r   c                 R    | j                   D ]  }|j                         }||c S  y r   )r#   get_transaction_event)r$   rU   r3   s      r   rY   zEnvelope.get_transaction_eventw   s3    JJ 	D..0E 	 r   c                 ,    t        | j                        S r   )iterr#   r/   s    r   __iter__zEnvelope.__iter__~   s    DJJr   c                     |j                  t        | j                               |j                  d       | j                  D ]  }|j	                  |        y )N   
)writer   r!   r#   serialize_into)r$   frU   s      r   r`   zEnvelope.serialize_into   sE     	

4<<()	JJ 	#D"	#r   c                 l    t        j                         }| j                  |       |j                         S r   ioBytesIOr`   getvaluer$   outs     r   	serializezEnvelope.serialize   '    jjlC ||~r   c                     t        |j                               }g }	 t        j                  |      }|n|j	                  |       * | ||      S )Nr!   r#   )r   readliner9   deserialize_fromrT   )clsra   r!   r#   rU   s        r   rn   zEnvelope.deserialize_from   sT    
 QZZ\*((+D|LL	 
 7%00r   r   c                 J    | j                  t        j                  |            S r   rn   rd   re   ro   r   s     r   deserializezEnvelope.deserialize       
 ##BJJu$566r   c                 <    d| j                   d| j                  dS )Nz<Envelope headers=z items=>rl   r/   s    r   __repr__zEnvelope.__repr__   s    37<<LLr   )NN)r!   Optional[Dict[str, Any]]r#   zOptional[List[Item]]r   N)r3   r   r   N)r=   r   r   N)r@   r   r   N)rC   r   r   N)rJ   r   r   N)rM   zUnion[Session, Any]r   N)rQ   r   r   N)rU   r9   r   Nr   zOptional[Event])r   zIterator[Item]ra   r   r   N)ra   r   r   r   )__name__
__module____qualname____doc__r%   propertystrr0   r;   r>   rA   rG   rK   rO   rR   r8   rW   rY   r\   r`   r   ri   classmethodrn   rs   rw    r   r   r   r      s    /3(,+ & 
	 
S 
 
JJ 
JVV 
VNN 
N



 


OO 
ON&N 
NPP 
P   
  ## 
#5 
 11 
1 1 77 
7 7M# Mr   r   c                   X    e Zd Z	 	 	 d	 	 	 	 	 	 	 ddZdefdZedefd       ZdefdZ	y)	r:   Nr   c                 .    || _         || _        || _        y r   )r   r   path)r$   r   r   r   s       r   r%   zPayloadRef.__init__   s     	
	r   c                 ^   | j                   z| j                  Ht               5  t        | j                  d      5 }|j	                         | _         d d d        d d d        n&| j
                  t        | j
                        | _         | j                   xs dS # 1 sw Y   HxY w# 1 sw Y   %xY w)Nrbr   )r   r   r   openreadr   r   )r$   ra   s     r   	get_byteszPayloadRef.get_bytes   s    ::yy$02 .dii. .!%&VVX
.. . &'		2
zz S 	. .. .s"   B#BB#B 	B##B,c                     | j                   y| j                  J| j                  }t        |t              r|j	                  dd      }t        j                  |      d   }|r|S y)Nzapplication/jsonr   r   r   zapplication/octet-stream)r   r   r   r   r   	mimetypes
guess_type)r$   r   tys      r   inferred_content_typez PayloadRef.inferred_content_type   s\    99 %YY"99D$&{{7I6%%d+A.B	)r   c                 "    d| j                   dS )Nz	<Payload rv   )r   r/   s    r   rw   zPayloadRef.__repr__   s    !%!;!;==r   )NNN)r   zOptional[bytes]r   zOptional[Union[bytes, str]]r   zOptional[Any]r   N)
r{   r|   r}   r%   r   r   r   r   r   rw   r   r   r   r:   r:      sk     $(.2 $	  , 	
 
!5 ! 
*s 
* 
*># >r   r:   c                       e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZdefdZedd       Zedd       Zde	fdZ
ddZdd	Z	 	 	 	 dd
Zde	fdZe	 	 	 	 dd       Zede	ddfd       Zy)r9   Nc                 :   |t        |      }n|i }|| _        t        |t              rt	        |      }n.t        |t
              rt	        |j                  d            }n|}|||d<   |||d<   |||d<   || _        y d|vr|j                  |d<   || _        y )N)r   r   filenamer6   content_type)	r    r!   r   r   r:   r   encoder   r5   )r$   r5   r!   r6   r   r   s         r   r%   zItem.__init__   s     7mG_Ggu% w/G% w~~g'>?GG"*GJ"GFO#&2GN#  7*&-&C&CGN#r   r   c                 V    d| j                   d| j                  d| j                  dS )Nz<Item headers=z	 payload=z data_category=rv   )r!   r5   r(   r/   s    r   rw   zItem.__repr__   s#    LLLL
 	
r   c                 8    | j                   j                  d      S )Nr6   r!   rF   r/   s    r   r6   z	Item.type   s    ||''r   c                     | j                   j                  d      }|dk(  s|dk(  ry|dk(  ry|dk(  ry|dk(  ry|dk(  ry|d	k(  ry
|dk(  ry|dk(  ry|dk(  ry|dk(  ry|dk(  ryy)Nr6   rM   rQ   
attachmentr=   spanr3   errorloglog_itemtrace_metricclient_reportinternalr@   rC   rI   monitordefaultr   )r$   r   s     r   r(   zItem.data_category   s    \\f%?bJ.<=  6\7]5[>!!?"9_?"":r   c                 6    | j                   j                         S r   )r5   r   r/   s    r   r   zItem.get_bytes  s    ||%%''r   c                 z    | j                   dk(  r,| j                  j                  | j                  j                  S y)z9
        Returns an error event if there is one.
        r3   Nr6   r5   r   r/   s    r   rW   zItem.get_event  s2     99DLL$5$5$A<<$$$r   c                 z    | j                   dk(  r,| j                  j                  | j                  j                  S y )Nr=   r   r/   s    r   rY   zItem.get_transaction_event   s0    99%$,,*;*;*G<<$$$r   c                    t        | j                        }| j                         }t        |      |d<   |j	                  t        |             |j	                  d       |j	                  |       |j	                  d       y )Nlengthr^   )r    r!   r   r-   r_   r   )r$   ra   r!   r   s       r   r`   zItem.serialize_into%  s^     t||$ J	
7#$			r   c                 l    t        j                         }| j                  |       |j                         S r   rc   rg   s     r   ri   zItem.serialize1  rj   r   Optional[Item]c                 ~   |j                         j                         }|sy t        |      }|j                  d      }|"|j	                  |      }|j                          n|j                         j                  d      }|j                  d      dv r | |t        t        |                  }|S  | ||      }|S )Nr   r^   r6   )r3   r=   r2   )r!   r5   )rm   rstripr   rF   r   r:   )ro   ra   liner!   r   r5   rvs          r   rn   zItem.deserialize_from6  s    
 zz|""$T"X&ffVnGJJL jjl))%0G;;v"::Wjj>Q.RSB 	 Wg6B	r   r   c                 J    | j                  t        j                  |            S r   rq   rr   s     r   rs   zItem.deserializeM  rt   r   )NNNN)
r5   zUnion[bytes, str, PayloadRef]r!   rx   r6   Optional[str]r   r   r   r   )r   r   )r   r   ry   rz   )ra   r   r   r   )r{   r|   r}   r%   r   rw   r   r6   r(   r   r   rW   rY   r`   ri   r   rn   rs   r   r   r   r9   r9      s     /3 $(,$(0 , 	
 & ">
# 
 ( (  6(5 (


 

5 
  
 , 77 
7 7r   r9   )r   zUnion[bytes, str]r   r   )rd   r   r   sentry_sdk.sessionr   sentry_sdk.utilsr   r   typingr   r   r   r	   r
   r   r   sentry_sdk._typesr   r   r   r   r:   r9   r   r   r   <module>r      sZ    	   & D  :IM IMX#> #>LD7 D7r   