o
    }jh                     @   s<   d dl Z d dlZd dlmZmZ eeZG dd dZdS )    N)CallableOptionalc                   @   sF   e Zd Zdedeegef fddZdd Zdd Zd	efd
dZ	dS )
AsyncTimercallback
timer_calcc                 C   s   || _ || _d | _d| _d S )Nr   )r   r   timertries)selfr   r    r
   K/var/www/html/bot/env/lib/python3.10/site-packages/realtime/_async/timer.py__init__	   s   
zAsyncTimer.__init__c                 C   s<   d| _ | jr| j s| j  d | _td d S d S d S )Nr   zEAsyncTimer has been reset and any scheduler tasks have been cancelled)r   r   donecancelloggerdebug)r	   r
   r
   r   reset   s   
zAsyncTimer.resetc                 C   sV   | j r| j   |  jd7  _| | jd }td| d t| || _ d S )N   z!Scheduling callback to run after z	 seconds.)	r   r   r   r   r   r   asynciocreate_task
_run_timer)r	   delayr
   r
   r   schedule_timeout   s   
zAsyncTimer.schedule_timeoutr   c              
      s|   zt |I d H  |  I d H  W d S  t jy#   td Y d S  ty= } ztd|  W Y d }~d S d }~ww )NzAsyncTimer task was cancelled.zError in AsyncTimer callback: )r   sleepr   CancelledErrorr   r   	Exception	exception)r	   r   er
   r
   r   r   !   s   zAsyncTimer._run_timerN)
__name__
__module____qualname__r   intr   r   r   floatr   r
   r
   r
   r   r      s
    		r   )	r   loggingtypingr   r   	getLoggerr   r   r   r
   r
   r
   r   <module>   s
    
