
    lhQ6                        d dl Z d dlZd dlmZmZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ d dl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 e j6                  Ze j:                  Ze j>                  de j@                  de j6                  de jB                  de jD                  de j:                  de jF                  de jH                  diZ%e jH                  de j:                  de jD                  de j6                  de j@                  diZ& e'g d      Z(d Z) G d de      Z* G d de jV                        Z, G d d e,      Z-e-Z. G d! d"e,      Z/ G d# d$e,      Z0y)%    N)datetimetimezone)fnmatch)
BaseClient)_log_level_to_otel)	safe_repr	to_stringevent_from_exceptioncurrent_stacktracecapture_internal_exceptionshas_logs_enabled)Integration)TYPE_CHECKING)MutableMapping)	LogRecord)Any)Dict)Optionalnotsetdebuginfowarningerrorfatal         	      )zsentry_sdk.errorszurllib3.connectionpoolzurllib3.connectionc                 .    t         j                  |        y)a|  This disables recording (both in breadcrumbs and as events) calls to
    a logger of a specific name.  Among other uses, many of our integrations
    use this to prevent their actions being recorded as breadcrumbs. Exposed
    to users as a way to quiet spammy loggers.

    :param name: The name of the logger to ignore (same string you would pass to ``logging.getLogger``).
    N)_IGNORED_LOGGERSadd)names    q/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/logging.pyignore_loggerr%   >   s         c                   4    e Zd ZdZeeefdZd Zed        Z	y)LoggingIntegrationloggingc                     d | _         d | _        d | _        |t        |      | _        |t	        |      | _        |t        |      | _         y y )N)level)_handler_breadcrumb_handler_sentry_logs_handlerBreadcrumbHandlerSentryLogsHandlerEventHandler)selfr+   event_levelsentry_logs_levels       r$   __init__zLoggingIntegration.__init__O   sY     #' $(!'8u'ED$((9@Q(RD%"({;DM #r&   c                    | j                   >|j                  | j                   j                  k\  r| j                   j                  |       | j                  >|j                  | j                  j                  k\  r| j                  j                  |       | j
                  @|j                  | j
                  j                  k\  r| j
                  j                  |       y y y N)r,   levelnor+   handler-   r.   r2   records     r$   _handle_recordz!LoggingIntegration._handle_recordc   s    ==$4==;N;N)NMM  ( $$0$":":"@"@@$$++F3 %%1$";";"A"AA%%,,V4 B 2r&   c                  n    t         j                  j                  fd} | t         j                  _        y )Nc                    t         }	  | |      |Y|j                  j                         |vr<t        j                         j                  t              }||j                  |       S S S S # |Y|j                  j                         |vr<t        j                         j                  t              }||j                  |       w w w w xY wr7   )r!   r#   strip
sentry_sdk
get_clientget_integrationr(   r<   )r2   r;   ignored_loggersintegrationold_callhandlerss       r$   sentry_patched_callhandlerszBLoggingIntegration.setup_once.<locals>.sentry_patched_callhandlersy   s     /O;'f5 $/))+?B","7"7"9"I"I*#K #.#226: / C 0O/))+?B","7"7"9"I"I*#K #.#226: / C 0s   A- -AC
)r)   LoggercallHandlers)rF   rE   s    @r$   
setup_oncezLoggingIntegration.setup_oncet   s)     #>>66	;. 'B#r&   N)
__name__
__module____qualname__
identifierDEFAULT_LEVELDEFAULT_EVENT_LEVELr5   r<   staticmethodrI    r&   r$   r(   r(   L   s2    J ''	<(5" B Br&   r(   c                   .    e Zd Z ed      Zd Zd Zd Zy)_BaseHandler)argscreatedexc_infoexc_textfilenamefuncName	levelnamer8   linennolinenomessagemodulemsecsmsgr#   pathnameprocessprocessNamerelativeCreatedstacktagstaskNamethread
threadName
stack_infoc                 f    t         D ](  }t        |j                  j                         |      s( y y)z'Prevents ignored loggers from recordingFT)r!   r   r#   r?   )r2   r;   loggers      r$   _can_recordz_BaseHandler._can_record   s2     ' 	Fv{{((*F3	 r&   c                     t         j                  |j                  |j                  r|j                  j	                               S d      S )N )LOGGING_TO_EVENT_LEVELgetr8   rZ   lowerr:   s     r$   _logging_to_event_levelz$_BaseHandler._logging_to_event_level   sB    %))NN8H8HF,,224
 	
NP
 	
r&   c                     t        |      j                         D ci c]7  \  }}|| j                  vr$t        |t              r|j                  d      s||9 c}}S c c}}w )N_)varsitemsCOMMON_RECORD_ATTRS
isinstancestr
startswith)r2   r;   kvs       r$   _extra_from_recordz_BaseHandler._extra_from_record   s\     V**,
10003'q||C/@ qD
 	
 
s   <AN)rJ   rK   rL   	frozensetrx   rm   rs   r~   rQ   r&   r$   rS   rS      s!    #	
<

