
    `i
H                        d dl Z d dl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 d dlmZmZmZ d dlmZmZmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ d dlmZm Z m!Z!m"Z" d dl#m$Z$ e$rKd dl#m%Z% 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* d dl+m,Z,m-Z-m.Z.m/Z/ d dlm0Z0  e)de&de%f                   Z1	 d dl2m3Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? n# e@$ r  ed          w xY we<e:e;fZA G d  d!e          ZBd"eCd#dfd$ZDdDd)ZE	 dE	 	 	 	 	 	 	 	 	 	 	 dFd0ZFd1d2d3d4d5eGd#d2fd6ZH G d7 d8          ZIdGd:ZJdHd;ZKdId=ZLdHd>ZMdJd?ZNdJd@ZOdJdAZPdJdBZQdJdCZRdS )K    N)Mappingwraps)isolation_scope)continue_trace)OP
SPANSTATUSSPANDATA)_check_minimum_versionIntegrationDidNotEnable)_patch_beat_apply_entry_patch_redbeat_apply_async_setup_celery_beat_signals)_now_seconds_since_epoch)ignore_logger)BAGGAGE_HEADER_NAMETransactionSource)Baggage)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionreraise)TYPE_CHECKING)Any)Callable)List)Optional)TypeVar)Union)EventProcessorEventHintExcInfo)SpanF.)bound)VERSION)Task)task_has_custom)IgnoreRejectRetrySoftTimeLimitExceeded)ProducerzCelery not installedc            	       T    e Zd ZdZde Z	 	 	 ddededd	d
dfdZedd            ZdS )CeleryIntegrationceleryzauto.queue.TFNpropagate_tracesmonitor_beat_tasksexclude_beat_taskszOptional[List[str]]returnc                     || _         || _        || _        t                       t	                       t          |           d S N)r3   r4   r5   r   r   r   )selfr3   r4   r5   s       {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sentry_sdk/integrations/celery/__init__.py__init__zCeleryIntegration.__init__@   sI     !1"4"4!!!"$$$"#566666    c                      t          t          t                     t                       t	                       t                       t                       t                       t          d           t          d           t          d           d S )Nzcelery.worker.jobzcelery.app.tracezcelery.redirected)	r   r1   CELERY_VERSION_patch_build_tracer_patch_task_apply_async_patch_celery_send_task_patch_worker_exit_patch_producer_publishr    r<   r:   
setup_oncezCeleryIntegration.setup_onceN   s    0.AAA!!!!!!!!!
 	)***())) 	)*****r<   )TFNr6   N)	__name__
__module____qualname__
identifieroriginboolr;   staticmethodrE   rD   r<   r:   r1   r1   <   s        J':''F "&#(48	7 77 !7 2	7
 
7 7 7 7 + + + \+ + +r<   r1   statusr6   c                     t                      5  t          j                    }|j        |j                            |            d d d            d S # 1 swxY w Y   d S r8   )r   
sentry_sdkget_current_scopespan
set_status)rN   scopes     r:   _set_statusrU   c   s    	$	&	& * *,..:!J!!&)))* * * * * * * * * * * * * * * * * *s   5AAAtaskr   exc_infor$   c                    t          j                    }|                    t                    d S t	          |d         t
                    rt          d           d S t          d           t          | d          rt	          |d         | j                  rd S t          ||j
        ddd          \  }}t          j        ||	           d S )
N   abortedinternal_errorthrowsr2   F)typehandled)client_options	mechanism)hint)rP   
get_clientget_integrationr1   
isinstanceCELERY_CONTROL_FLOW_EXCEPTIONSrU   hasattrr\   r   optionscapture_event)rV   rW   clienteventra   s        r:   _capture_exceptionrk   j   s    "$$F/008(1+=>> I !!!tX :hqk4;#G#G &~#66  KE4 U......r<   uuidargskwargsrequestOptional[Any]r!   c                       d fd}|S )	Nrj   r"   ra   r#   r6   Optional[Event]c                    t                      5  |                     di           }|d<   |                     di           }j        d|d<   d d d            n# 1 swxY w Y   d|v r^t                      5  t          |d         d         t                    rdd	t          d
          g| d<   d d d            n# 1 swxY w Y   | S )Ntagscelery_task_idextra)	task_namerm   rn   z
celery-jobrW   r   r2   r.   namefingerprint)r   
setdefaultrx   
issubclassr.   getattr)rj   ra   rt   rv   rm   rn   rV   rl   s       r:   event_processorz._make_event_processor.<locals>.event_processor   sh   (** 	 	##FB//D%)D!"$$Wb11E!Y # #E,		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ,..  d:.q13HII  /fd33,E-(               s$   A AA #A 99B>>CC)rj   r"   ra   r#   r6   rr   rD   )rV   rl   rm   rn   ro   r}   s   ````  r:   _make_event_processorr~      s;            , r<   original_headerszdict[str, Any]rR   zOptional[Span]r4   c                 <   |                                  }t                      5  t          t          j                                        |                    }|r&|                    ddt                      z  i           |                    dt                      i           |r_|                    t                    }|                    t                    }|p|}|r|rt          j        |          }t          j        |          }	|	j                            |j                   d                    d |	j        |j        fD                       |	_        |	                    d          }|                    |           |r
||t          <   |                    d	i                               |           |r||d	         t          <   |                                D ]%\  }
}|
                    d
          r||d	         |
<   &ddd           n# 1 swxY w Y   |S )z
    Updates the headers of the Celery task with the tracing information
    and eventually Sentry Crons monitoring information for beat tasks.
    )rR   z sentry-monitor-start-timestamp-sz%.9fsentry-task-enqueued-time,c                 "    g | ]}||dk    
|S )N rD   ).0xs     r:   
<listcomp>z/_update_celery_task_headers.<locals>.<listcomp>   s1        =Q"WW 
 .5WWr<   T)include_third_partyheaderszsentry-N)copyr   dictrP   get_isolation_scopeiter_trace_propagation_headersupdater   getr   r   from_incoming_headersentry_itemsjointhird_party_items	serializerz   items
startswith)r   rR   r4   updated_headersr   existing_baggagesentry_baggagecombined_baggageincomingcombinedkeyvalues               r:   _update_celery_task_headersr      s    '++--O	$	&	& >< >< *,,KKQUKVV
 
  	NN6.0091   	(*B*D*DE	
 	
 	
  )	<.223FGG$[[)<==N-A1A P"2 P #78HII"7GG%,,X-BCCC-0XX  %6$6"  	. 	.* $,#5#5$#5#O#O ""7+++ H7G 34 &&y"55<<WEEE SBR	*+>? .3355 < <
U>>),, <6;OI.s3}>< >< >< >< >< >< >< >< >< >< >< >< >< >< ><@ s   G"HHHc                       e Zd Zd	dZd
dZdS )NoOpMgrr6   Nc                     d S r8   rD   )r9   s    r:   	__enter__zNoOpMgr.__enter__       tr<   exc_typer   	exc_value	tracebackc                     d S r8   rD   )r9   r   r   r   s       r:   __exit__zNoOpMgr.__exit__   r   r<   rF   )r   r   r   r   r   r   r6   N)rG   rH   rI   r   r   rD   r<   r:   r   r      s<                r<   r   fc                 >     t                     d fd            }|S )Nrm   r   rn   r6   c                     t          j                                        t                    }| 	| i |S |                    d          pi }|                    d|j                  }|s 	| i |S t          | d         t                    r| d         j	        }n9t          |           dk    r$t          | d         t                    r	| d         }nd}t          j                    j        dk    }|s+t          j        t          j        |t          j                  nt%                      }|5 }t'          |||j                  |d<    	| i |cd d d            S # 1 swxY w Y   d S )Nr   zsentry-propagate-tracesr   rY   z<unknown Celery task>zcelery-beatoprx   rK   )rP   rb   rc   r1   r   popr3   rd   r)   rx   lenstrr   _name
start_spanr   QUEUE_SUBMIT_CELERYrK   r   r   r4   )
rm   rn   integrationkwarg_headersr3   rw   task_started_from_beatspan_mgrrR   r   s
            r:   apply_asyncz#_wrap_task_run.<locals>.apply_async   s    !+--==>OPP1d%f%%%

9--3(,,%{'C
 
   	&1d%f%%%d1gt$$ 	0!!W\IIYY]]z$q'377]QII/I!+!?!A!A!G=!X *J!)(/     	  	& ;t[%C! !F9 1d%f%%		& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   .!EE #E rm   r   rn   r   r6   r   r   )r   r   s   ` r:   _wrap_task_runr      s:    
