
    tni%                         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dS )    N)Session)
json_dumpscapture_internal_exceptions)TYPE_CHECKING)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategorydataUnion[bytes, str]returnr   c                     t          | t                    r|                     dd          } t          j        |           S )Nutf-8replace)
isinstancebytesdecodejsonloads)r   s    P/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/envelope.py
parse_jsonr      s7    $ /{{7I..:d    c                   F   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	 	 	 	 d0dZ	 	 	 	 d1dZ	 	 	 	 d2dZ	 	 	 	 d3dZd4dZd4d Zd5d"Z	 	 	 	 d6d$Zdefd%Ze	 	 	 	 d7d&            Zed'edd fd(            Zdefd)ZdS )8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headersOptional[Dict[str, Any]]itemsOptional[List[Item]]r   c                 p    |t          |          }|pi | _        |g }nt          |          }|| _        d S N)dictr   listr!   )selfr   r!   s      r   __init__zEnvelope.__init__#   sB    
 7mmG}"=EEKKE


r   c                 |    dt          | j                  dd                    d | j        D                       dS )Nzenvelope with z items (z, c              3   $   K   | ]}|j         V  d S r$   )data_category).0xs     r   	<genexpr>z'Envelope.description.<locals>.<genexpr>5   s$      ::!ao::::::r   ))lenr!   joinr'   s    r   descriptionzEnvelope.description1   sE      
OOOOII::tz:::::::
 	
r   eventr   c                 j    |                      t          t          |          d                     d S )Nr   r4   payloadtypeadd_itemItem
PayloadRef)r'   r4   s     r   	add_eventzEnvelope.add_event8   s4     	d:5#9#9#9HHHIIIIIr   transactionc                 j    |                      t          t          |          d                     d S )Nr6   r?   r7   r:   )r'   r?   s     r   add_transactionzEnvelope.add_transaction>   s4     	d:;#?#?#?mTTTUUUUUr   profiler   c                 j    |                      t          t          |          d                     d S )Nr6   rB   r7   r:   )r'   rB   s     r   add_profilezEnvelope.add_profileD   s4     	d:7#;#;#;)LLLMMMMMr   profile_chunkc                     |                      t          t          |          dd|                    dd          i                     d S )Nr6   rE   platformpython)r8   r9   r   )r;   r<   r=   get)r'   rE   s     r   add_profile_chunkzEnvelope.add_profile_chunkJ   s_     	"666$#]%6%6z8%L%LM  	
 	
 	
 	
 	
r   checkinc                 j    |                      t          t          |          d                     d S )Nr6   check_inr7   r:   )r'   rK   s     r   add_checkinzEnvelope.add_checkinV   s4     	d:7#;#;#;*MMMNNNNNr   sessionUnion[Session, Any]c                     t          |t                    r|                                }|                     t	          t          |          d                     d S )Nr6   rO   r7   )r   r   to_jsonr;   r<   r=   )r'   rO   s     r   add_sessionzEnvelope.add_session\   sU     gw'' 	(oo''Gd:7#;#;#;)LLLMMMMMr   sessionsc                 j    |                      t          t          |          d                     d S )Nr6   rT   r7   r:   )r'   rT   s     r   add_sessionszEnvelope.add_sessionsd   s4     	d:8#<#<#<:NNNOOOOOr   itemr<   c                 :    | j                             |           d S r$   )r!   append)r'   rW   s     r   r;   zEnvelope.add_itemj   s      	
$r   Optional[Event]c                 N    | j         D ]}|                                }||c S d S r$   )r!   	get_event)r'   r!   r4   s      r   r\   zEnvelope.get_eventp   s;    Z 	 	EOO%%E  !tr   c                 N    | j         D ]}|                                }||c S d S r$   )r!   get_transaction_event)r'   rW   r4   s      r   r^   zEnvelope.get_transaction_eventw   s=    J 	 	D..00E  !tr   Iterator[Item]c                 *    t          | j                  S r$   )iterr!   r2   s    r   __iter__zEnvelope.__iter__~   s    DJr   fc                     |                     t          | j                             |                     d           | j        D ]}|                    |           d S )N   
)writer   r   r!   serialize_into)r'   rc   rW   s      r   rg   zEnvelope.serialize_into   sa     	

4<(()))	J 	# 	#D""""	# 	#r   c                 z    t          j                    }|                     |           |                                S r$   ioBytesIOrg   getvaluer'   outs     r   	serializezEnvelope.serialize   /    jllC   ||~~r   c                     t          |                                          }g }	 t                              |          }|n|                    |           3 | ||          S )N   r   r!   )r   readliner<   deserialize_fromrY   )clsrc   r   r!   rW   s        r   ru   zEnvelope.deserialize_from   sl    
 QZZ\\**	((++D|LL		
 s7%0000r   r   c                 P    |                      t          j        |                    S r$   ru   rj   rk   rv   r   s     r   deserializezEnvelope.deserialize   "    
 ##BJu$5$5666r   c                 (    d| j         d| j        dS )Nz<Envelope headers=z items=>rs   r2   s    r   __repr__zEnvelope.__repr__   s     37<<<LLr   )NN)r   r    r!   r"   r   N)r4   r   r   N)r?   r   r   N)rB   r   r   N)rE   r   r   N)rK   r   r   N)rO   rP   r   N)rT   r   r   N)rW   r<   r   Nr   rZ   )r   r_   rc   r   r   N)rc   r   r   r   )__name__
__module____qualname____doc__r(   propertystrr3   r>   rA   rD   rJ   rN   rS   rV   r;   r\   r^   rb   rg   r   ro   classmethodru   rz   r~    r   r   r   r      s         /3(,+ & 
	    
S 
 
 
 X
JJ 
J J J JVV 
V V V VNN 
N N N N



 


 

 

 

OO 
O O O ON&N 
N N N NPP 
P P P P   
                    ## 
# # # #5    
 11 
1 1 1 [1 77 
7 7 7 [7M# M M M M M Mr   r   c                   `    e Zd Z	 	 	 d	 	 	 	 	 	 	 dd	Zdefd
Zedefd            ZdefdZ	dS )r=   Nr   Optional[bytes]pathOptional[Union[bytes, str]]r   Optional[Any]r   c                 0    || _         || _        || _        d S r$   )r   r   r   )r'   r   r   r   s       r   r(   zPayloadRef.__init__   s     	
			r   c                 J   | j         | j        mt                      5  t          | j        d          5 }|                                | _         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   n | j        t          | j                  | _         | j         pdS )Nrbr   )r   r   r   openreadr   r   )r'   rc   s     r   	get_byteszPayloadRef.get_bytes   s   :y$022 . .di.. .!%&VVXX
