
    >io                         d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZ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 dd
lmZmZ ddlZddl Zddlm!Z!m"Z"m#Z#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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z> dZ?ddl@mAZA  e4eB      ZCdZDdZEdZFdZGdZHdZIdZJ edd      ZK eKeId ej                  d!d!      ZM eKeHd"ej                  dd      ZO eKeGd#ej                  d!d!      ZQ eKeFd$ej                  dd      ZR eKeFd%ej                  d!d!      ZTe#j                  j                  ZWe#j                  j                  ZYe#j                  j                  Z[e$j                  Z\e$j                  Z]e$j                  Z^e$j                  Z_e$j                  Z`e$j                  Zae$j                  Zb ece^e`e_h      Zdg Zei Zf ed&d'      Zgd( Zhd) Zid* Zjd+ Zk G d, d-      ZldGd.Zmddd/eld0d0dej                  egedf
d1eod2eejR                  ej                  j                  f   d3eej                  j                  j                     d4eeo   d5eud6eel   d7eud8eud9eej                     d:e	g ewf   d&eeg   d;eeo   d<e	eoeed=f   e
eoef   egegf   fd>ZxdGd?Zyd@ ZzedfdAZ{eddfdBZ|dC Z}dGdDZ~e!fdEZdF Zy)HzTrace task execution.

This module defines how the task execution is traced:
errors are recorded, handlers are applied and so on.
    N)
namedtuple)	AnyCallableDict	FrozenSetOptionalSequenceTupleTypeUnion)warn)ExceptionInfoExceptionWithTraceback)EncodeError)loads)prepare_accept_content)	safe_reprsafe_str)current_appgroupsignalsstates)_task_stack)Context)Task)BackendGetMetaErrorIgnoreInvalidTaskErrorRejectRetry)AsyncResult)
get_logger)gethostname)
mro_lookup)saferepr)get_pickleable_etypeget_pickleable_exceptionget_pickled_exception)	TraceInfobuild_tracer
trace_tasksetup_worker_optimizationsreset_worker_optimizations)successful_requestszTask %(name)s[%(id)s] receivedzATask %(name)s[%(id)s] succeeded in %(runtime)ss: %(return_value)sz.Task %(name)s[%(id)s] %(description)s: %(exc)sz%Task %(name)s[%(id)s] %(description)szTask %(name)s[%(id)s] %(exc)sz$Task %(name)s[%(id)s] retry: %(exc)slog_policy_t)formatdescriptionseverity	tracebackmailrejected   ignoredzINTERNAL ERRORzraised expectedzraised unexpected
trace_ok_t)retvalinforuntimeretstrc                 8    t         j                  | |d|i       y)zzLog 'fmt % context' with severity 'INFO'.

    'context' is also passed in extra with key 'data' for custom handlers.
    data)extraN)loggerr:   )fmtcontexts     l/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/celery/app/trace.pyr:   r:   ~   s    
 KKWVW$5K6    c                 J    t        | j                  |t        t        hdg      S )z+Return true if the task overrides ``attr``.zcelery.app.task)stopmonkey_patched)r$   	__class__BaseTaskobject)taskattrs     rC   task_has_customrM      s$    dnnd(F1C&7%8: :rD   c                     t        |t              rt        S t        |t              rt        S |j
                  rt        S | j                  rt        || j                        rt        S t        S N)

isinstancer   log_policy_rejectr   log_policy_ignoreinternallog_policy_internalthrowslog_policy_expectedlog_policy_unexpected)rK   einfoexcs      rC   get_log_policyrZ      sO    #v  	C	   	"";;:c4;;7&&$$rD   c                 $    t        | dd      xs |S )z8Use 'shadow' in request for the task name if applicable.shadowN)getattr)requestdefaults     rC   get_task_namer`      s     7Hd+6w6rD   c                   H    e Zd ZdZdZddZ	 ddZd Zd ZddZ	dd	Z
d
 Zy)r)   z!Information about task execution.stater9   Nc                      || _         || _        y rO   rb   )selfrc   r9   s      rC   __init__zTraceInfo.__init__   s    