1XX&& && && && && X&&P r<   c                 x     t                    t          t                    d fd                        }|S )Nrm   r   rn   r6   c            
         t                      5 }d|_        |                                 |                    t	          g| R i |           d }t                      5  | d                             d          pi }t          |t          j	        dt          j        t          j                  }j        |_        |                    t           j                   d d d            n# 1 swxY w Y   | | i |cd d d            S t%          j        |dj        t)          | d                   | d         d	i
          5   | i |cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nr2      r   zunknown celery task)r   rx   sourcerK   
celery_jobrY      )rV   rm   rn   )custom_sampling_context)r   r   clear_breadcrumbsadd_event_processorr~   r   r   r   r   QUEUE_TASK_CELERYr   TASKr1   rK   rx   rS   r	   OKrP   start_transactionlist)rm   rn   rT   transactionr   r   rV   s        r:   _innerz_wrap_tracer.<locals>._inner)  s     $	*%"EK##%%%%%&;D&R4&R&R&R6&R&RSSSK -.. 
6 
6q'++i006B,+.,1,3   $(9 &&z}555
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 
6 "q$)&))-$	* $	* $	* $	* $	* $	* $	* $	*0 -  $	 !%T!W"&q'# #)   * * q$)&))* * * * * * *1$	* $	* $	* $	* $	* $	* $	* $	*0* * * * * * * * *1$	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	* $	*sa   AE;A;C&E;&C*	*E;-C*	.E;:E;E"	E;"E&	&E;)E&	*E;;E?E?r   )r   r   r1   rV   r   r   s   `` r:   _wrap_tracerr   "  sW     1XX 1155%* %* %* %* %* %* 65 X%*N Mr<   r%   c                    t                      5  | j        j        }|rP|                    d          }|                    d          dk    r"| |                    t
          j        |           ddd           dS # 1 swxY w Y   dS )z-Set "messaging.destination.name" tag for spanrouting_keyexchanger   N)r   ro   delivery_infor   set_datar
   MESSAGING_DESTINATION_NAME)rV   rR   r   r   s       r:   _set_messaging_destination_namer   U  s    	$	&	& P P2 	P'++M::K  ,,22{7N hA;OOOP P P P P P P P P P P P P P P P P Ps   AA;;A?A?c                 N     t          t                    d fd            }|S )Nrm   r   rn   r6   c                     	 t          j        t          j        j        t
          j                  5 }t          |           d }t                      5  j	        j
        <dj	        j
        v r.t                      j	        j
                            d          z
  }d d d            n# 1 swxY w Y   |%|dz  }|                    t          j        |           t                      5  |                    t          j        j	        j                   d d d            n# 1 swxY w Y   t                      5  |                    t          j        j	        j                   d d d            n# 1 swxY w Y   t                      5  |                    t          j        j                                        j        j                   d d d            n# 1 swxY w Y    | i |cd d d            S # 1 swxY w Y   d S # t2          $ rV t5          j                    }t                      5  t9          |           d d d            n# 1 swxY w Y   t;          |  Y d S w xY w)Nr   r   i  )rP   r   r   QUEUE_PROCESSrx   r1   rK   r   r   ro   r   r   r   r   r
   !MESSAGING_MESSAGE_RECEIVE_LATENCYMESSAGING_MESSAGE_IDidMESSAGING_MESSAGE_RETRY_COUNTretriesMESSAGING_SYSTEMapp
