
    \ji                     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 d dl	m
Z
 d dlmZmZ d dlmZ erd dlmZ d dlmZmZ 	 d dlZd d	lmZ d d
lmZ erd dlmZ  G d de j6                        Zej:                  j<                  Zej@                  j<                  Z!ddddddddZ"ejF                  dej@                  dejH                  dejJ                  dej:                  dejL                  dejN                  diZ( G d de      Z) G d de      Z* G d  d!e*e      Z+ G d" d#e*e      Z,d%d$Z-y# e$ r	  ed      w xY w)&    N)IntegrationDidNotEnable)BreadcrumbHandlerEventHandler_BaseHandler)_log_level_to_otel)has_logs_enabled	safe_repr)TYPE_CHECKING)	LogRecord)AnyOptional)logger)LOGURU_FORMAT)MessagezLOGURU is not installedc                   (    e Zd ZdZdZdZdZdZdZdZ	y)	LoggingLevels   
            (   2   N)
__name__
__module____qualname__TRACEDEBUGINFOSUCCESSWARNINGERRORCRITICAL     H/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/loguru.pyr   r      s%    EEDGGEHr&   r   r   r    r"   r#   r$   )r   r   r    r!   r"   r#   r$               	   r      c                       e Zd ZU dZeZded<   eZded<   e	Z
e	ZeZded<   eee	e	ef	 	 	 	 	 	 	 	 	 	 	 d	dZed
d       Zy)LoguruIntegrationloguruOptional[int]levelevent_levelsentry_logs_levelNc                 r    |t         _        |t         _        |t         _        |t         _        |t         _        y )N)r/   r2   r3   breadcrumb_formatevent_formatr4   )selfr2   r3   r6   r7   r4   s         r'   __init__zLoguruIntegration.__init__K   s1     #((3%.?+)5&.?+r&   c                     t         j                  Lt        j                  t	        t         j                        t         j                  t         j
                         t         j                  Lt        j                  t        t         j                        t         j                  t         j                         t         j                  *t        j                  t        t         j                         y y )N)r2   )r2   format)r/   r2   r   addLoguruBreadcrumbHandlerr6   r3   LoguruEventHandlerr7   r4   loguru_sentry_logs_handlerr%   r&   r'   
setup_oncezLoguruIntegration.setup_onceY   s    "".JJ'.?.E.EF'--(:: ((4JJ"):)F)FG'33(55 ..:JJ*'99 ;r&   )r2   r1   r3   r1   r6   str | loguru.FormatFunctionr7   rA   r4   r1   returnN)rB   N)r   r   r   
identifierDEFAULT_LEVELr2   __annotations__DEFAULT_EVENT_LEVELr3   DEFAULT_FORMATr6   r7   r4   r9   staticmethodr@   r%   r&   r'   r/   r/   B   s    J*E?*#6K6&!L)66 "/':;I6D-:@@ %@ 9	@
 4@ +@ 
@  r&   r/   c                   0     e Zd Zd fdZdddefdZ xZS )_LoguruBaseHandlerrB   c                     |j                  d      r-t        j                  |j                  dd      t              |d<   t        |   |i | y )Nr2    )getSENTRY_LEVEL_FROM_LOGURU_LEVELrD   superr9   )r8   argskwargs	__class__s      r'   r9   z_LoguruBaseHandler.__init__q   sG    ::g<@@

7B'F7O 	$)&)r&   recordr   c                     	 t         t        |j                        j                     j	                         S # t
        t        f$ r- |j                  r|j                  j	                         cY S dcY S w xY w)NrL   )rN   r   levelnonamelower
ValueErrorKeyError	levelname)r8   rS   s     r'   _logging_to_event_levelz*_LoguruBaseHandler._logging_to_event_levely   sh    	H1fnn-22eg H% 	H/5/?/?6##))+GRG	Hs   36 5A2-A21A2)rP   r   rQ   r   rB   N)r   r   r   r9   strr[   __classcell__)rR   s   @r'   rJ   rJ   p   s    *Hk Hc Hr&   rJ   c                       e Zd ZdZy)r>   zfModified version of :class:`sentry_sdk.integrations.logging.EventHandler` to use loguru's level names.Nr   r   r   __doc__r%   r&   r'   r>   r>      s    pr&   r>   c                       e Zd ZdZy)r=   zkModified version of :class:`sentry_sdk.integrations.logging.BreadcrumbHandler` to use loguru's level names.Nr_   r%   r&   r'   r=   r=      s    ur&   r=   c           
      
   t        j                         }|j                         sy t        |j                        sy | j
                  }t        j                   |d   j                  t        j                  k  ry t        |d   j                  t              \  }}ddi}|j                  d   }|j                  d      rT|@|d   j                  j                  |      r"|d   j                  t        |      dz   d  |d<   n|d   j                  |d<   |j                  d      |d   |d	<   |j                  d
      r|d
   |d<   |j                  d      r$|d   j                  |d<   |d   j                   |d<   |j                  d      r$|d   j                   |d<   |d   j                  |d<   |j                  d      r|d   |d<   |j                  d      }t#        |t$              rR|j'                         D ]?  \  }}	t#        |	t(        t*        t,        t.        f      r	|	|d| <   /t1        |	      |d| <   A t        j2                         j5                  |||d   |t+        |d   j7                         dz        d d d       y )Nr2   zsentry.originzauto.log.loguruproject_rootfiler-   zcode.file.pathlinezcode.line.numberfunctionzcode.function.namethreadzthread.namez	thread.idprocesszprocess.pidzprocess.executable.namerV   zlogger.nameextrazsentry.message.parameter.messagetimeg    eA)severity_textseverity_numberbody
attributestime_unix_nanotrace_idspan_id)
sentry_sdk
get_client	is_activer	   optionsrS   r/   r4   nor   SEVERITY_TO_OTEL_SEVERITYrM   path
startswithlenrV   id
isinstancedictitemsr\   intfloatboolr
   get_current_scope_capture_log	timestamp)
rj   clientrS   otel_severity_numberotel_severity_textattrsrc   ri   keyvalues
             r'   r?   r?      s    ""$FFNN+^^F 	++3'? 1 C CC/Aw50,,  /0ABE>>.1Lzz&#v(;(;(F(F|(T&,Vn&9&9#l:Ka:O:Q&RE"#&,Vn&9&9E"#zz&%$*6N !zz*&,Z&8"#zz(%h/44m#H-00kzz)%i033m+1)+<+A+A'(zz&%f~mJJwE%++- 	LJC%#sE4!89;@1#78;DU;K1#78		L   "///39%!&.":":"<s"BC	

r&   )rj   r   rB   N).enumrs   sentry_sdk.integrationsr   r   sentry_sdk.integrations.loggingr   r   r   sentry_sdk.loggerr   sentry_sdk.utilsr	   r
   typingr   loggingr   r   r   r0   r   loguru._defaultsr   rG   r   ImportErrorIntEnumr   r    r   rD   r#   rF   rN   r$   r"   r!   r   r   rx   r/   rJ   r>   r=   r?   r%   r&   r'   <module>r      sI     = 
 1 8  !$2@"
DLL  ""((#))//  "  B22 + +\H H$	+\ 		02C 	Ci  2
0
112s    D, ,D: