
    lh                         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y)	    N)datetimetimezone)OptionalListCallableTYPE_CHECKINGAny)format_timestamp	safe_repr)EnvelopeItem
PayloadRef)Logc                   N    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
ed	        Zd
 Zy)
LogBatcherd   g      @c                     g | _         || _        d| _        t        j                         | _        t        j                         | _        d | _        d | _	        y )NT)
_log_buffer_capture_func_running	threadingLock_lockEvent_flush_event_flusher_flusher_pid)selfcapture_funcs     i/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/_log_batcher.py__init__zLogBatcher.__init__   sG    
 )^^%
%OO-     c                    | j                   syt        j                         }| j                  |k(  ry| j                  5  | j                  |k(  r
	 ddd       y|| _        t        j                  | j                        | _        d| j                  _	        	 | j                  j                          	 ddd       y# t        $ r d| _         Y ddd       yw xY w# 1 sw Y   yxY w)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!   s    
 }}iik#ZZ 	   C'		 	 !$D%,,D4D4DEDM#'DMM ##%	&     !&#	 		& s/   C=CB::C
CCCC!c                     | j                   rr| j                  j                  | j                  t	        j                         z          | j                  j                          | j                          | j                   rqy y N)r   r   waitFLUSH_WAIT_TIMErandomclear_flushr   s    r    r(   zLogBatcher._flush_loopB   sR    mm""4#7#7&--/#IJ##%KKM mmr"   c                 .   | j                         r| j                  y | j                  5  | j                  j	                  |       t        | j                        | j                  k\  r| j                  j                          d d d        y # 1 sw Y   y xY wr/   )	r-   r   r   r   appendlenMAX_LOGS_BEFORE_FLUSHr   set)r   logs     r    addzLogBatcher.addI   sw    
 ""$(=ZZ 	(##C(4##$(B(BB!!%%'	( 	( 	(s   ABBc                 n    | j                   y d| _        | j                  j                          d | _         y )NF)r   r   r   r:   r5   s    r    killzLogBatcher.killV   s/    == r"   c                 $    | j                          y r/   )r4   r5   s    r    flushzLogBatcher.flush_   s    r"   c                 4   d }d| d   vr| d   | d   d<   d| d   vr| d   | d   d<   t        | d         dz  | j                  d	d
      t        | d         t        | d         | d   j                         D ci c]  \  }}| ||       c}}d}|S c c}}w )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_attributef   se    #t$!$i88#s#!$i88#u%!$h77#s#!$h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body)	timestamprT   levelrU   rP   )rK   getrM   items)r;   rO   kvress        r    _log_to_transport_formatz#LogBatcher._log_to_transport_formatc   s    
	? $3|+<<:=>O:PC67!\)::8;O8LC45 S!123e;
,RS_-.F$585F5L5L5N+1Aq#A&&
 
s   9Bc                 (   t        dt        t        j                  t        j
                              i      }| j                  5  t        | j                        dk(  r
	 d d d        y |j                  t        dddt        | j                        it        d| j                  D cg c]  }| j                  |       c}i      	             | j                  j                          d d d        | j                  |       |S c c}w # 1 sw Y   !xY w)
Nsent_at)headersr   r;   z%application/vnd.sentry.items.log+json
item_countrY   )json)rE   content_typer`   payload)r   r
   r   nowr   utcr   r8   r   add_itemr   r   r]   r3   r   )r   enveloper;   s      r    r4   zLogBatcher._flush   s     0hll1K LM
 ZZ 	%4##$)	% 	% !H$c$*:*:&; '#+/+;+;&$' !% = =c B&" ""$+	%. 	8$&	% 	%s$   D(<D$D<,DDDN)__name__
__module____qualname__r9   r1   r!   r-   r(   r<   r>   r@   staticmethodr]   r4    r"   r    r   r      sE    O!B(  >r"   r   )r%   r2   r   r   r   typingr   r   r   r   r	   sentry_sdk.utilsr
   r   sentry_sdk.enveloper   r   r   sentry_sdk._typesr   r   rm   r"   r    <module>rr      s2    	   ' ? ? 8 : :%S Sr"   