rD   c                     |j                   r|j                  }n|r|j                  rd}n| }	 t        | j                  t
        | j                  i| j                     ||||      S )NT)store_errorscall_errbacks)ignore_resultstore_errors_even_if_ignoredstore_eager_resultRETRYhandle_retryFAILUREhandle_failurerc   )re   rK   reqeagerri   rh   s         rC   handle_error_statezTraceInfo.handle_error_state   sr    <<Lt..L$9L4$$T((
 ** C#/$13 	3rD   c                 :    | j                  ||t                      y rO   
_log_errorr   re   rK   rq   kwargss       rC   handle_rejectzTraceInfo.handle_reject       c=?3rD   c                 :    | j                  ||t                      y rO   ru   rw   s       rC   handle_ignorezTraceInfo.handle_ignore   rz   rD   c                 .   t        j                         \  }}}	 | j                  }t        |||f      }	|r=|j                  j                  |j                  |j                  |	j                  |       |j                  |j                  |j                  |j                  |j                  |	       t        j                  j                  ||||	       t        t         |j                  t#        ||j$                        t'        |      d       |	~S # ~w xY w)zHandle retry exception.r^   )senderr^   reasonrX   )idnamerY   )sysexc_infor9   r   backendmark_as_retryr   rY   r3   on_retryargsrx   r   
task_retrysendr:   	LOG_RETRYr`   r   str)
re   rK   rq   rh   rx   type__tbr   rX   s
             rC   rn   zTraceInfo.handle_retry   s     ||~q"	[[F!5&""56E**FFFJJ +  MM&**cffchh

EJ##4+1 $ @ff%c49956{ 
 s   C5D Dc           	      r   | j                   }t        |      }|j                  t        j                         \  }}|_        t        t        |            }t        |||j                  f      }	|j                  j                  |j                  ||	j                  |||       |j                  ||j                  |j                  |j                  |	       t        j                   j#                  ||j                  ||j                  |j                  |j                  |	       | j%                  |||	       |	S )zHandle exception.r   )r^   store_resultri   )r   task_id	exceptionr   rx   r3   rX   )r9   r'   __traceback__r   r   r&   typer   r   mark_as_failurer   r3   
on_failurer   rx   r   task_failurer   rv   )
re   rK   rq   rh   ri   orig_excrY   r   exc_typerX   s
             rC   rp   zTraceInfo.handle_failure   s   ;;&x0$ '*lln#Aq##'X7 #s7H7H'IJ$$FFCl' 	% 	
 	SVVSXXszz5A!!svv,/chh),,/,=,=(-	 	" 	/
 	c5)rD   c           
         t        |j                        x}|_        t        |t              r|j                  x}|_        t        |      t        |j                        |j                  |j                  d      xs t        |j                        |j                  d      xs t        |j                        f\  }}}}}	t        |||      }
|j                  |j                  t        ||j                         ||||	|
j"                  |j$                  d	}t&        j)                  |
j*                  |
j,                  j/                         ||
j                  r|nd d|i       y )Nargsrepr
kwargsrepr)	hostnamer   r   rY   r3   r   rx   r1   rS   r>   )r   r?   )r(   r   rP   r   rY   r   r   r3   r   getr   rx   rZ   r   r   r`   r   r1   rS   r@   logr2   r0   strip)re   rK   rq   rX   eobjr   r3   r   sargsskwargspolicyrB   s               rC   rv   zTraceInfo._log_error   s"   !6u!GGud23%)XX-D5?dOU__%NNGGJ69SXX#6GGL!:Yszz%::
6	9hw  eT2 &&!#tyy1"!--

 	

