
    Ii'                        S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJrJrJr  S SKJr  SSKJrJrJrJrJr  SS	KJrJrJr  \R6                  " S
5      r\\\\
4   /\4   r\\/\\\
4   4   r  " S S\!5      r" " S S\\5      r#\ " S S5      5       r$\ " S S\$5      5       r% " S S5      r& " S S\!5      r' " S S\'5      r(SS.S\S\\
S4   S\\\
4   S\\)   S\)S \\   S!\4S" jjr*SS.S#\S\\
S4   S\\\
4   S\)S\)S$\+S%\
S&\)S'\)S(\S)\S*\S \\   S!\\   4S+ jjr,SS,.S-\S.\\    S!\$4S/ jjr-SS,.S-\S.\\    S!\\\\
S4   \\\
4   \)\)4   4S0 jjr.SS,.S-\S.\\    S!\%4S1 jjr/g)2    N)	dataclass)datetime)Enum)AnyCallableDictOptionalTuple)Redis   )abort_jobs_ssdefault_queue_namein_progress_key_prefixjob_key_prefixresult_key_prefix)ms_to_datetimepolltimestamp_mszarq.jobsc                       \ rS rSrSrg)ResultNotFound    N__name__
__module____qualname____firstlineno____static_attributes__r       ./venv/lib/python3.13/site-packages/arq/jobs.pyr   r          r   r   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
	JobStatus   z
Enum of job statuses.
deferredqueuedin_progresscomplete	not_foundr   N)r   r   r   r   __doc__r%   r&   r'   r(   r)   r   r   r   r    r#   r#      s"    
 HFKHIr   r#   c                       \ rS rSr% \\S'   \\S4   \S'   \\\4   \S'   \	\S'   \
\S'   \\	   \S'   \\   \S	'   SS jrSrg
)JobDef*   function.argskwargsjob_tryenqueue_timescorejob_idNc                 x    [        U R                  [        5      (       a  [        U R                  5      U l        g g N)
isinstancer3   floatintselfs    r    __post_init__JobDef.__post_init__4   s'    djj%((TZZDJ )r   )r3   )returnN)r   r   r   r   str__annotations__r
   r   r   r9   r   r	   r<   r   r   r   r    r,   r,   *   sG    M
S/cNLC=SM)r   r,   c                   H    \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   Sr	g)		JobResult9   successresult
start_timefinish_time
queue_namer   N)
r   r   r   r   boolr@   r   r   r?   r   r   r   r    rB   rB   9   s    MKOr   rB   c            
           \ rS rSrSrSr\S4S\SSS\S	\\	   4S
 jjr
 SSSS.S\\   S\S\\   S\4S jjjrS\\   4S jrS\\   4S jrS\4S jrSSS.S\\   S\S\4S jjrS\4S jrSrg)JobB   z"
Holds data a reference to a job.
r4   _redis_queue_name_deserializerNr4   rediszRedis[bytes]rO   rP   c                 4    Xl         X l        X0l        X@l        g r6   rM   )r;   r4   rQ   rO   rP   s        r    __init__Job.__init__I   s     &*r   g      ?)
poll_delay
pole_delaytimeoutrU   rV   r>   c                Z  #    Ub  [         R                  " S[        5        Un[        U5        Sh  vN nU R                  R                  SS9 ISh  vN nUR                  [        U R                  -   5        UR                  U R                  U R                  5        UR                  5       I Sh  vN u  pgSSS5      ISh  vN   W(       a  [        X`R                  S9nUR                  (       a  UR                  s  $ [!        UR                  ["        [$        R&                  45      (       a  UR                  e[)        UR                  5      eWc  [+        S5      eUc  GM:  XA:  d  GMB  [$        R,                  " 5       e GNS GN4 N N! , ISh  vN  (       d  f       N= f
 g7f)a  
Get the result of the job or, if the job raised an exception, reraise it.

This function waits for the result if it's not yet available and the job is
present in the queue. Otherwise ``ResultNotFound`` is raised.

