o
    0 i(                     @   s   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	rNd 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 dZG dd dZG dd dZdS )    N)Session)
json_dumpscapture_internal_exceptions)TYPE_CHECKING)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategoryc                 C   s    t | tr| dd} t| S )Nutf-8replace)
isinstancebytesdecodejsonloads)data r   _/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/envelope.py
parse_json   s   

r   c                   @   s   e Zd ZdZ		d'ddZe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d Zdd  Zed!d" Zed#d$ Zd%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                 C   s:   |d urt |}|pi | _|d u rg }nt|}|| _d S N)dictheaderslistitems)selfr   r   r   r   r   __init__$   s   

zEnvelope.__init__c                 C   s$   dt | jddd | jD f S )Nzenvelope with %s items (%s)z, c                 s   s    | ]}|j V  qd S r   )data_category).0xr   r   r   	<genexpr>8   s    z'Envelope.description.<locals>.<genexpr>)lenr   joinr   r   r   r   description3   s   zEnvelope.descriptionc                 C      |  tt|ddd d S )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r   r+   r   r   r   	add_event;      zEnvelope.add_eventc                 C   r)   )Nr*   transactionr,   r/   )r   r5   r   r   r   add_transactionB   r4   zEnvelope.add_transactionc                 C   r)   )Nr*   profiler,   r/   )r   r7   r   r   r   add_profileI   r4   zEnvelope.add_profilec              
   C   s*   |  tt|ddd|ddid d S )Nr*   profile_chunkplatformpython)r-   r.   r   )r0   r1   r2   get)r   r9   r   r   r   add_profile_chunkP   s   zEnvelope.add_profile_chunkc                 C   r)   )Nr*   check_inr,   r/   )r   Zcheckinr   r   r   add_checkin]   r4   zEnvelope.add_checkinc                 C   s.   t |tr	| }| tt|ddd d S )Nr*   sessionr,   )r   r   to_jsonr0   r1   r2   )r   r@   r   r   r   add_sessiond   s   
zEnvelope.add_sessionc                 C   r)   )Nr*   sessionsr,   r/   )r   rC   r   r   r   add_sessionsm   r4   zEnvelope.add_sessionsc                 C   s   | j | d S r   )r   append)r   itemr   r   r   r0   t   s   zEnvelope.add_itemc                 C   (   | j D ]}| }|d ur|  S qd S r   )r   	get_event)r   r   r+   r   r   r   rH   {      
zEnvelope.get_eventc                 C   rG   r   )r   get_transaction_event)r   rF   r+   r   r   r   rJ      rI   zEnvelope.get_transaction_eventc                 C   s
   t | jS r   )iterr   r'   r   r   r   __iter__      
zEnvelope.__iter__c                 C   s4   | t| j | d | jD ]}|| qd S )N   
)writer   r   r   serialize_into)r   frF   r   r   r   rP      s
   

zEnvelope.serialize_intoc                 C      t  }| | | S r   ioBytesIOrP   getvaluer   outr   r   r   	serialize      
zEnvelope.serializec                 C   s>   t | }g }	 t|}|d u rn|| q	| ||dS )N   r   r   )r   readliner1   deserialize_fromrE   )clsrQ   r   r   rF   r   r   r   r^      s   

zEnvelope.deserialize_fromc                 C      |  t|S r   r^   rT   rU   r_   r   r   r   r   deserialize      zEnvelope.deserializec                 C   s   d| j | jf S )Nz<Envelope headers=%r items=%r>r\   r'   r   r   r   __repr__   s   zEnvelope.__repr__)NN)__name__
__module____qualname____doc__r    propertyr(   r3   r6   r8   r=   r?   rB   rD   r0   rH   rJ   rL   rP   rY   classmethodr^   rc   re   r   r   r   r   r      s2    

	


r   c                   @   s8   e Zd Z			d
ddZdd Zedd Zdd	 ZdS )r2   Nc                 C   s   || _ || _|| _d S r   )r   r   path)r   r   rl   r   r   r   r   r       s   
zPayloadRef.__init__c              	   C   s   | j d u rD| jd ur9t # t| jd}| | _ W d    n1 s$w   Y  W d    n1 s3w   Y  n| jd urDt| j| _ | j pHdS )Nrb    )r   rl   r   openreadr   r   )r   rQ   r   r   r   	get_bytes   s   