6??FMM$7$7$97(.(8(8Hd '* 	 	,rD   rO   )FT)T)TT)__name__
__module____qualname____doc__	__slots__rf   rs   ry   r|   rn   rp   rv    rD   rC   r)   r)      s2    +#I
 7;3 440<,rD   r)   c                 D   d }| 2t        | d      r| j                  }n1t        j                         \  }}}nt        j                         \  }}}|A	 |j                  j                          |j                  j                   |j                  }|@y y # t        $ r Y w xY w)Nr   )	hasattrr   r   r   tb_frameclearf_localsRuntimeErrortb_next)rY   r   r   s      rC   traceback_clearr     s     
B
3(""B||~HAq"<<>1b
.	KKKK   ZZ .  		s   0B 	BBTFr   rK   loaderr   rh   Inforr   	propagateapp	monotonicIGNORE_STATESreturn.c           !      l   	
 !"#$% t        d      rnj                  |xs j                  }j                  }j                  % xr j                  xr | %r|sj
                  rdn xr | j                  j                  xs j                  xr. j                  j                  xr j                  j                  xs
 t               j                  j                  |j                  |j                  d#d$d"t        d      rj                   #t        d      rj"                  $t        d      rj$                  "t'        j(                         j*                  }|j,                  |j.                  t0        j,                  t0        j.                  t2        j5                  t6        j8                        j:                  t<        j>                  j@                  t<        jB                  j@                  t<        jD                  j@                  !ddl#m$} |jJ                   tL        dfd	tF        jN                  jP                  jR                  d
tT        tV        tX        tV           f   dtZ        dt\        dt^        t`        t`        t`        f   f
fd	 ddtZ        dtb        t`           dtd        tZ        t`        f   d	tf        td        tZ        t`        f      d
f
	  !"#$
%fd}|S )a=  Return a function that traces task execution.

    Catches all exceptions and updates result backend with the
    state and result.

    If the call was successful, it saves the result to the task result
    backend, and sets the task status to `"SUCCESS"`.

    If the call raises :exc:`~@Retry`, it extracts
    the original exception, uses that as the result and sets the task state
    to `"RETRY"`.

    If the call results in an exception, it saves the exception as the task
    result, and sets the task state to `"FAILURE"`.

    Return a function that takes the following arguments:

        :param uuid: The id of the task.
        :param args: List of positional args to pass on to the function.
        :param kwargs: Keyword arguments mapping to pass on to the function.
        :keyword request: Request dict.

    __call__TNbefore_start
on_successafter_returnr   )canvasr^   rY   rc   ri   r   c                 z    r  ||      }|j                  	| |      }|||j                  |j                  fS )z1Handle any errors raised by a `Task`'s execution.)rr   ri   )rs   rc   r9   )
r^   rY   rc   ri   IRr   rr   r   rK   s
         rC   on_errorzbuild_tracer.<locals>.on_error  sN       'm ! 
 !QWWahh&&rD   uuidr   rx   c                    dx}x}x}x}x}}	d}
 $       }	 	 |j                    t        |xs i |d|      }
|
j                  xr |
j                  j                  dd      }r|r}|
j                  t        v r 6||||      S t        |
j                        }	 |j                  }	|	t        k(  r3t        t        |
j                  t        |
%      dd        6||||      S  .2       |
j                  xs | }!r|
j                  j                  d	      nd} -|
       	 +rt!        2| 2||
        #| 2       7r&2j"                  j%                  | ' dt&        |
       	 4r
 4| ||        |i |x}}t        }		 2j(                  j*                  }|rt-        2j(                  j*                        dkD  rg g }}|D ]?  } 0|      }t/        |t0              r|j3                  |       /|j3                  |       A |D ]  }|j5                  |f| ||        |rCt1        |      j5                  |f| ||       n! 0|d         j5                  |f| ||       |
j6                  }|r/ 0|j9                               }|j5                  |f|| ||       2j"                  j;                  | ||
,       t=        |/      } $       |z
  }5r 5|| ||       1rt?        2|       rZt        t@        | t        |
