
    fi(                         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 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EventDataCategoryc                     t          | t                    r|                     dd          } t          j        |           S )Nutf-8replace)
isinstancebytesdecodejsonloads)datas    c/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/envelope.py
parse_jsonr      s9     $ /{{7I..:d    c                       e Zd ZdZ	 	 ddZed             Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zed             Zed             Zd ZdS )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).
    Nc                 p    |t          |          }|pi | _        |g }nt          |          }|| _        d S N)dictheaderslistitems)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>8   s$      ::!ao::::::r   ))lenr"   joinr#   s    r   descriptionzEnvelope.description3   sE      
OOOOII::tz:::::::
 	
r   c                 j    |                      t          t          |          d                     d S )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r#   r2   s     r   	add_eventzEnvelope.add_event;   s4    
 	d:5#9#9#9HHHIIIIIr   c                 j    |                      t          t          |          d                     d S )Nr1   transactionr3   r6   )r#   r<   s     r   add_transactionzEnvelope.add_transactionB   s4    
 	d:;#?#?#?mTTTUUUUUr   c                 j    |                      t          t          |          d                     d S )Nr1   profiler3   r6   )r#   r?   s     r   add_profilezEnvelope.add_profileI   s4    
 	d:7#;#;#;)LLLMMMMMr   c                     |                      t          t          |          dd|                    dd          i                     d S )Nr1   profile_chunkplatformpython)r4   r5   r    )r7   r8   r9   get)r#   rB   s     r   add_profile_chunkzEnvelope.add_profile_chunkP   s_    
 	"666$#]%6%6z8%L%LM  	
 	
 	
 	
 	
r   c                 j    |                      t          t          |          d                     d S )Nr1   check_inr3   r6   )r#   checkins     r   add_checkinzEnvelope.add_checkin]   s4    
 	d:7#;#;#;*MMMNNNNNr   c                     t          |t                    r|                                }|                     t	          t          |          d                     d S )Nr1   sessionr3   )r   r   to_jsonr7   r8   r9   )r#   rL   s     r   add_sessionzEnvelope.add_sessiond   sU    
 gw'' 	(oo''Gd:7#;#;#;)LLLMMMMMr   c                 j    |                      t          t          |          d                     d S )Nr1   sessionsr3   r6   )r#   rP   s     r   add_sessionszEnvelope.add_sessionsm   s4    
 	d:8#<#<#<:NNNOOOOOr   c                 :    | j                             |           d S r   )r"   append)r#   items     r   r7   zEnvelope.add_itemt   s     
 	
$r   c                 N    | j         D ]}|                                }||c S d S r   )r"   	get_event)r#   r"   r2   s      r   rV   zEnvelope.get_event{   s;    Z 	 	EOO%%E  !tr   c                 N    | j         D ]}|                                }||c S d S r   )r"   get_transaction_event)r#   rT   r2   s      r   rX   zEnvelope.get_transaction_event   s=    J 	 	D..00E  !tr   c                 *    t          | j                  S r   )iterr"   r.   s    r   __iter__zEnvelope.__iter__   s    DJr   c                     |                     t          | j                             |                     d           | j        D ]}|                    |           d S )N   
)writer   r    r"   serialize_into)r#   frT   s      r   r_   zEnvelope.serialize_into   sa    
 	

4<(()))	J 	# 	#D""""	# 	#r   c                 z    t          j                    }|                     |           |                                S r   ioBytesIOr_   getvaluer#   outs     r   	serializezEnvelope.serialize   /    jllC   ||~~r   c                     t          |                                          }g }	 t                              |          }|n|                    |           3 | ||          S )N   r    r"   )r   readliner8   deserialize_fromrS   )clsr`   r    r"   rT   s        r   rn   zEnvelope.deserialize_from   sl     QZZ\\**	((++D|LL		
 s7%0000r   c                 P    |                      t          j        |                    S r   rn   rc   rd   ro   r   s     r   deserializezEnvelope.deserialize   "     ##BJu$5$56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)__name__