connection	transportdriver_type	ExceptionsysrW   rk   r   )rm   rn   rR   latencyrW   r   rV   s        r:   r   z_wrap_task_call.<locals>._innerj  s   )	&#Y(/   #* /d;;;022  ,874<;OOO":"<"<t|?S?W?W7@ @ #               &tOGMM("LgVVV022 R RMM("?QQQR R R R R R R R R R R R R R R 122  MM >@T                
 122  MM 1++--7C                 q$)&))G#* #* #* #* #* #* #* #* #* #* #* #* #* #* #* #* #* #*H  	 	 	|~~H,.. 3 3"42223 3 3 3 3 3 3 3 3 3 3 3 3 3 3X		s   0H !G6A	B)G6)B-	-G60B-	18G6)+D G6 D$	$G6'D$	(G69+E0$G60E4	4G67E4	8G6	AGG6G	G6G	
G6)H 6G::H =G:>H +I#.I?I#I	I#I	I#"I#r   )r   r1   r   s   `` r:   _wrap_task_callr   a  sG       1155* * * * * * 65*X Mr<   c                  V    dd l mc m}  | j        	 	 	 	 	 	 	 	 	 	 d	fd}|| _        d S )
Nr   rx   r   rV   rm   rn   r6   c                 (   t          |dd          sft          |d          r5t          |t          |          j                  t          |          _        nt          ||j                  |_        d|_        t          | | |g|R i |          S )N_sentry_is_patchedF__call__T)r|   r*   r   r]   r   runr   r   )rx   rV   rm   rn   original_build_tracers       r:   sentry_build_tracerz0_patch_build_tracer.<locals>.sentry_build_tracer  s     t1599 	+ tZ00 ;&5dDJJ<O&P&PT

##*4::
 '+D#D"7"7d"TT"T"T"TV"T"TUUUr<   )
