o
    ٰii                     @   s~  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 zd dlZd d	lmZ d d
lmZ erWd dlmZ W n eyc   edw G dd de jZejjZej jZ!ddddddddZ"ej#dej dej$dej%dejdej&dej'diZ(G dd deZ)G dd deZ*G d d! d!e*eZ+G d"d# d#e*eZ,d)d'd(Z-dS )*    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                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	LoggingLevels   
            (   2   N)
__name__
__module____qualname__TRACEDEBUGINFOSUCCESSWARNINGERRORCRITICAL r#   r#   R/home/ubuntu/.local/lib/python3.10/site-packages/sentry_sdk/integrations/loguru.pyr      s    r   r   r   r    r!   r"   )r   r   r   r   r    r!   r"               	   r      c                   @   sx   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dZedddZd
S )LoguruIntegrationloguruOptional[int]levelevent_levelsentry_logs_levelbreadcrumb_formatstr | loguru.FormatFunctionevent_formatreturnNc                 C   s"   |t _|t _|t _|t _|t _d S )N)r+   r.   r/   r1   r3   r0   )selfr.   r/   r1   r3   r0   r#   r#   r$   __init__K   s
   
zLoguruIntegration.__init__c                   C   sn   t jd urtjtt jdt jt jd t jd ur&tjtt jdt jt jd t j	d ur5tjt
t j	d d S d S )N)r.   )r.   format)r+   r.   r   addLoguruBreadcrumbHandlerr1   r/   LoguruEventHandlerr3   r0   loguru_sentry_logs_handlerr#   r#   r#   r$   
setup_onceY   s$   





zLoguruIntegration.setup_once)r.   r-   r/   r-   r1   r2   r3   r2   r0   r-   r4   N)r4   N)r   r   r   
identifierDEFAULT_LEVELr.   __annotations__DEFAULT_EVENT_LEVELr/   DEFAULT_FORMATr1   r3   r0   r6   staticmethodr<   r#   r#   r#   r$   r+   B   s6   
 
r+   c                       s0   e Zd Zd fddZdd	defd
dZ  ZS )_LoguruBaseHandlerargsr   kwargsr4   Nc                    s8   | drt | ddt|d< t j|i | d S )Nr.    )getSENTRY_LEVEL_FROM_LOGURU_LEVELr>   superr6   )r5   rD   rE   	__class__r#   r$   r6   q   s
   
z_LoguruBaseHandler.__init__recordr   c              	   C   sF   zt t|jj  W S  ttfy"   |jr|j  Y S d Y S w )NrF   )rH   r   levelnonamelower
ValueErrorKeyError	levelname)r5   rL   r#   r#   r$   _logging_to_event_levely   s   
z*_LoguruBaseHandler._logging_to_event_level)rD   r   rE   r   r4   N)r   r   r   r6   strrS   __classcell__r#   r#   rJ   r$   rC   p   s    rC   c                   @      e Zd ZdZdS )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:          r:   c                   @   rV   )r9   zkModified version of :class:`sentry_sdk.integrations.logging.BreadcrumbHandler` to use loguru's level names.NrW   r#   r#   r#   r$   r9      rY   r9   messager   r4   c           
   
   C   s  t  }| s
d S t|jsd S | j}tjd u s!|d jtjk r#d S t	|d jt
\}}ddi}|jd }|dr^|d urW|d j|rW|d jt|d d  |d< n|d j|d< |dd urk|d |d	< |d
rv|d
 |d< |dr|d j|d< |d j|d< |dr|d j|d< |d j|d< |dr|d |d< |d}t|tr| D ]\}}	t|	ttttfr|	|d| < qt|	|d| < qt  |||d |t|d  d d d d d S )Nr.   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.namerN   zlogger.nameextrazsentry.message.parameter.rZ   timeg    eA)severity_textseverity_numberbody
attributestime_unix_nanotrace_idspan_id)
sentry_sdk
get_client	is_activer   optionsrL   r+   r0   nor   SEVERITY_TO_OTEL_SEVERITYrG   path
startswithlenrN   id
isinstancedictitemsrT   intfloatboolr	   get_current_scope_capture_log	timestamp)
rZ   clientrL   otel_severity_numberotel_severity_textattrsr[   ra   keyvaluer#   r#   r$   r;      s\   




 





r;   )rZ   r   r4   N).enumrj   sentry_sdk.integrationsr   r   sentry_sdk.integrations.loggingr   r   r   sentry_sdk.loggerr   sentry_sdk.utilsr   r	   typingr
   loggingr   r   r   r,   r   loguru._defaultsr   rA   r   ImportErrorIntEnumr   r   r   r>   r!   r@   rH   r"   r    r   r   r   ro   r+   rC   r:   r9   r;   r#   r#   r#   r$   <module>   sX    
.