r&   rS   c                       e Zd ZdZd Zd Zy)r1   z
    A logging handler that emits Sentry events for each log record

    Note that you do not have to use this class if the logging integration is enabled, which it is by default.
    c                     t               5  | j                  |       | j                  |      cd d d        S # 1 sw Y   y xY wr7   r   format_emitr:   s     r$   emitzEventHandler.emit   5    (* 	&KK::f%	& 	& 	&	   "7A c                 ~   | j                  |      sy t        j                         }|j                         sy |j                  }|j
                  r.|j
                  d   t        |j
                  |ddd      \  }}n`|j
                  r|j
                  d   |j                  r5i }i }t               5  dt        |d   |d   	      d
ddgi|d<   d d d        ni }i }||d<   | j                  |      }|dv r||d<   |j                  |d<   t        j                  dk  r0|j                  dk(  r!|j                  dk(  r|j                  d   }d}n|j                  }|j                  }t!        |      |j#                         |d|d<   | j%                  |      |d<   t        j&                  ||       y # 1 sw Y   xY w)Nr   r)   T)typehandled)client_options	mechanismvaluesinclude_local_variablesmax_value_length)r   r   F)
stacktracecrashedcurrentthreads
log_record>   r   r   r   r   r   criticalr+   rl   )      zpy.warningsz%srQ   )r]   	formattedparamslogentryextrahint)rm   r@   rA   	is_activeoptionsrV   r
   rj   r   r   rs   r#   sysversion_infor`   rT   r	   
getMessager~   capture_event)	r2   r;   clientr   eventr   r+   r]   r   s	            r$   r   zEventHandler._emit   s   '&&(! ??vq1=.-#,>KE4
 oo&//!"4"<ARARED,. *<8F$=9" 2@@R1S	+ (-'+	$i    ED#\,,V4NN"E'N ++h w&},

d"
 kk!nGFjjG[[F !)**,
j 008g  T2a s   3F33F<N)rJ   rK   rL   __doc__r   r   rQ   r&   r$   r1   r1      s    &J3r&   r1   c                   "    e Zd ZdZd Zd Zd Zy)r/   z
    A logging handler that records breadcrumbs for each log record.

    Note that you do not have to use this class if the logging integration is enabled, which it is by default.
    c                     t               5  | j                  |       | j                  |      cd d d        S # 1 sw Y   y xY wr7   r   r:   s     r$   r   zBreadcrumbHandler.emit/  r   r   c                 x    | j                  |      sy t        j                  | j                  |      d|i       y )Nr   r   )rm   r@   add_breadcrumb_breadcrumb_from_recordr:   s     r$   r   zBreadcrumbHandler._emit5  s6    '!!((0f7M	
r&   c                     d| j                  |      |j                  |j                  t        j                  |j
                  t        j                        | j                  |      dS )Nlog)r   r+   categoryr]   	timestampdata)	rs   r#   r]   r   fromtimestamprU   r   utcr~   r:   s     r$   r   z)BreadcrumbHandler._breadcrumb_from_record>  sS     11&9~~!//M++F3
 	
