
    ^f
                       d Z ddlmZ ddlZddl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 dd
lmZ ddlmZ ddlmZ ej        dk    rddlmZ nddlmZ erddlmZ dZ ee          ZdZ ej         d ed                    Z! e"ed          Z# edd          Z$ ed          efdZ%e	 G d d                      Z& G d d          Z'dS )z"Timer scheduling Python callbacks.    )annotationsN)
namedtuple)datetime)total_ordering)	monotonic)time)TYPE_CHECKING)proxy)wraps)
get_logger)   	   )ZoneInfo)TracebackType)EntryTimerto_timestamp   UTCpypy_version_info	scheduled)etapriorityentryc                    t          | t                    rc| j        |                     |          } t	                       |            z
  }t          | t          z
                                  |z
  d          S | S )z^Convert datetime to timestamp.

    If d' is already a timestamp, then that will be used.
    N)tzinfor   )
isinstancer   r   replace_timemaxEPOCHtotal_seconds)ddefault_timezoner   diffs       J/var/www/html/env/lib/python3.11/site-packages/kombu/asynchronous/timer.pyr   r   &   sp    
 !X :8		!1	22AwwAI,,..5q999H    c                  p    e Zd ZdZesdZddZd Zd Zd Z	d Z
ed	             Zej        d
             ZdS )r   zSchedule Entry.)funargskwargstrefcanceled	_last_run__weakref__Nc                |    || _         |pg | _        |pi | _        t          |           | _        d | _        d| _        d S )NF)r)   r*   r+   weakrefproxyr,   r.   r-   )selfr)   r*   r+   s       r&   __init__zEntry.__init__=   s@    JB	l &&	r'   c                0     | j         | j        i | j        S N)r)   r*   r+   r2   s    r&   __call__zEntry.__call__E   s    tx2dk222r'   c                B    	 d| j         _        d S # t          $ r Y d S w xY wNT)r,   r-   ReferenceErrorr6   s    r&   cancelzEntry.cancelH   s9    	!%DI 	 	 	DD	s    
c                X    d                     | j        j        | j        | j                  S )Nz<TimerEntry: {}(*{!r}, **{!r}))formatr)   __name__r*   r+   r6   s    r&   __repr__zEntry.__repr__N   s*    /66Hty$+7 7 	7r'   c                B    t          |           t          |          k     S r5   )id)r2   others     r&   __lt__zEntry.__lt__S   s    $xx"U))##r'   c                    | j         S r5   r-   r6   s    r&   	cancelledzEntry.cancelledV   s
    }r'   c                    || _         d S r5   rE   )r2   values     r&   rF   zEntry.cancelledZ   s    r'   NN)r>   
__module____qualname____doc__IS_PYPY	__slots__r3   r7   r;   r?   rC   propertyrF   setter r'   r&   r   r   3   s         

	
   3 3 3  7 7 7
$ $ $   X     r'   r   c                      e Zd ZdZeZdZd dZd Zd!dZd"dZ	d"dZ
d"dZddefdZdefdZej        fdZd Zd Zd Zeeej        ej        fdZd Zd Zd Zd Zeej        fd            Zed             ZdS )#r   zAsync timer implementation.Nc                f    t          |pt                    | _        |p| j        | _        g | _        d S r5   )floatDEFAULT_MAX_INTERVALmax_intervalon_error_queue)r2   rV   rW   r+   s       r&   r3   zTimer.__init__f   s1    !,"F2FGG 1DMr'   c                    | S r5   rQ   r6   s    r&   	__enter__zTimer.__enter__k   s    r'   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | NonereturnNonec                .    |                                   d S r5   )stop)r2   r[   r]   r_   s       r&   __exit__zTimer.__exit__n   s     			r'   rQ   r   c                f    |si n|}|                      |                     |||          ||          S r5   )enter_atr   )r2   r   r)   r*   r+   r   s         r&   call_atzTimer.call_atv   s6    !-v}}TZZT6::CJJJr'   c                f    |si n|}|                      ||                     |||          |          S r5   )enter_afterr   )r2   secsr)   r*   r+   r   s         r&   
call_afterzTimer.call_afterz   s8    !-vdjjdF&C&CXNNNr'   c                     |si n|}                      ||          t                     fd            }|_        d _                                       S )Nc                    
j         t                      }}|r
|
j         z
  n}	 |rG|k    rA|
_          | i |
j        s+
j         }|r||z
  z
  n}	                    |
           S S 
j        s,
j         }|r||z
  z
  n}	                    |
           d S d S # 