. . . . . . . . . . . . . . .. . . . . . . . . . . . . . . &'	22
z S s4   A0AA0A	A0 A	!A00A47A4c                     | j         dS | j        P| j        }t          |t                    r|                    dd          }t          j        |          d         }|r|S dS )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   sl    9 %%Y"9D$&& 7{{7I66%d++A.B 	))r   c                     d| j         dS )Nz	<Payload r}   )r   r2   s    r   r~   zPayloadRef.__repr__   s     !%!;!;!;==r   )NNN)r   r   r   r   r   r   r   N)
r   r   r   r(   r   r   r   r   r   r~   r   r   r   r=   r=      s         $(.2 $	  , 	
 
   !5 ! ! ! ! 
*s 
* 
* 
* X
*># > > > > > >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dS )#r<   Nr8   Union[bytes, str, PayloadRef]r   r    r9   Optional[str]content_typefilenamec                 X   |t          |          }n|i }|| _        t          |t                    rt	          |          }n;t          |t
                    r$t	          |                    d                    }n|}|||d<   |||d<   |||d<   nd|vr
|j        |d<   || _        d S )N)r   r   r   r9   r   )	r%   r   r   r   r=   r   encoder   r8   )r'   r8   r   r9   r   r   s         r   r(   zItem.__init__   s     7mmGG_Ggu%% 	 w///GG%% 	 w~~g'>'>???GGG"*GJ"GFO#&2GN##7**&-&CGN#r   r   c                 8    d| j         d| j        d| j        dS )Nz<Item headers=z	 payload=z data_category=r}   )r   r8   r+   r2   s    r   r~   zItem.__repr__   s,     LLLLLL
 	
r   c                 6    | j                             d          S )Nr9   r   rI   r2   s    r   r9   z	Item.type   s    |'''r   r   c                     | j                             d          }|dk    s|dk    rdS |dk    rdS |dk    rdS |dk    rdS |dk    rd	S |d
k    rd
S |dk    rdS |dk    rdS |dk    rdS |dk    rdS dS )Nr9   rO   rT   
attachmentr?   r4   errorloglog_itemtrace_metricclient_reportinternalrB   rE   rM   monitordefaultr   )r'   r   s     r   r+   zItem.data_category   s    \f%%??bJ..9<<=   =7]]75[[:>!!!>?"":9__9?"""?:99r   c                 4    | j                                         S r$   )r8   r   r2   s    r   r   zItem.get_bytes  s    |%%'''r   rZ   c                 L    | j         dk    r| j        j        | j        j        S dS )z9
        Returns an error event if there is one.
        r4   Nr9   r8   r   r2   s    r   r\   zItem.get_event  s+     9DL$5$A<$$tr   c                 L    | j         dk    r| j        j        | j        j        S d S )Nr?   r   r2   s    r   r^   zItem.get_transaction_event  s)    9%%$,*;*G<$$tr   rc   r   c                 <   t          | j                  }|                                 }t          |          |d<   |                    t          |                     |                    d           |                    |           |                    d           d S )Nlengthre   )r%   r   r   r0   rf   r   )r'   rc   r   r   s       r   rg   zItem.serialize_into#  s}     t|$$  JJ	
7##$$$			r   c                 z    t          j                    }|                     |           |                                S r$   ri   rm   s     r   ro   zItem.serialize/  rp   r   Optional[Item]c                    |                                                                 }|sd S t          |          }|                    d          }|*|                    |          }|                                  n'|                                                     d          }|                    d          dv r) | |t          t          |                              }n | ||          }|S )Nr   re   r9   )r4   r?   r6   )r   r8   )rt   rstripr   rI   r   r=   )rv   rc   liner   r   r8   rvs          r   ru   zItem.deserialize_from4  s    
 zz||""$$ 	4T""X&&ffVnnGJJLLLL jjll))%00G;;v":::Wjj>Q>Q.R.R.RSSSBBWg666B	r   r   c                 P    |                      t          j        |                    S r$   rx   ry   s     r   rz   zItem.deserializeK  r{   r   )NNNN)
r8   r   r   r    r9   r   r   r   r   r   )r   r   )r   r   r   r   )rc   r   r   r   )r   r   r   r(   r   r~   r   r9   r+   r   r   r\   r^   rg   ro   r   ru   rz   r   r   r   r<   r<      s        /3 $(,$(0 , 	
 & "   >
# 
 
 
 
 ( ( ( X(    X2(5 ( ( ( (      


 

 
 
 
5    
  
   [, 77 
7 7 7 [7 7 7r   r<   )r   r   r   r   )rj   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      s   				      & & & & & & D D D D D D D D             ;::::::::   IM IM IM IM IM IM IM IMX#> #> #> #> #> #> #> #>LB7 B7 B7 B7 B7 B7 B7 B7 B7 B7r   