U
    #ö†iV  ã                   @   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ÚUnionÚcastc                   @   sb   e Zd Zeeg eeeedf df f ddœdd„Zddœdd„Z	ddœdd	„Z
edœd
d„ZdS )r   N)ÚsecondsÚfunctionÚreturnc                 C   s   || _ || _d | _d | _d S ©N)Ú_millisecondsÚ	_functionÚ_taskÚ_timer)Úselfr   r	   © r   ú0/tmp/pip-unpacked-wheel-b8wmx3ip/gotrue/timer.pyÚ__init__   s    zTimer.__init__)r
   c                    sb   t  ˆ j¡r@‡ fdd„}‡ fdd„}t  |ƒ ¡ˆ _ˆ j |¡ ntˆ jd ˆ jƒˆ _ˆ j 	¡  d S )Nc                   “   s8   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   )
r   Úiscoroutinefunctionr   Zcreate_taskr   Zadd_done_callbackÚ_Timerr   r   Ústart)r   r   r   r   r   r   r      s    zTimer.startc                 C   s8   | j d k	r| j  ¡  d | _ | jd k	r4| j ¡  d | _d S r   )r   Úcancelr   r   r   r   r   r   !   s    



zTimer.cancelc                 C   s   | j d k	p| jd k	o| j ¡ S r   )r   r   Úis_aliver   r   r   r   r   )   s    
ÿzTimer.is_alive)Ú__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   