rx   r   rV   r   rm   r   rn   r   r6   r   )celery.app.tracer   tracebuild_tracer)r   r   r   s     @r:   r?   r?     s    $$$$$$$$$!.VV V).V:?V	V V V V V V$ -Er<   c                  L    t          t          j                  t          _        d S r8   )r   r)   r   rD   r<   r:   r@   r@     s    %d&677Dr<   c                  D    ddl m}  t          | j                  | _        d S )Nr   Celery)r2   r   r   	send_taskr   s    r:   rA   rA     s-    %f&677Fr<   c                  <    ddl m}  | j        dfd}|| _        d S )	Nr   )Workerrm   r   rn   r6   c                     	  | i |t                      5  t          j                                        t                    	 t          j                     d d d            S # 1 swxY w Y   S # t                      5  t          j                                        t                    	 t          j                     d d d            w # 1 swxY w Y   w xY wr8   )r   rP   rb   rc   r1   flush)rm   rn   original_workloops     r:   sentry_workloopz+_patch_worker_exit.<locals>.sentry_workloop  sS   	'$$d5f55,.. ' ')++;;<MNN  $&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',.. ' ')++;;<MNN  $&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sB   A0 A A$$A(	+A(	0C?A C?CCCCCr   )billiard.poolr   workloop)r   r   r   s     @r:   rB   rB     sJ     %$$$$$	' 	' 	' 	' 	' 	' &FOOOr<   c                  z    t           j        t          t                    dfd            } | t           _        d S )	Nr9   r/   rm   r   rn   r6   c                 T   |                     di           }t          |t                    si }|                     d          }|                     d          }|                     d          }|                     d          }|                     d          }t          j        t
          j        |t          j                  5 }	| |		                    t          j        |           |dk    r"| |		                    t          j        |           | |		                    t          j        |           t                      5  |		                    t          j        | j        j        j                   d d d            n# 1 swxY w Y    
| g|R i |cd d d            S # 1 swxY w Y   d S )	Nr   rV   r   r   r   r   r   r   )r   rd   r   rP   r   r   QUEUE_PUBLISHr1   rK   r   r
   r   r   r   r   r   r   r   r   )r9   rm   rn   kwargs_headersrw   task_idr   r   r   rR   original_publishs             r:   sentry_publishz/_patch_producer_publish.<locals>.sentry_publish  s   Ir22.'22 	   N"&&v..	 $$T** $$Y//jj//::j))"$+
 
 
 	; "h;WEEE2~~+"9 hA;OOO"hDgNNN,..  -t/H/T                
 $#D:4:::6::+	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s7   A;F>0E:.F:E>	>FE>	FF!$F!)r9   r/   rm   r   rn   r   r6   r   )r/   publishr   r1   )r  r  s    @r:   rC   rC     sS    ' 13CDD&; &; &; &; &; ED&;P &Hr<   )rV   r   rW   r$   r6   Nr8   )rV   r   rl   r   rm   r   rn   r   ro   rp   r6   r!   )r   r&   r6   r&   )rV   r   r   r&   r6   r&   )rV   r   rR   r%   r6   NrF   )Sr   collections.abcr   	functoolsr   rP   r   sentry_sdk.apir   sentry_sdk.constsr   r	   r
   sentry_sdk.integrationsr   r   r   #sentry_sdk.integrations.celery.beatr   r   r   $sentry_sdk.integrations.celery.utilsr   sentry_sdk.integrations.loggingr   sentry_sdk.tracingr   r   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   r   r   typingr   r   r   r   r   r   r    sentry_sdk._typesr!   r"   r#   r$   r%   r&   r2   r(   r>   celery.app.taskr)   r   r*   celery.exceptionsr+   r,   r-   r.   kombur/   ImportErrorre   r1   r   rU   rk   r~   rL   r   r   r   r   r   r   r?   r@   rA   rB   rC   rD   r<   r:   <module>r     s   



 # # # # # #           & & & & & & ) ) ) ) ) ) 6 6 6 6 6 6 6 6 6 6 U U U U U U U U U U         
 J I I I I I 9 9 9 9 9 9 E E E E E E E E , , , , , ,            !           /FFFFFFFFFFFF''''''8CH-...A/000000$$$$$$000000             / / /
,-
.
../ #(!8 $+ $+ $+ $+ $+ $+ $+ $+N* * * * * */ / / /:  $

  	
     @H&H.>HTXHH H H HV       * * * *Z0 0 0 0f	P 	P 	P 	P6 6 6 6r- - - -48 8 8 88 8 8 8& & & &*,& ,& ,& ,& ,& ,&s   9$C C/