
    tni5                     h   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 j        Ze j        Ze j        de j         de j        de j!        de j"        de j        de j#        de j$        diZ%e j$        de j        de j"        de j        de j         diZ& e'g d          Z(de)ddfdZ* G d de          Z+ G d d e j,                  Z- G d! d"e-          Z.e.Z/ G d# d$e-          Z0 G d% d&e-          Z1dS )'    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.connectionnamereturnc                 :    t                               |            dS )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)r    s    \/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/logging.pyignore_loggerr&   >   s         c                   P    e Zd ZdZeeef	 	 	 	 	 	 	 ddZddZedd            Z	dS )LoggingIntegrationlogginglevelOptional[int]event_levelsentry_logs_levelr!   Nc                     d | _         d | _        d | _        |t          |          | _        |t	          |          | _        |t          |          | _         d S d S )N)r+   )_handler_breadcrumb_handler_sentry_logs_handlerBreadcrumbHandlerSentryLogsHandlerEventHandler)selfr+   r-   r.   s       r%   __init__zLoggingIntegration.__init__N   sr     #' $(!'8u'E'E'ED$((9@Q(R(R(RD%"({;;;DMMM #"r'   recordr   c                 R   | j         /|j        | j         j        k    r| j                             |           | j        /|j        | j        j        k    r| j                            |           | j        1|j        | j        j        k    r| j                            |           d S d S d S N)r0   levelnor+   handler1   r2   r6   r8   s     r%   _handle_recordz!LoggingIntegration._handle_recorda   s    =$4=;N)N)NM  ((( $0$":"@@@$++F333 %1$";"AAA%,,V44444 21AAr'   c                  X    t           j        j        dfd} | t           j        _        d S )Nr6   r   r8   r   r!   c                    t           }	  | |          |^|j                                        |vrDt          j                                        t                    }||                    |           S S S S # |^|j                                        |vrDt          j                                        t                    }||                    |           w w w w xY wr:   )r#   r    strip
sentry_sdk
get_clientget_integrationr)   r>   )r6   r8   ignored_loggersintegrationold_callhandlerss       r%   sentry_patched_callhandlerszBLoggingIntegration.setup_once.<locals>.sentry_patched_callhandlersu   s     /O;''f55 $/))++?BB","7"9"9"I"I*# #K #.#226:::: 0B
 / $/))++?BB","7"9"9"I"I*# #K #.#226:::: 0B
 /s   A8 8A$C)r6   r   r8   r   r!   r   )r*   LoggercallHandlers)rH   rG   s    @r%   
setup_oncezLoggingIntegration.setup_onceq   s?    ">6	; 	; 	; 	; 	; 	;, 'B###r'   )r+   r,   r-   r,   r.   r,   r!   Nr8   r   r!   N)r!   N)
__name__
__module____qualname__
identifierDEFAULT_LEVELDEFAULT_EVENT_LEVELr7   r>   staticmethodrK    r'   r%   r)   r)   K   s        J "/':-:	<< %< +	<
 
< < < <&5 5 5 5  B B B \B B Br'   r)   c                   L    e Zd Z ed          ZdddefdZdddefdZd
dZ	d	S )_BaseHandler)argscreatedexc_infoexc_textfilenamefuncName	levelnamer;   linennolinenomessagemodulemsecsmsgr    pathnameprocessprocessNamerelativeCreatedstacktagstaskNamethread
threadName
stack_infor8   r   r!   c                 n    t           D ],}t          |j                                        |          r dS -dS )z'Prevents ignored loggers from recordingFT)r#   r   r    rA   )r6   r8   loggers      r%   _can_recordz_BaseHandler._can_record   sB    & 	 	Fv{((**F33 uutr'   c                     t                               |j        |j        r|j                                        nd          S )N )LOGGING_TO_EVENT_LEVELgetr;   r]   lowerr=   s     r%   _logging_to_event_levelz$_BaseHandler._logging_to_event_level   s=    %))N8HPF,22444b
 
 	
r'   MutableMapping[str, object]c                 ^      fdt          |                                          D             S )Nc                     i | ];\  }}|j         vt          |t                    r|                    d           8||<S )_)COMMON_RECORD_ATTRS
isinstancestr
startswith).0kvr6   s      r%   
<dictcomp>z3_BaseHandler._extra_from_record.<locals>.<dictcomp>   s]     
 
 
10003'' 1/0||C/@/@ 1 q000r'   )varsitemsr=   s   ` r%   _extra_from_recordz_BaseHandler._extra_from_record   s@    
 
 
 
