o
    /hv                     @   sB   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 dZdS )    N)Timer)AnyCallable	CoroutineOptionalcastc                
   @   sZ   e Zd Zdedeg eeeedf  f ddfddZdddZ	dd	d
Z
defddZdS )r   secondsfunctionNreturnc                 C   s   || _ || _d | _d | _d S N)_milliseconds	_function_task_timer)selfr   r	    r   E/var/www/html/govbot/env/lib/python3.10/site-packages/gotrue/timer.py__init__   s   
zTimer.__init__c                    sl   t  jr! fdd} fdd}t |  _ j| d S t jd  j _d j_	 j
  d S )Nc                      s:   t  jd I d H  ttttd f   I d H  d S )N  )asynciosleepr   r   r   r   r   r   r   r   r   schedule   s   "zTimer.start.<locals>.schedulec                    s
   d  _ d S r   )r   )_r   r   r   cleanup   s   
zTimer.start.<locals>.cleanupr   T)r   iscoroutinefunctionr   create_taskr   add_done_callback_Timerr   r   daemonstart)r   r   r   r   r   r   r       s   zTimer.startc                 C   s<   | j d ur| j   d | _ | jd ur| j  d | _d S d S r   )r   cancelr   r   r   r   r   r!   "   s   




zTimer.cancelc                 C   s   | j d up| jd uo| j S r   )r   r   is_aliver   r   r   r   r"   *   s   
zTimer.is_alive)r
   N)__name__
__module____qualname__floatr   r   r   r   r   r    r!   boolr"   r   r   r   r   r      s    



r   )
r   	threadingr   r   typingr   r   r   r   r   r   r   r   r   <module>   s    