zPayloadRef.get_bytesc                 C   sN   | j d urdS | jd ur%| j}t|tr|dd}t|d }|r%|S dS )Nzapplication/jsonr   r   r   zapplication/octet-stream)r   rl   r   r   r   	mimetypes
guess_type)r   rl   tyr   r   r   inferred_content_type   s   


z PayloadRef.inferred_content_typec                 C   s   d| j f S )Nz<Payload %r>)ru   r'   r   r   r   re      s   zPayloadRef.__repr__)NNN)rf   rg   rh   r    rq   rj   ru   re   r   r   r   r   r2      s    

r2   c                   @   s~   e Zd Z				dddZdd Zedd Zedd	 Zd
d Zdd Z	dd Z
dd Zdd Zedd Zedd ZdS )r1   Nc                 C   s   |d ur	t |}n|d u ri }|| _t|trt|d}nt|tr+t|dd}n|}|d ur5||d< |d ur=||d< |d urF||d< n	d|vrO|j|d< || _d S )N)r   r   filenamer.   content_type)	r   r   r   r   r2   strencoderu   r-   )r   r-   r   r.   rw   rv   r   r   r   r       s&   





zItem.__init__c                 C   s   d| j | j| jf S )Nz-<Item headers=%r payload=%r data_category=%r>)r   r-   r!   r'   r   r   r   re     s
   zItem.__repr__c                 C   s   | j dS )Nr.   r   r<   r'   r   r   r   r.     s   z	Item.typec                 C   s   | 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r4dS |dkr:dS |dkr@dS |dkrFdS dS )Nr.   r@   rC   
attachmentr5   r+   errorlogZlog_itemZtrace_metricZclient_reportZinternalr7   r9   r>   Zmonitordefaultrz   )r   rt   r   r   r   r!     s,   zItem.data_categoryc                 C   s
   | j  S r   )r-   rq   r'   r   r   r   rq   -  rM   zItem.get_bytesc                 C   s"   | j dkr| jjdur| jjS dS )z9
        Returns an error event if there is one.
        r+   Nr.   r-   r   r'   r   r   r   rH   1  s   zItem.get_eventc                 C   s"   | j dkr| jjd ur| jjS d S )Nr5   r   r'   r   r   r   rJ   :  s   zItem.get_transaction_eventc                 C   sN   t | j}|  }t||d< |t| |d || |d d S )NlengthrN   )r   r   rq   r%   rO   r   )r   rQ   r   r   r   r   r   rP   @  s   


zItem.serialize_intoc                 C   rR   r   rS   rW   r   r   r   rY   M  rZ   zItem.serializec                 C   s   |   }|s
d S t|}|d}|d ur!||}|   n|  d}|ddv r<| |tt|dd}|S | ||d}|S )Nr   rN   r.   )r+   r5   r*   )r   r-   )r]   rstripr   r<   rp   r2   )r_   rQ   liner   r   r-   rvr   r   r   r^   S  s   


zItem.deserialize_fromc                 C   r`   r   ra   rb   r   r   r   rc   k  rd   zItem.deserialize)NNNN)rf   rg   rh   r    re   rj   r.   r!   rq   rH   rJ   rP   rY   rk   r^   rc   r   r   r   r   r1      s(    


	
r1   )rT   r   rr   Zsentry_sdk.sessionr   Zsentry_sdk.utilsr   r   typingr   r   r   r   r	   r
   r   Zsentry_sdk._typesr   r   r   r   r2   r1   r   r   r   r   <module>   s&     *