
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    „á§\G  ã                   @   s¢   d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ G d	d
„ d
eƒZdd„ Zdd„ Zddd„Zdd„ Zdd„ ZdS )é    )Úabsolute_importN)ÚSoftTimeLimitExceededÚRetry)ÚHub)Úcapture_internal_exceptionsÚevent_from_exception)Úreraise)ÚIntegration)Úignore_loggerc                   @   s   e Zd ZdZedd„ ƒZdS )ÚCeleryIntegrationÚceleryc                     s<   dd l m  m}  | j‰ ‡ fdd„}|| _tƒ  tdƒ d S )Nr   c                    s4   t ||jƒ|_t ||jƒ|_t|ˆ | |f|ž|ŽƒS ©N)Ú_wrap_task_callÚ__call__ÚrunÚ_wrap_tracer)ÚnameÚtaskÚargsÚkwargs©Zold_build_tracer© úO/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/celery.pyÚsentry_build_tracer   s    z9CeleryIntegration.setup_once.<locals>.sentry_build_tracerzcelery.worker.job)Zcelery.app.traceZappÚtraceZbuild_tracerÚ_patch_worker_exitr
   )r   r   r   r   r   Ú
setup_once   s    zCeleryIntegration.setup_onceN)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr   r   r   r   r   r      s   r   c                    s   ‡ ‡fdd„}|S )Nc               
      sl   t j}| t¡d krˆ | |ŽS | ¡ �<}d|_| ¡  | tˆf| ž|Ž¡ ˆ | |ŽW  5 Q R £ S Q R X d S )Nr   )	r   ÚcurrentÚget_integrationr   Z
push_scopeÚ_nameZclear_breadcrumbsZadd_event_processorÚ_make_event_processor)r   r   ÚhubZscope©Úfr   r   r   Ú_inner/   s    

z_wrap_tracer.<locals>._innerr   ©r   r(   r)   r   r'   r   r   (   s    r   c                    s   ‡ ‡fdd„}|S )Nc                     sR   zˆ | |ŽW S  t k
rL   t ¡ }tƒ � tˆ|ƒ W 5 Q R X t|Ž  Y nX d S r   )Ú	ExceptionÚsysÚexc_infor   Ú_capture_exceptionr   )r   r   r-   r'   r   r   r)   A   s    z_wrap_task_call.<locals>._innerr   r*   r   r'   r   r   >   s    	r   c                    s   ‡ ‡‡fdd„}|S )Nc              	      s’   t ƒ � ˆj| d< W 5 Q R X t ƒ �$ |  di ¡}ˆjˆ ˆdœ|d< W 5 Q R X d|krŽt ƒ �. t|d d tƒr„ddtˆd	ˆƒg| d
< W 5 Q R X | S )NZtransactionÚextra)Z	task_namer   r   z
celery-jobr-   r   r   r   r   Zfingerprint)r   r   Ú
setdefaultÚ
issubclassr   Úgetattr)ÚeventÚhintr/   ©r   r   r   r   r   Úevent_processorN   s     ý
ýz._make_event_processor.<locals>.event_processorr   )r   Úuuidr   r   Úrequestr6   r   r5   r   r%   M   s    r%   c                 C   sv   t j}| t¡d krd S t|d tƒr*d S t| dƒrHt|d | jƒrHd S t||j	j
dddœd�\}}|j||d� d S )Né   Úthrowsr   F)ÚtypeZhandled)Zclient_optionsZ	mechanism)r4   )r   r"   r#   r   Ú
isinstancer   Úhasattrr:   r   ZclientÚoptionsZcapture_event)r   r-   r&   r3   r4   r   r   r   r.   h   s    ý
r.   c                     s(   ddl m}  | j‰ ‡ fdd„}|| _d S )Nr   )ÚWorkerc                     sD   zˆ | |ŽW ¢S t ƒ �" tj}| t¡d k	r4| ¡  W 5 Q R X X d S r   )r   r   r"   r#   r   Úflush)r   r   r&   ©Zold_workloopr   r   Úsentry_workloop‚   s    z+_patch_worker_exit.<locals>.sentry_workloop)Zbilliard.poolr?   Zworkloop)r?   rB   r   rA   r   r   {   s    	r   )N)Ú
__future__r   r,   Zcelery.exceptionsr   r   Zsentry_sdk.hubr   Zsentry_sdk.utilsr   r   Zsentry_sdk._compatr   Zsentry_sdk.integrationsr	   Zsentry_sdk.integrations.loggingr
   r   r   r   r%   r.   r   r   r   r   r   Ú<module>   s   