V**,,
 
 
 	
r'   N)r8   r   r!   rw   )
rM   rN   rO   	frozensetr{   boolrp   r}   rv   r   rT   r'   r%   rV   rV      s        #)	
 <+ $    
k 
c 
 
 
 


 
 
 
 
 
r'   rV   c                   "    e Zd ZdZd	dZd
dZdS )r5   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.
    r8   r   r!   r   c                     t                      5  |                     |           |                     |          cd d d            S # 1 swxY w Y   d S r:   r   format_emitr=   s     r%   emitzEventHandler.emit       (** 	& 	&KK::f%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   *AA
A
Nc                 h   |                      |          sd S t          j                    }|                                sd S |j        }|j        r+|j        d         t          |j        |ddd          \  }}nq|j        r|j        d         |j        rRi }i }t                      5  dt          |d         |d         	          d
ddgi|d<   d d d            n# 1 swxY w Y   ni }i }||d<   | 
                    |          }|dv r||d<   |j        |d<   t          j        dk     r&|j        dk    r|j        dk    r|j        d         }d}n|j        }|j        }t!          |          |                                |d|d<   |                     |          |d<   t          j        ||           d S )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+   ro   )      zpy.warningsz%srT   )r`   	formattedparamslogentryextrahint)rp   rB   rC   	is_activeoptionsrY   r
   rm   r   r   rv   r    sysversion_inforc   rW   r	   
getMessager   capture_event)	r6   r8   clientr   eventr   r+   r`   r   s	            r%   r   zEventHandler._emit   se   '' 	F&((!! 	F ? 	vq1=.-#,>>  KE44
 o 	&/!"4"<AR"<ED,..  *<8F$=9" 2@@R1S	+ + + (-'+	 	$i                 ED#\,,V44NNN"E'N +h w&&},,
d""
 k!nGFFjG[F !))**,,
 
j 0088g T222222s   '(CC"Cr8   r   r!   r   rL   )rM   rN   rO   __doc__r   r   rT   r'   r%   r5   r5      sL         & & & &
I3 I3 I3 I3 I3 I3r'   r5   c                   *    e Zd ZdZddZddZdd
ZdS )r3   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.
    r8   r   r!   r   c                     t                      5  |                     |           |                     |          cd d d            S # 1 swxY w Y   d S r:   r   r=   s     r%   r   zBreadcrumbHandler.emit%  r   r   Nc                     |                      |          sd S t          j        |                     |          d|i           d S )Nr   r   )rp   rB   add_breadcrumb_breadcrumb_from_recordr=   s     r%   r   zBreadcrumbHandler._emit*  sY    '' 	F!((00f7M	
 	
 	
 	
 	
 	