r&   N)rJ   rK   rL   r   r   r   r   rQ   r&   r$   r/   r/   (  s    &
	
r&   r/   c                       e Zd ZdZd Zd Zy)r0   z
    A logging handler that records Sentry logs for each Python log record.

    Note that you do not have to use this class if the logging integration is enabled, which it is by default.
    c                 X   t               5  | j                  |       | j                  |      s
	 d d d        y t        j                         }|j                         s
	 d d d        y t        |j                        s
	 d d d        y | j                  ||       d d d        y # 1 sw Y   y xY wr7   )	r   r   rm   r@   rA   r   r   r   _capture_log_from_record)r2   r;   r   s      r$   r   zSentryLogsHandler.emitQ  s    (* 	:KK##F+	: 	:
  **,F##%	: 	: $FNN3	: 	: ))&&9	: 	: 	:s   $B %B &B B  B)c           
         t        |j                  t              \  }}|j                  d   }| j	                  |      }d|d<   d}|j
                  t        |j
                  t              rft        |j
                        }t        |j
                        D ]8  \  }}	t        |	t        t        t        t        f      r|	n
t        |	      |d| <   : nt        |j
                  t              rjt        |j
                        }|j
                  j                         D ]8  \  }
}t        |t        t        t        t        f      r|n
t        |      |d|
 <   : |r)t        |j                   t              r|j                   |d<   |j"                  r|j"                  |d<   |j$                  rK|:|j$                  j'                  |      r|j$                  t)        |      dz   d  |d	<   n|j$                  |d	<   |j*                  r|j*                  |d
<   |j,                  r|j,                  |d<   |j.                  r|j.                  |d<   |j0                  r|j0                  |d<   |j2                  r|j2                  |d<   |j4                  r|j4                  |d<   |j7                  |||j8                  |t        |j:                  dz        d d       y )Nproject_rootzauto.logger.logzsentry.originFzsentry.message.parameter.zsentry.message.templatezcode.line.number   zcode.file.pathzcode.function.namez	thread.idzthread.namezprocess.pidzprocess.executable.namezlogger.nameg    eA)severity_textseverity_numberbody
attributestime_unix_nanotrace_id)r   r8   SEVERITY_TO_OTEL_SEVERITYr   r~   rT   ry   tuplebool	enumeraterz   floatintr   dictrw   r`   r\   ra   r{   lenrY   rh   ri   rb   rc   r#   _capture_experimental_logr]   rU   )r2   r   r;   otel_severity_numberotel_severity_textr   attrsparameters_setiargkeyvalues               r$   r   z*SentryLogsHandler._capture_log_from_recorda  s{   3ENN54
00 ~~n5''/!2o;;"&++u-!%fkk!2'4 FAs &cCT+BC &s^ 5aS9: FKK.!%fkk!2"(++"3"3"5 JC &ec5#t-DE &u- 5cU;< jS9 06zzE+,==(.E$%??'FOO,F,F|,T*0//#l:Ka:O:Q*R&'*0//&'??*0//E&'==!'E+#)#4#4E- >>#)>>E- /5/A/AE+,;;#);;E-  	((!3#7#"%fnns&:"; 		
r&   N)rJ   rK   rL   r   r   r   rQ   r&   r$   r0   r0   J  s    : D
r&   r0   )1r)   r   r   r   r   r@   sentry_sdk.clientr   sentry_sdk.loggerr   sentry_sdk.utilsr   r	   r
   r   r   r   sentry_sdk.integrationsr   typingr   collections.abcr   r   r   r   r   INFOrN   ERRORrO   NOTSETDEBUGWARNWARNINGFATALCRITICALrp   r   setr!   r%   r(   HandlerrS   r1   SentryHandlerr/   r0   rQ   r&   r$   <module>r      sD    
 '   ( 0  0  .!mm NNHMM7LL&LL)OOYMM7MM7g	  bMM2OORLL!MM1  I 
DB DBN4
7?? 4
nW3< W3v 
 
D[
 [
r&   