j        s+
j         }|r||z
  z
  n}	                    |
           w w xY wr5   )r.   r   r-   rj   )r*   r+   lastnowlsincenextr)   r   rk   r2   r,   s         r&   _reschedulesz+Timer.call_repeatedly.<locals>._reschedules   s;   	#D/3=cDN**F; 0fnn%(DN3///} ;>D26@43:..DD$$T4::::;t} ;>D26@43:..DD$$T4:::::; ;t} ;>D26@43:..DD$$T4::::;s   B$ $4C)r   r   r)   r.   rj   )r2   rk   r)   r*   r+   r   rs   r,   s   ```  ` @r&   call_repeatedlyzTimer.call_repeatedly~   s    !-vzz#tV,,	s	; 	; 	; 	; 	; 	; 	; 	; 
	;  dH555r'   c                    |
 |            }t          |t                    r?	 t          |          }n.# t          $ r!}|                     |          s Y d}~dS d}~ww xY w|                     |||          S )zEnter function into the scheduler.

        Arguments:
        ---------
            entry (~kombu.asynchronous.timer.Entry): Item to enter.
            eta (datetime.datetime): Scheduled time.
            priority (int): Unused.
        N)r   r   r   	Exceptionhandle_error_enter)r2   r   r   r   r   excs         r&   rg   zTimer.enter_at   s     ;$&&Cc8$$ 	"3''   ((--  {{3%000s   3 
AAAc                `    |                      | |            t          |          z   |          S r5   )rg   rT   )r2   rk   r   r   r   s        r&   rj   zTimer.enter_after   s)    }}UDDFFU4[[$8(CCCr'   c                F     || j         t          |||                     |S r5   )rX   r   )r2   r   r   r   pushs        r&   rx   zTimer._enter   s'    T[)C599:::r'   c                    	  |             d S # t           $ rC}|                     |          s#t                              d|d           Y d }~d S Y d }~d S d }~ww xY w)NzError in timer: %rT)exc_info)rv   rw   loggererror)r2   r   ry   s      r&   apply_entryzTimer.apply_entry   s    	GEGGGGG 	G 	G 	G$$S)) G13FFFFFFFFFG G G G G G	Gs   
 
A2AAc                B    | j         r|                      |           dS d S r9   )rW   )r2   r~   s     r&   rw   zTimer.handle_error   s-    = 	MM(###4	 	r'   c                    d S r5   rQ   r6   s    r&   rd   z
Timer.stop   s    r'   c              #     K   | j         }| j        }	 |rf|d         } |            |d         }	}||	k     r ||	|z
  |          dfV  n6 ||          }
|
|u r|d         }|j        sd|fV  \ |||
           ndV  m)zIterate over schedule.

        This iterator yields a tuple of ``(wait_seconds, entry)``,
        where if entry is :const:`None` the caller should wait
        for ``wait_seconds`` until it polls the schedule again.
           r   Nr   rI   )rV   rX   r-   )r2   minnowfunpopr|   rV   queueeventArp   r   eventBr   s               r&   __iter__zTimer.__iter__   s       (	! !q!688VAYS99#cCi66<<<<< SZZF'' &q	$~ ."&+--- UF++++    %	!r'   c                    g | j         d d <   d S r5   )rX   r6   s    r&   clearzTimer.clear   s    AAAr'   c                .    |                                  d S r5   )r;   )r2   r,   s     r&   r;   zTimer.cancel   s    r'   c                *    t          | j                  S r5   )lenrX   r6   s    r&   __len__zTimer.__len__   s    4;r'   c                    dS r9   rQ   r6   s    r&   __nonzero__zTimer.__nonzero__   s    tr'   c                j    t          | j                  }fd|gt          |          z  D             S )z%Snapshot of underlying datastructure.c                &    g | ]} |          S rQ   rQ   ).0v_pops     r&   
<listcomp>zTimer.queue.<locals>.<listcomp>   s!    888AQ888r'   )listrX   r   )r2   r   eventss    ` r&   r   zTimer.queue   s;     dk""8888&CKK!78888r'   c                    | S r5   rQ   r6   s    r&   schedulezTimer.schedule   s    r'   rI   )r[   r\   r]   r^   r_   r`   ra   rb   )rQ   Nr   )r>   rJ   rK   rL   r   rW   r3   rZ   re   rh   rl   rt   r   rg   rj   heapqheappushrx   r   rw   rd   r   heappopr   r   r;   r   r   rO   r   r   rQ   r'   r&   r   r   _   s       %%EH   
     K K K KO O O O6 6 6 6, #' 1 1 1 1( 12	 D D D D 16    G G G  
   y]! ! ! !>             9 9 9 X9
   X  r'   r   )(rL   
__future__r   r   syscollectionsr   r   	functoolsr   r   r   r   typingr	   weakrefr
   r1   
vine.utilsr   	kombu.logr   version_infozoneinfor   backports.zoneinfotypesr   __all__r>   r   rU   fromtimestampr!   hasattrrM   r   r   r   r   rQ   r'   r&   <module>r      s   ( ( " " " " " "  



 " " " " " "       $ $ $ $ $ $                         ) ) ) ) ) )                  v!!!!!!!++++++ $######
,	H		 q((5//22
'#*
+
+J{$@AA	 &.Xe__9 
 
 
 
 ( ( ( ( ( ( ( (VR R R R R R R R R Rr'   