
    Yf&                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ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y)    N)TYPE_CHECKING)Session)
json_dumpscapture_internal_exceptions)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    S/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/sentry_sdk/envelope.py
parse_jsonr      s-     ${{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ed        Zed        Z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).
    Nc                 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>7   s     :!aoo:s   ))lenr"   joinr#   s    r   descriptionzEnvelope.description2   s/     

OII:tzz::
 	
r   c                 P    | j                  t        t        |      d             y )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r#   r2   s     r   	add_eventzEnvelope.add_event:   s     	d:5#9HIr   c                 P    | j                  t        t        |      d             y )Nr1   transactionr3   r6   )r#   r<   s     r   add_transactionzEnvelope.add_transaction@   s     	d:;#?mTUr   c                 P    | j                  t        t        |      d             y )Nr1   profiler3   r6   )r#   r?   s     r   add_profilezEnvelope.add_profileF   s     	d:7#;)LMr   c                 P    | j                  t        t        |      d             y )Nr1   check_inr3   r6   )r#   checkins     r   add_checkinzEnvelope.add_checkinL   s     	d:7#;*MNr   c                     t        |t              r|j                         }| j                  t	        t        |      d             y )Nr1   sessionr3   )r   r   to_jsonr7   r8   r9   )r#   rF   s     r   add_sessionzEnvelope.add_sessionR   s2     gw'oo'Gd:7#;)LMr   c                 P    | j                  t        t        |      d             y )Nr1   sessionsr3   r6   )r#   rJ   s     r   add_sessionszEnvelope.add_sessionsZ   s     	d:8#<:NOr   c                 :    | j                   j                  |       y r   )r"   append)r#   items     r   r7   zEnvelope.add_item`   s     	

$r   c                 R    | j                   D ]  }|j                         }||c S  y r   )r"   	get_event)r#   r"   r2   s      r   rP   zEnvelope.get_eventf   s1    ZZ 	EOO%E 	 r   c                 R    | j                   D ]  }|j                         }||c S  y r   )r"   get_transaction_event)r#   rN   r2   s      r   rR   zEnvelope.get_transaction_eventn   s3    JJ 	D..0E 	 r   c                 ,    t        | j                        S r   )iterr"   r.   s    r   __iter__zEnvelope.__iter__v   s    DJJr   c                     |j                  t        | j                               |j                  d       | j                  D ]  }|j	                  |        y )N   
)writer   r    r"   serialize_into)r#   frN   s      r   rY   zEnvelope.serialize_intoz   sE     	

4<<()	JJ 	#D"	#r   c                 l    t        j                         }| j                  |       |j                         S r   ioBytesIOrY   getvaluer#   outs     r   	serializezEnvelope.serialize   '    jjlC ||~r   c                     t        |j                               }g }	 t        j                  |      }|n|j	                  |       * | ||      S )Nr    r"   )r   readliner8   deserialize_fromrM   )clsrZ   r    r"   rN   s        r   rg   zEnvelope.deserialize_from   sT    
 QZZ\*((+D|LL	 
 7%00r   c                 J    | j                  t        j                  |            S r   rg   r]   r^   rh   r   s     r   deserializezEnvelope.deserialize       
 ##BJJu$566r   c                 <    d| j                   d| j                  dS )Nz<Envelope headers=z items=>re   r.   s    r   __repr__zEnvelope.__repr__   s    37<<LLr   )NN)__name__
__module____qualname____doc__r$   propertyr/   r:   r=   r@   rD   rH   rK   r7   rP   rR   rU   rY   rb   classmethodrg   rl   rp    r   r   r   r      s      
 
JVNONP  # 1 1 7 7Mr   r   c                   6    e Zd Z	 	 	 ddZd Zed        Zd Zy)r9   Nc                 .    || _         || _        || _        y r   )r   r   path)r#   r   rz   r   s       r   r$   zPayloadRef.__init__   s     	
	r   c                    | j                   | j                  St               5  t        | j                  d      5 }|j	                         | _         d d d        d d d        | j                   S | j
                  &t        | j
                        | _         | j                   S d| _         | j                   S # 1 sw Y   bxY w# 1 sw Y   | j                   S xY w)Nrbr   )r   rz   r   openreadr   r   )r#   rZ   s     r   	get_byteszPayloadRef.get_bytes   s    ::yy$02 .dii. .!%&VVX
.. zz	 &'		2
 zz !
zz. .. zzs"   B=B1B=1B:	6B==C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   rz   r   r   r   	mimetypes
guess_type)r#   rz   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 ro   )r   r.   s    r   rp   zPayloadRef.__repr__   s    !%!;!;==r   )NNN)rq   rr   rs   r$   r   ru   r   rp   rw   r   r   r9   r9      s0     		 * *>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y)r8   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   filenamer5   content_type)	r   r    r   r   r9   strencoder   r4   )r#   r4   r    r5   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   c                 V    d| j                   d| j                  d| j                  dS )Nz<Item headers=z	 payload=z data_category=ro   )r    r4   r'   r.   s    r   rp   zItem.__repr__   s%     LLLL
 	
r   c                 8    | j                   j                  d      S )Nr5   r    getr.   s    r   r5   z	Item.type   s     ||''r   c                     | j                   j                  d      }|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)Nr5   rF   
attachmentr<   r2   errorclient_reportinternalr?   statsdmetric_bucketrB   monitordefaultr   )r#   r   s     r   r'   zItem.data_category   so     \\f%?<=  7]?"9_8^":r   c                 6    | j                   j                         S r   )r4   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.
        r2   Nr5   r4   r   r.   s    r   rP   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   rR   zItem.get_transaction_event   s0    99%$,,*;*;*G<<$$$r   c                    t        | j                        }| j                         }t        |      |d<   |j	                  t        |             |j	                  d       |j	                  |       |j	                  d       y )NlengthrW   )r   r    r   r,   rX   r   )r#   rZ   r    r   s       r   rY   zItem.serialize_into&  s^     t||$ J	
7#$			r   c                 l    t        j                         }| j                  |       |j                         S r   r\   r`   s     r   rb   zItem.serialize2  rc   r   c                 ~   |j                         j                         }|sy t        |      }|j                  d      }|"|j	                  |      }|j                          n|j                         j                  d      }|j                  d      dv r | |t        t        |                  }|S  | ||      }|S )Nr   rW   r5   )r2   r<   metric_bucketsr1   )r    r4   )rf   rstripr   r   r~   r9   )rh   rZ   liner    r   r4   rvs          r   rg   zItem.deserialize_from8  s    
 zz|""$T"X&ffVnGJJL jjl))%0G;;v"LLWjj>Q.RSB 	 Wg6B	r   c                 J    | j                  t        j                  |            S r   rj   rk   s     r   rl   zItem.deserializeO  rm   r   )NNNN)rq   rr   rs   r$   rp   ru   r5   r'   r   rP   rR   rY   rb   rv   rg   rl   rw   r   r   r8   r8      s     >
 ( (  ,(
  , 7 7r   r8   )r]   r   r   sentry_sdk._typesr   sentry_sdk.sessionr   sentry_sdk.utilsr   r   typingr   r   r	   r
   r   r   r   r   r   r   r9   r8   rw   r   r   <module>r      sZ    	   + & D:DM DMN)> )>XE7 E7r   