r'   Dict[str, Any]c                     d|                      |          |j        |j        t          j        |j        t          j                  |                     |          dS )Nlog)r   r+   categoryr`   	timestampdata)	rv   r    r`   r   fromtimestamprX   r   utcr   r=   s     r%   r   z)BreadcrumbHandler._breadcrumb_from_record2  sT    11&99~!/MM++F33
 
 	
r'   r   rL   )r8   r   r!   r   )rM   rN   rO   r   r   r   r   rT   r'   r%   r3   r3     sZ         & & & &

 
 
 

 
 
 
 
 
r'   r3   c                   .    e Zd ZdZddZ	 	 	 	 	 	 dd
Zd	S )r4   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.
    r8   r   r!   r   c                    t                      5  |                     |           |                     |          s	 d d d            d S t          j                    }|                                s	 d d d            d S t          |j                  s	 d d d            d S |                     ||           d d d            d S # 1 swxY w Y   d S r:   )	r   r   rp   rB   rC   r   r   r   _capture_log_from_record)r6   r8   r   s      r%   r   zSentryLogsHandler.emitD  sk   (** 	: 	:KK##F++ 	: 	: 	: 	: 	: 	: 	: 	:
  *,,F##%% 	: 	: 	: 	: 	: 	: 	: 	: $FN33 	: 	: 	: 	: 	: 	: 	: 	: ))&&999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s#   ,C(C=CCC	Cr   r   Nc           
      4   t          |j        t                    \  }}|j        d         }|                     |          }d|d<   d}|j        t          |j        t                    rnt          |j                  }t          |j                  D ]D\  }}	t          |	t          t          t          t          f          r|	nt          |	          |d| <   Ent          |j        t                    rrt          |j                  }|j                                        D ]D\  }
}t          |t          t          t          t          f          r|nt          |          |d|
 <   E|r$t          |j        t                    r
|j        |d<   |j        r
|j        |d<   |j        rI|=|j                            |          r#|j        t)          |          dz   d          |d	<   n
|j        |d	<   |j        r
|j        |d
<   |j        r
|j        |d<   |j        r
|j        |d<   |j        r
|j        |d<   |j        r
|j        |d<   |j        r
|j        |d<   t7          j                                        |||j        |t          |j        dz            d d d           d S )Nproject_rootzauto.log.stdlibz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span_id) r   r;   SEVERITY_TO_OTEL_SEVERITYr   r   rW   r|   tupler   	enumerater}   floatintr   dictr   rc   r_   rd   r~   lenr\   rk   rl   re   rf   r    rB   get_current_scope_capture_logr`   rX   )r6   r   r8   otel_severity_numberotel_severity_textr   attrsparameters_setiargkeyvalues               r%   r   z*SentryLogsHandler._capture_log_from_recordS  s    4FN54
 4
00 ~n5..v66!2o;"&+u-- !%fk!2!2'44  FAs &cCT+BCC,&s^^ 9a99:: FK.. !%fk!2!2"(+"3"3"5"5  JC &ec5#t-DEE.&u-- ;c;;<<  	:jS99 	: 06zE+,= 	6(.E$%? 	:'FO,F,F|,T,T'*0/#l:K:Ka:O:Q:Q*R&''*0/&'? 	:*0/E&'= 	/!'E+ 	5#)#4E- > 	2#)>E-  	B/5/AE+,; 	/#);E-  	$&&33!3#7#"%fns&:";";  
	
 
	
 
	
 
	
 
	
r'   r   )r   r   r8   r   r!   N)rM   rN   rO   r   r   r   rT   r'   r%   r4   r4   =  sg         : : : :F
"F
,7F
	F
 F
 F
 F
 F
 F
r'   r4   )2r*   r   r   r   r   rB   sentry_sdk.clientr   sentry_sdk.loggerr   sentry_sdk.utilsr   r	   r
   r   r   r   sentry_sdk.integrationsr   typingr   collections.abcr   r   r   r   r   INFOrQ   ERRORrR   NOTSETDEBUGWARNWARNINGFATALCRITICALrs   r   setr#   r}   r&   r)   HandlerrV   r5   SentryHandlerr3   r4   rT   r'   r%   <module>r      s    



 ' ' ' ' ' ' ' '           ( ( ( ( ( ( 0 0 0 0 0 0                0 / / / / /              ......!!!!!!m NHM7L&L)OYM7M7g	  bM2ORL!M1  3III  



	
 
 
 
@B @B @B @B @B @B @B @BF1
 1
 1
 1
 1
7? 1
 1
 1
hU3 U3 U3 U3 U3< U3 U3 U3r 
 
 
 
 
 
 
 
>\
 \
 \
 \
 \
 \
 \
 \
 \
 \
r'   