%      |||
j                  d      xs tC        |      |
j                  d      xs tC        |      d       	 |	vr3r 3|	|| ||d       	 *rta        2| 2||||	        )         (        s"	 2j"                  jc                           "         6||||      S # t        $ r t        d      w xY w# t        $ r Y w xY w# tD        $ r} &|
|      \  }}}	}Y d}~d}~ww xY w# tF        $ rY} tH        |      tK        d      }}|j                  |jL                  }}	|jO                  2|
       tQ        |       Y d}~d}~wtR        $ rY} tT        |      tK        d      }}|j                  |jL                  }}	|jW                  2|
       tQ        |       Y d}~nd}~wtX        $ r+} &|
|tZ        d      \  }}}	}tQ        |       Y d}~d}~wt\        $ r$} &|
|      \  }}}	}tQ        |       Y d}~d}~wt^        $ r  w xY w# td        tf        th        f$ r  t\        $ r#}tj        jm                  d|d       Y d}~d}~ww xY w#  )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d}~w d}~ww xY ww xY w# 	 *rta        2| 2||||	        )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d}~w d}~ww xY ww #  )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d}~w d}~ww xY ww xY wxY w# th        $ r  t\        $ r:}to        2| ||||       r tq        2|      }|
 &|
|      \  }}}}Y d}~d}~ww xY w)zExecute and trace a `Task`.Nz'Task keyword arguments is not a mappingF)r   called_directlyrx   redeliveredr   z$Task already completed successfully.)r   r   r1   priority)r   r   rK   r   rx   )pidr   r~   r6   )	parent_idroot_idr   r   )chainr   r   r   )r   resultr   r   )r   r   return_valuer;   r   rx   TrS   )ri   )r   r   rK   r   rx   r9   rc   zProcess cleanup failed: %rr   )9itemsAttributeErrorr   r   delivery_infor   r   r.   r!   rc   SUCCESSr:   LOG_IGNOREDr`   r   r   send_prerunr   r   STARTEDr^   	callbackslenrP   r   appendapply_asyncr   popmark_as_doner%   send_successLOG_SUCCESSr   r   r   REJECTEDr   r9   ry   r   r   IGNOREDr|   r    rm   	ExceptionBaseExceptionsend_postrunprocess_cleanupKeyboardInterrupt
SystemExitMemoryErrorr@   error_signal_internal_errorreport_internal_error)8r   r   rx   r^   r   r   TRstrr9   rc   task_request
time_startr   rr   task_priorityr   sigsgroupssiggroup_r   _chsigrY   r   r   r   
_does_infor   deduplicate_successful_tasksrr   funr   inherit_parent_priorityloader_cleanuploader_task_initr   r   r   r   pop_requestpop_taskpostrun_receiversprerun_receiverspublish_resultpush_request	push_taskresultrepr_maxsize	signaturesuccess_receiversrK   task_after_returntask_before_starttask_on_successr8   track_starteds8                            rC   r+   z build_tracer.<locals>.trace_task  s   $ -100A00D06E[
m	9?
 #7=bt38IL (55 T+99==mUS +??&99%aAt44S99GGE '[".//$1,$E+Q+ 
  *!Q488dO"**2dG' )66:::F-1 &A8#tT%)&: t, LL--cx@' , . [()$f=!$d!5f!55A#E*A %)LL$:$:	$"4<<#9#9:Q>/12f+4 !9C*3CS*AC'1#u'=(.c(:(,C(8!9 /5 !&F$*$6$6)/	261> %7 %&!& $($)$C$8$D$D)/	261> %E %& !*)A,C @ L L%+Iw-: !M !" !- 2 2 %.uyy{%DF"..!'	*.)6 / 
 11 &,  (+=>%K*4*+FD$G,(VD% &*(5lD(I04+,(4(8(8(D(W	RV*6*:*:<*H*]IV\L]/  -()!64vt8($D$T*.v,2%A JM 8 LL88:*, !Q4((W " ?&=? ??  + N ' J.6|S.I+1eVJI  )#.t0LqA$%GGQXX6EOOD,7#C(( )-}d/KqA$%GGQXX6EOOD,7#C(( )*2$c5+G'Aq%#C((  )*2<*E'Aq%#C(($ r !2:{K "!( 8"LL)Es26 ) 8 88 JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 !8($D$T*.v,2%A JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 ! JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 !  	 	9"4tVWcJ%dC0A'%lC8
1a	9s  N6 A[3 [3 O ';[3 #?[3 #AW* 'P D?O B!W* %U0 9[3 
!T- 6O[3 	O[3 O[3 	O?'O:5W* :O??W* 	T*AQW* T*+AR?9W* ?T* S1+W* 1T*=TW* T**W* -U-
U("[3 (U--[3 0W'!V$#W'$W#WW'W##W''[3 *[0,Y6 [0!X32[03Y2Y-([0-Y22[06[-!Z*)[-*[)[$[-$[))[--[00[3 3\?/\::\?rO   )4rM   runr   rj   r  rl   conftask_acks_late	acks_late#worker_deduplicate_successful_tasksr   
persistentr#   task_inherit_parent_priorityon_task_initon_process_cleanupr   r   r   osgetpidrequest_stackpushr   r   r@   isEnabledForloggingINFOr  r   task_prerun	receiverstask_postruntask_successceleryr   maybe_signaturero   r   rK   r   r   r   r   r   boolr
   r   r	   r   r   )&r   rK   r   r   rh   r   rr   r   r   r   r8   r   rj   r  r   r+   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  s&   `` ` ```````    @@@@@@@@@@@@@@@@@@@@@@rC   r*   r*   )  s   V "$
3$C!szzF&&M&&MIL4#5#5#Km:KM ]t'>'>"8='8%(XX%<%<%N %?(+(T(T%?(+(>(> ! (;=H!hhCC**..NOt^, --t\*//t^, --
))+C&&M %%L##K  IH$$W\\2J00**44,,66,,66&&I
 !"&	'ZZ__,,'y$y/12' '  	' ,1sC1D+E	' '$ 15	C)C)3-C) cNC) d38n-	C) :D	C) C) C) C) C)J rD   c           	          |si n|}	 | j                   t        | j                  | fi || _         | j                  ||||      S # t        $ r@}t	        | |||||       t        t        | |      t        t        |      dd      cY d}~S d}~ww xY w)zTrace task execution.Ng        )		__trace__r*   r   r   r   r8   r   r)   ro   )rK   r   r   rx   r^   optsrY   s          rC   r+   r+   \  s    bWG`>>!)$))TBTBDN~~dD&':: `tT4#F/c:Igs<SUXZ^__`s   ;A 	B5BBBc           
         	 t        j                         \  }}}t               }t        |j                        |_        t        |j                        |_        t        j                  j                  | |||||||       ~y# ~w xY w)zJSend a special `internal_error` signal to the app for outside body errors.)r   r   r   rx   r^   r   r3   rX   N)
r   r   r   r'   r   r&   r   r   task_internal_errorr   )	rK   r   r   rx   r^   rY   r   r   rX   s	            rC   r   r   h  sy    <<>1b25??C)%**5
##(( 	) 		
 Bs   A=B Bc                 P   |xs t        j                         }d }	|r0t        |j                  j                        }
 |||||
      \  }}}	n|\  }}}	t               } |j                  |||ddfi |	xs i  t        |j                  |    |||||      \  }}}}|rd||fS d||fS )NacceptFr   rx   r   is_eagerr   r6   r   )	r   _get_current_objectr   r  accept_contentr#   updater+   tasks)r   r   r^   bodycontent_typecontent_encodingr   r   extra_requestembedr+  r   rx   r   r   r   r   r   s                     rC   trace_task_retr7  }  s     