:param timeout: maximum time to wait for the job result before raising ``TimeoutError``, will wait forever
:param poll_delay: how often to poll redis for the job result
:param pole_delay: deprecated, use poll_delay instead
NzI"pole_delay" is deprecated, use the correct spelling "poll_delay" insteadTtransactiondeserializerzmNot waiting for job result because the job is not in queue. Is the worker function configured to keep result?)warningswarnDeprecationWarningr   rN   pipelinegetr   r4   zscorerO   executedeserialize_resultrP   rD   rE   r7   	ExceptionasyncioCancelledErrorSerializationErrorr   TimeoutError)	r;   rW   rU   rV   delaytrvsinfos	            r    rE   
Job.resultU   sD     !MM[]o $J
+ 	-%{{+++==(4;;67		$**DKK8ZZ\) >=
 )!:L:LM<<;;&i9O9O-PQQ++%,T[[99$H 
 "u**,,+	-= * >=== ,s   ,F+F)FF)F+FF+AF4F5F;F+FBF+(F+0F+F)F+FF+F&	FF&	"	F+c                   #    U R                  5       I Sh  vN nU(       dN  U R                  R                  [        U R                  -   5      I Sh  vN nU(       a  [        X R                  S9nU(       aM  U R                  R                  U R                  U R                  5      I Sh  vN nUc  SO
[        U5      Ul
        U$  N Nv N7f)za
All information on a job, including its result if it's available, does not wait for the result.
Nr[   )result_inforN   ra   r   r4   deserialize_jobrP   rb   rO   r9   r3   )r;   rn   rl   rm   s       r    rn   Job.info   s      (,'7'7'9!9kkoont{{&BCCA&q7I7IJkk(()9)94;;GGA!"ADJ ":C Hs4   CC:CCAC*C
+CC
Cc                    #    U R                   R                  [        U R                  -   5      I Sh  vN nU(       a  [	        XR
                  S9$ g N7f)z
Information about the job result if available, does not wait for the result. Does not raise an exception
even if the job raised one.
Nr[   )rN   ra   r   r4   rd   rP   )r;   rl   s     r    rq   Job.result_info   sC     
 ++//"3dkk"ABB%a6H6HII	 Cs   0AA Ac                   #    U R                   R                  SS9 ISh  vN nUR                  [        U R                  -   5        UR                  [
        U R                  -   5        UR                  U R                  U R                  5        UR                  5       I Sh  vN u  p#nSSS5      ISh  vN   W(       a  [        R                  $ W(       a  [        R                  $ W(       a.  U[        5       :  a  [        R                  $ [        R                  $ [        R                  $  GN N N|! , ISh  vN  (       d  f       N= f7f)z
Status of the job.
TrY   N)rN   r`   existsr   r4   r   rb   rO   rc   r#   r(   r'   r   r%   r&   r)   )r;   rk   is_completeis_in_progressr3   s        r    status
Job.status   s      ;;''D'99RII'$++56II,t{{:;IId&&479zz|1C.K	 :9 %%%((().)?9%%UYEUEUU&&& : 2D	 :999sX   ED-EA>D4"D0#D4*E5D26A8E0D42E4E:D=;EErW   rU   c                  #    U R                  5       I Sh  vN nU(       a  UR                  (       a  UR                  [        5       :  a  U R                  R	                  SS9 ISh  vN nUR                  U R                  U R                  5        UR                  U R                  U R                  S05        UR                  5       I Sh  vN   SSS5      ISh  vN   U R                  R                  [        U R                  [        5       05      I Sh  vN    U R                  XS9I Sh  vN   g GN" N Nn N`! , ISh  vN  (       d  f       Nu= f N@ N*! [        R                   a     g[         a     gf = f7f)a  
Abort the job.

:param timeout: maximum time to wait for the job result before raising ``TimeoutError``,
    will wait forever on None
:param poll_delay: how often to poll redis for the job result
:return: True if the job aborted properly, False otherwise
NTrY   r   r|   F)rn   r3   r   rN   r`   zremrO   r4   zaddrc   r   rE   rf   rg   r   )r;   rW   rU   job_infork   s        r    abort	Job.abort   s      $8>>LN+J{{+++==(($++6((4;;*:;jjl"" >=
 kk}t{{LN.KLLL	++g+EEE # %= # >===
 	M F%% 	 		s   FD8AF(D;)F,A"ED=EFD?;FEF E 2E3E 7F;F=E?FEE
EFE F3F5	F>F FFc                 "    SU R                    S3$ )Nz	<arq job >)r4   r:   s    r    __repr__Job.__repr__   s    4;;-q))r   )rP   rO   rN   r4   r6   )r   r   r   r   r*   	__slots__r   r?   r	   DeserializerrS   r8   r   rE   r,   rn   rB   rq   r#   rz   rI   r   r   r   r   r   r    rK   rK   B   s     CI .04
+
+ 
+ 	
+
  -
+ *.(-FIim(-(->C(-W_`eWf(-	(-THV, 	8I#6 	'i '& 9=RU huo % Z^ 8*# *r   rK   c                       \ rS rSrSrg)rh      r   Nr   r   r   r    rh   rh      r!   r   rh   c                       \ rS rSrSrg)DeserializationError   r   Nr   r   r   r    r   r      r!   r   r   )
serializerfunction_namer/   .r0   r1   enqueue_time_msr   r>   c                    X0XUS.nUc  [         R                  n U" U5      $ ! [         a  n[        SU  S35      UeS nAff = f)N)tfaketzunable to serialize job "")pickledumpsre   rh   )r   r/   r0   r1   r   r   dataes           r    serialize_jobr      sZ     4O\D\\
V$ V #<]O1!MNTUUVs   # 
A=Ar.   rD   rE   start_msfinished_msrefrH   r4   c                   UU UUUUUUUU
US.nUc  [         R                  n U" U5      $ ! [         a    [        R	                  SU	SS9   Of = fUR                  SSS9   U" U5      $ ! [         a    [        R                  SU	SS9   g f = f)	N)r   r   r   r   r   rm   rstftqidzerror serializing result of %sT)exc_infozunable to serialize resultF)r   rm   z:error serializing result of %s even after replacing result)r   r   re   loggerwarningupdatecritical)r.   r/   r0   r1   r   rD   rE   r   r   r   rH   r4   r   r   s                 r    serialize_resultr      s    " D \\
M$ M7tLM 	KK.%K8j$ jTVYdhijs!   + AA!A) )B
Br[   r   r\   c          
          Uc  [         R                  n U" U 5      n[        US   US   US   US   [        US   5      S S S9$ ! [         a  n[        S5      UeS nAff = f)Nr   r   r   r   r   )r.   r/   r0   r1   r2   r3   r4   unable to deserialize job)r   loadsr,   r   re   r   r   r\   dr   s       r    rr   rr     s}    ||GOsV3S6cF'$0
 	
  G"#>?QFGs   .A 
AAAc                    Uc  [         R                  n U" U 5      nUS   US   US   US   US   4$ ! [         a  n[        S5      UeS nAff = f)Nr   r   r   r   r   r   )r   r   re   r   r   s       r    deserialize_job_rawr   $  sg     ||GOvqvqvqvqw66 G"#>?QFGs   3 
AA		Ac                J   Uc  [         R                  n U" U 5      n[        US   US   US   US   [        US   5      S US   US   [        US   5      [        US	   5      UR	                  S
S5      UR	                  SS5      S9$ ! [
         a  n[        S5      UeS nAff = f)Nr   r   r   r   r   rm   r   r   r   r   z	<unknown>r   )r1   r.   r/   r0   r2   r3   rD   rE   rF   rG   rH   r4   z unable to deserialize job result)r   r   rB   r   ra   re   r   r   s       r    rd   rd   0  s    ||NOcFsV3S6'$0cFS6%ag.&qw/uuS+.55{+
 	
  N"#EFAMNs   A1B 
B"BB")0rf   loggingr   r]   dataclassesr   r   enumr   typingr   r   r   r	   r
   redis.asyncior   	constantsr   r   r   r   r   utilsr   r   r   	getLoggerr   r?   bytes
Serializerr   RuntimeErrorr   r#   r,   rB   rK   rh   r   r9   r   rI   r   rr   r   rd   r   r   r    <module>r      s       !   7 7  s s 5 5			:	&tCH~&-.
c3h/0	\ 	T " ) ) )   F* F*R	 		- 	 (,VV
S/V cNV c]	V
 V $V V@ (,**
S/* cN* 	*
 * * * * * 
* * * $* e_*Z IM Gu Gx/E GQW G& 9=	G	G'5	G
3c3hc3hc9:	G LP N% N(<2H NT] Nr   