__module____qualname____doc__r$   propertyr/   r:   r=   r@   rF   rJ   rN   rQ   r7   rV   rX   r[   r_   rh   classmethodrn   rs   rw    r   r   r   r      st             
 
 X
J J JV V VN N N
 
 
O O ON N NP P P              # # #   1 1 [1 7 7 [7M M M M Mr   r   c                   >    e Zd Z	 	 	 ddZd Zed             Zd ZdS )r9   Nc                 0    || _         || _        || _        d S r   )r   r   path)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#   r`   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   sn     9 %%Y"9D$&& 7{{7I66%d++A.B 	))r   c                     d| j         dS )Nz	<Payload rv   )r   r.   s    r   rw   zPayloadRef.__repr__   s     !%!;!;!;==r   )NNN)rx   ry   rz   r$   r   r|   r   rw   r~   r   r   r9   r9      sl         		 	 	 		! 	! 	! * * X*> > > > >r   r9   c                       e Zd Z	 	 	 	 ddZd Zed             Zed             Zd Zd Z	d Z
d	 Zd
 Zed             Zed             ZdS )r8   Nc                 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   filenamer5   content_type)	r   r    r   r   r9   strencoder   r4   )r#   r4   r    r5   r   r   s         r   r$   zItem.__init__   s     7mmGG_Ggu%% 	 w///GG%% 	 w~~g'>'>???GGG"*GJ"GFO#&2GN##7**&-&CGN#r   c                 8    d| j         d| j        d| j        dS )Nz<Item headers=z	 payload=z data_category=rv   )r    r4   r'   r.   s    r   rw   zItem.__repr__  s.      LLLLLL
 	
r   c                 6    | j                             d          S )Nr5   r    rE   r.   s    r   r5   z	Item.type  s     |'''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 )Nr5   rL   rP   
attachmentr<   r2   errorloglog_itemtrace_metricclient_reportinternalr?   rB   rH   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   )r4   r   r.   s    r   r   zItem.get_bytes-  s    |%%'''r   c                 L    | j         dk    r| j        j        | j        j        S dS )z9
        Returns an error event if there is one.
        r2   Nr5   r4   r   r.   s    r   rV   zItem.get_event1  s+    
 9DL$5$A<$$tr   c                 L    | j         dk    r| j        j        | j        j        S d S )Nr<   r   r.   s    r   rX   zItem.get_transaction_event:  s)    9%%$,*;*G<$$tr   c                 <   t          | j                  }|                                 }t          |          |d<   |                    t          |                     |                    d           |                    |           |                    d           d S )Nlengthr]   )r   r    r   r,   r^   r   )r#   r`   r    r   s       r   r_   zItem.serialize_into@  s}    
 t|$$  JJ	
7##$$$			r   c                 z    t          j                    }|                     |           |                                S r   rb   rf   s     r   rh   zItem.serializeM  ri   r   c                    |                                                                 }|sd S t          |          }|                    d          }|*|                    |          }|                                  n'|                                                     d          }|                    d          dv r) | |t          t          |                              }n | ||          }|S )Nr   r]   r5   )r2   r<   r1   )r    r4   )rm   rstripr   rE   r   r9   )ro   r`   liner    r   r4   rvs          r   rn   zItem.deserialize_fromS  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   c                 P    |                      t          j        |                    S r   rq   rr   s     r   rs   zItem.deserializek  rt   r   )NNNN)rx   ry   rz   r$   rw   r|   r5   r'   r   rV   rX   r_   rh   r}   rn   rs   r~   r   r   r8   r8      s            >
 
 
 ( ( X(   X4( ( (           [. 7 7 [7 7 7r   r8   )rc   r   r   sentry_sdk.sessionr   sentry_sdk.utilsr   r   typingr   r   r   r	   r
   r   r   sentry_sdk._typesr   r   r   r   r9   r8   r~   r   r   <module>r      s   				      & & & & & & D D D D D D D D             ;::::::::  [M [M [M [M [M [M [M [M|'> '> '> '> '> '> '> '>TL7 L7 L7 L7 L7 L7 L7 L7 L7 L7r   