2002CE'(?(?@#, 0
fe #fe}HGNN%  
" syy#T67EMAq!TAq!9+4|+rD   c	                     |st         n|}d }
|\  }}}|r |||||      \  }}}
n|\  }}}
 |j                  |||ddfi |
xs i  ||    j                  ||||      \  }}}}|rd||fS d||fS )Nr*  Fr,  r6   r   )
_localizedr0  r%  )rK   r   r^   r2  r3  r4  r   _locr   r   r6  r1  r+  r   rx   r   r   r   r   s                      rC   fast_trace_taskr;    s     ":tDE"E68#, 0
fe #feGNN%  
" $K))dFGMAq!T Aq!9+4|+rD   c                     t        j                         \  }}}	 | j                  j                  |d      }t	        |||fd      }t        t        dj                  ||j                                     |~S # ~w xY w)NpickleTr   z'Exception raised outside body: {!r}:
{})	r   r   r   prepare_exceptionr   r   RuntimeWarningr0   r3   )rK   rY   _type_value_tbr   s         rC   r   r     sv    E63//X> %!5E^6==X'')* 	+ Cs   AA7 7A:c                    |xs
 t               }t                | j                          | j                          | j	                          | j
                  t        | j                  j                        |gt        dd d| _
        y)z#Setup worker related optimizations.NT)r#   _install_stack_protectionset_currentset_defaultfinalize_tasksr   r  r/  r9  use_fast_trace_task)r   r   s     rC   r,   r,     sj    (;=H  OOOO LLN 	

