
    AHjT                        d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
  G d de      Zd
dZd dlmZ  e e              y	)    )annotations)Futureget_running_loop)EventThreadperf_countersleepc                  2     e Zd Z	 	 d fdZd ZddZ xZS )Sleeperc                    d| _         d| _        t               | _        d | _        t               | _        t        | !  d       y )NFg        T)daemon)	_exit_sleep_timer   _eventfuturer   _loopsuper__init__)self	__class__s    F/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/_sleep.pyr   zSleeper.__init__	   s>     
g%)%'
%    c                .   	 | j                   j                          | j                  ry t        | j                         | j                   j                          | j                  J | j                  j                  | j                  j                  d        N)
r   waitr   r
   r   clearr   r   call_soon_threadsafe
set_result)r   s    r   runzSleeper.run   sp    KKzz$""#KK;;***JJ++DKK,B,BDI r   c                   K   | j                   j                         x}| _        || _        | j                  j                          | d {    y 7 wr   )r   create_futurer   r   r   set)r   
sleep_timer   s      r   r
   zSleeper.sleep   s<     #zz7799%s   AA
AAreturnNone)r$   floatr&   r'   )__name__
__module____qualname__r   r    r
   __classcell__)r   s   @r   r   r      s    &	&	Jr   r   c            
        K   t               } | j                          dd}t        ddd      D ]@  }d|z  } ||       d {   }||z  dz  dz
  }t        d|dz  d	d
|dz  d	d|dd       B y 7 0w)Nc                   K   t               }t               |z
  | k  rt        d       t               |z
  | k  rt               |z
  }|S w)Nr   r   )	sleep_forstartelapseds      r   profile_sleepz#check_sleeps.<locals>.profile_sleep)   sE     nu$y0!H nu$y0.5(s
   6AA   x         d   zsleep=i  z.01fz	ms clock=zms diff=z.02f%)r/   r(   r&   r(   )r   r0   rangeprint)sleeperr2   tr$   r1   
differences         r   check_sleepsr>   %   s     iGMMO 2sA 
U
%j11
*S0C7
Z_T*)GDL3FhzZ^N__`a	
	
1s   ?A4A21A4)r    Nr%   )
__future__r   asyncior   r   	threadingr   r   timer	   r
   r   r>   r     r   r   <module>rD      s1    " , # $f :
*  LN r   