
    gv                     H    d dl Z d dlmZ d dlmZmZmZmZm	Z	  G d d      Zy)    N)Timer)AnyCallable	CoroutineOptionalcastc            
       X    e Zd Zdedeg eeeedf      f   ddfdZd	dZ	d	dZ
defdZy)
r   secondsfunctionNreturnc                 <    || _         || _        d | _        d | _        y N)_milliseconds	_function_task_timer)selfr
   r   s      A/var/www/openai/venv/lib/python3.12/site-packages/gotrue/timer.py__init__zTimer.__init__   s!    
 %!-1
(,    c                 t    t        j                   j                        rE fd} fd}t        j                   |              _         j                  j                  |       y t         j                  dz   j                         _        d j                  _	         j                  j                          y )Nc                     K   t        j                   j                  dz         d {    t        t        t
        t
        d f    j                                d {    y 7 97 w)N  )asynciosleepr   r   r   r   r   r   s   r   schedulezTimer.start.<locals>.schedule   sO     mmD$6$6$=>>>9S#t^4dnn6FGGG ?Gs!   &A'A#3A'A%A'%A'c                     d _         y r   )r   )_r   s    r   cleanupzTimer.start.<locals>.cleanup   s
    !
r   r   T)r   iscoroutinefunctionr   create_taskr   add_done_callback_Timerr   r   daemonstart)r   r   r    s   `  r   r&   zTimer.start   s    &&t~~6H" !,,XZ8DJJJ((1 !3!3d!:DNNKDK!%DKKKKr   c                     | j                   !| j                   j                          d | _         | j                  "| j                  j                          d | _        y y r   )r   cancelr   r   s    r   r(   zTimer.cancel"   sI    ::!JJDJ;;"KK DK #r   c                 v    | j                   d uxs* | j                  d uxr | j                  j                         S r   )r   r   is_aliver   s    r   r*   zTimer.is_alive*   s6    zz% 
KKt#>(<(<(>	
r   )r   N)__name__
__module____qualname__floatr   r   r   r   r   r&   r(   boolr*    r   r   r   r      sS    -- 2x	#sD.(ABBC- 
	- "
$ 
r   r   )
r   	threadingr   r$   typingr   r   r   r   r   r0   r   r   <module>r3      s     % ; ;'
 '
r   