sxx667JqM #CrD   c                     	 t        t        d       	 t        j	                  d      t        _        d| _        y# t        $ r Y 2w xY w# t        $ r
 Y d| _        yw xY w)z*Reset previously configured optimizations._stackprotectedBaseTask.__call__FN)delattrrI   r   _patchedr   r   KeyErrorrI  r   s    rC   r-   r-     sb    +,$LL)<= $C    #Cs    9 A 	AA	AAc                      t        t        dd      s5t        j                  xt        d<   fd} | t        _        dt        _        y y )NrK  FrL  c                     | j                   }|j                  }|r?|j                  s3t        |      dk(  r%|j                  sd|_         | j
                  |i |S  | g|i |S )Nr6   )r  top
_protectedr   r   r  )re   r   rx   stackrq   origs        rC   __protected_call__z5_install_stack_protection.<locals>.__protected_call__  se    &&E))C3>>J!OC,?,?!"txx000.t.v..rD   T)r]   rI   r   rN  rK  )rV  rU  s    @rC   rD  rD    sD     8.6/7/@/@@$%	/ /#'  7rD   rO   )r   r  r  r   timecollectionsr   typingr   r   r   r   r   r	   r
   r   r   warningsr   billiard.einfor   r   kombu.exceptionsr   kombu.serializationr   loads_messager   kombu.utils.encodingr   r   r!  celery.loaders.appr   r   r   r   celery._stater   celery.app.taskr   r   rI   celery.exceptionsr   r   r   r   r    celery.resultr!   celery.utils.logr"   celery.utils.nodenamesr#   celery.utils.objectsr$   celery.utils.safereprr%   celery.utils.serializationr&   r'   r(   __all__celery.worker.stater.   r   r@   LOG_RECEIVEDr   LOG_FAILURELOG_INTERNAL_ERRORr   LOG_REJECTEDr   r/   WARNrQ   r  rR   CRITICALrT   rV   ERRORrW   r  r   r   r  r   r   r   r   r   r   r   rm   ro   EXCEPTION_STATES	frozensetr   r9  rN  r8   r:   rM   rZ   r`   r)   r   r   r   localPromiseProxyloadersr   	AppLoaderr#  Celeryintr*   r+   r   r7  r;  r   r,   r-   rD  r   rD   rC   <module>r{     sv  
  	 
  " Y Y Y  @ ( 6 6 4   6 6 % # , Z Z % ' . + * l l
 4	H	


 


	 >
 !z7<<AN  iq!L "('*:*:Aq  #"GLL!Q  %$gmmQ  !!&&##((##((
..
..
..??
..** 7E845 
&MN
7:
%7p, p,f2 :>"&! )'+'+~~'1(5ppFKK!:!::;p ++556p 3-	p
 p 9op p p fmm$p BG$p $p !~p 	#uS#XS#X<jHIpf		`, ,9d,. -:!,,
#< $/ 
$(rD   