
    fi|                         d dl Z d dlZd dlZd dlmZmZ d dlmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZmZmZ e	rd dlmZ  G d d          ZdS )	    N)datetimetimezone)OptionalListCallableTYPE_CHECKINGAny)format_timestamp	safe_repr)EnvelopeItem
PayloadRef)Logc                   Z    e Zd ZdZdZdZd Zd Zd Zd Z	d Z
d	 Zed
             Zd ZdS )
LogBatcherd   i  g      @c                     g | _         || _        || _        d| _        t	          j                    | _        t	          j                    | _        d | _	        d | _
        d S )NT)_log_buffer_capture_func_record_lost_func_running	threadingLock_lockEvent_flush_event_flusher_flusher_pid)selfcapture_funcrecord_lost_funcs      g/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/_log_batcher.py__init__zLogBatcher.__init__   sW     )!1^%%
%O--     c                    | j         sdS t          j                    }| j        |k    rdS | j        5  | j        |k    r	 ddd           dS || _        t          j        | j                  | _        d| j        _	        	 | j        
                                 n## t          $ r d| _         Y ddd           dS w xY w	 ddd           n# 1 swxY w Y   dS )zFor forking processes we might need to restart this thread.
        This ensures that our process actually has that thread running.
        FTN)target)r   osgetpidr   r   r   Thread_flush_loopr   daemonstartRuntimeError)r   pids     r"   _ensure_threadzLogBatcher._ensure_thread$   sl   
 } 	5ikk##4Z 	 	  C''		 	 	 	 	 	 	 	 !$D%,D4DEEEDM#'DM ##%%%%    !&#	 	 	 	 	 	 	 	 &	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& ts;   C2C>BCB8)C7B88CCCc                     | j         ri| j                            | j        t	          j                    z              | j                                         |                                  | j         gd S d S N)r   r   waitFLUSH_WAIT_TIMErandomclear_flushr   s    r"   r*   zLogBatcher._flush_loopE   ss    m 	""4#7&-//#IJJJ##%%%KKMMM m 	 	 	 	 	r$   c                    |                                  r| j        d S | j        5  t          | j                  | j        k    r&|                     ddd           	 d d d            d S | j                            |           t          | j                  | j        k    r| j	        
                                 d d d            d S # 1 swxY w Y   d S )Nqueue_overflowlog_item   )reasondata_categoryquantity)r/   r   r   lenr   MAX_LOGS_BEFORE_DROPr   appendMAX_LOGS_BEFORE_FLUSHr   set)r   logs     r"   addzLogBatcher.addL   sC   
 ""$$ 	(=4Z 	( 	(4#$$(AAA&&+", '   
 	( 	( 	( 	( 	( 	( 	( 	( ##C(((4#$$(BBB!%%'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   7C)ACC
C
c                 f    | j         d S d| _        | j                                         d | _         d S )NF)r   r   r   rC   r7   s    r"   killzLogBatcher.killa   s6    = Fr$   c                 .    |                                   d S r1   )r6   r7   s    r"   flushzLogBatcher.flushj   s    r$   c                 r   d d| d         vr| d         | d         d<   d| d         vr| d         | d         d<   t          | d                   dz  |                     d	d
          t          | d                   t          | d                   fd| d                                         D             d}|S )Nc                     t          | t                    r| ddS t          | t                    r| ddS t          | t                    r| ddS t          | t                    r| ddS t          |           ddS )Nboolean)valuetypeintegerdoublestring)
isinstanceboolintfloatstrr   )vals    r"   format_attributez=LogBatcher._log_to_transport_format.<locals>.format_attributeq   s    #t$$ 9!$i888#s## 9!$i888#u%% 8!$h777#s## 8!$h777&s^^X>>>r$   zsentry.severity_number
attributesseverity_numberzsentry.severity_textseverity_texttime_unix_nanog    eAtrace_idz$00000000-0000-0000-0000-000000000000bodyc                 .    i | ]\  }}| |          S  r`   ).0kvrX   s      r"   
<dictcomp>z7LogBatcher._log_to_transport_format.<locals>.<dictcomp>   s8       +1Aq##A&&  r$   )	timestampr]   levelr^   rY   )rT   getrV   items)rD   resrX   s     @r"   _log_to_transport_formatz#LogBatcher._log_to_transport_formatn   s    
	? 
	? 
	? $3|+<<<:=>O:PC67!\):::8;O8LC45 S!1233e;
,RSS_-..F$$   585F5L5L5N5N  
 
 
r$   c                     t          dt          t          j        t          j                            i          } j        5  t           j                  dk    r	 d d d            d S |	                    t          dddt           j                  it          d fd j        D             i	          
                      j                                         d d d            n# 1 swxY w Y                        |           |S )Nsent_at)headersr   rD   z%application/vnd.sentry.items.log+json
item_countrh   c                 :    g | ]}                     |          S r`   )rj   )ra   rD   r   s     r"   
<listcomp>z%LogBatcher._flush.<locals>.<listcomp>   s7     & & &$' !% = =c B B& & &r$   )json)rN   content_typerm   payload)r   r
   r   nowr   utcr   r?   r   add_itemr   r   r5   r   )r   envelopes   ` r"   r6   zLogBatcher._flush   s     0hl1K1K L LM
 
 
 Z 	% 	%4#$$))	% 	% 	% 	% 	% 	% 	% 	% !H$c$*:&;&; '# & & & &+/+;& & &      " ""$$$+	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%. 	8$$$s   C++A4C++C/2C/N)__name__
__module____qualname__rB   r@   r3   r#   r/   r*   rE   rG   rI   staticmethodrj   r6   r`   r$   r"   r   r      s         O! ! !"  B  ( ( (*       \>    r$   r   )r'   r4   r   r   r   typingr   r   r   r   r	   sentry_sdk.utilsr
   r   sentry_sdk.enveloper   r   r   sentry_sdk._typesr   r   r`   r$   r"   <module>r      s    				      ' ' ' ' ' ' ' ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? 8 8 8 8 8 8 8 8 : : : : : : : : : : &%%%%%%^ ^ ^ ^ ^ ^ ^ ^ ^ ^r$   