
    Cjo                       S r SSKJr  SSKrSSKJrJrJrJrJ	r	  SSK
JrJrJrJrJr  SSKJrJr  SSKJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  \\/ \\   4   \/ \4   4   r   " S S\!5      r"\ " S S5      5       r#g)z

Contains the `Timer` class.
Timer objects are created by [set_interval][textual.message_pump.MessagePump.set_interval] or
    [set_timer][textual.message_pump.MessagePump.set_timer].
    )annotationsN)CancelledErrorEventTaskcreate_taskgather)Any	AwaitableCallableIterableUnion)Result	rich_repr)_timeevents)invoke)cached_property)
active_app)sleep)MessageTargetc                      \ rS rSrSrSrg)EventTargetGone   zVRaised if the timer event target has been deleted prior to the timer event being sent. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       _/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/textual/timer.pyr   r      s    `r!   r   c                      \ rS rSr% SrSrS\S'   SSSSSS	.               SS
 jjr\SS j5       r	SS jr
\SS j5       rSS jrSS jr\SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrSrg)Timer   a  A class to send timer-based events.

Args:
    event_target: The object which will receive the timer events.
    interval: The time between timer events, in seconds.
    name: A name to assign the event (for debugging).
    callback: An optional callback to invoke when the event is handled.
    repeat: The number of times to repeat the timer, or None to repeat forever.
    skip: Enable skipping of scheduled events that couldn't be sent in time.
    pause: Start the timer paused.
   int_timer_countNTF)namecallbackrepeatskippausec                  [        U5      U l        [        R                  " U5      U l        X l        Uc  SU R                   3OUU l        U =R                  S-  sl        X@l        XPl	        X`l
        S U l        SU l        Xpl        g )NzTimer#r&   F)repr_target_reprweakrefref_target	_intervalr(   r)   	_callback_repeat_skip_task_reset_original_pause)selfevent_targetintervalr)   r*   r+   r,   r-   s           r"   __init__Timer.__init__/   su     !.{{<0!48LfT../0d	Q!
"&
!$r!   c                \    [        5       nU R                  (       d  UR                  5         U$ N)r   r:   set)r;   events     r"   _activeTimer._activeF   s     ##IIKr!   c              #  j   #    U R                   v   SU R                  4v   SU R                  S 4v   g 7f)Nr)   r+   )r4   r)   r6   r;   s    r"   __rich_repr__Timer.__rich_repr__M   s/     nndiid**s   13c                @    U R                  5       nUc
  [        5       eU$ rA   )r3   r   )r;   targets     r"   rK   Timer.targetR   s     >!##r!   c                R    [        U R                  5       U R                  S9U l        g)zStart the timer.)r)   N)r   
_run_timerr)   r8   rG   s    r"   _startTimer._startY   s     !2C
r!   c                    U R                   c  gU R                  R                  5         U R                   R                  5         SU l         g)zStop the timer.N)r8   rD   rB   cancelrG   s    r"   stop
Timer.stop]   s6    ::


r!   c                   #    SS jn[        [        U5       Vs/ s H
  o2" U5      PM     sn6 I Sh  vN   gs  snf  N
7f)z\Stop a number of timers, and await their completion.

Args:
    timers: A number of timers.
c                   #    U R                   bQ  U R                  R                  5         U R                   R                  5          U R                   I Sh  vN   SU l         gg N! [         a     Nf = f7f)zLStop a timer and wait for it to finish.

Args:
    timer: A Timer instance.
N)r8   rD   rB   rR   r   )timers    r"   
stop_timer#Timer._stop_all.<locals>.stop_timern   sg      {{&!!#""$++%% # ' &% s<   AA4A$ A"A$ 	A4"A$ $
A1.A40A11A4N)rW   r$   returnNone)r   list)clstimersrX   rW   s       r"   	_stop_allTimer._stop_allf   s8     	# d6lClUz%(lCDDDCDs   ?8?=?c                8    U R                   R                  5         g)zKPause the timer.

A paused timer will not send events until it is resumed.
N)rD   clearrG   s    r"   r-   Timer.pause   s    
 	r!   c                F    U R                   R                  5         SU l        g)z1Reset the timer, so it starts from the beginning.TN)rD   rB   r9   rG   s    r"   resetTimer.reset   s    r!   c                8    U R                   R                  5         g)zResume a paused timer.N)rD   rB   rG   s    r"   resumeTimer.resume   s    r!   c                b   #     U R                  5       I Sh  vN   g N! [         a     gf = f7f)zRun the timer task.N)_runr   rG   s    r"   rN   Timer._run_timer   s*     	))+ 		s(   /  / 
,/,/c                  #    SnU R                   nU R                  nU R                    U R                  R                  5       I Sh  vN   [        R
                  " 5       nUb  X::  a  XAS-   U-  -   n[        R
                  " 5       nU R                  (       a  XV:  a  [        Xd-
  U-  S-   5      nMR  [        R
                  " 5       n[        SXV-
  5      n[        U5      I Sh  vN   US-  nU R                  R                  5       I Sh  vN   U R                  (       a   [        R
                  " 5       nSnSU l
        M   U R                  XQS9I Sh  vN   Uc  M  X::  a  M  gg GN  N N` N! [         a     gf = f7f)zRun the timer.r   Nr&   F)
next_timercount)r6   r4   rD   waitr   get_timer7   r'   maxr   r9   _tickr   )r;   ro   r6   r4   startrn   now	wait_times           r"   rk   
Timer._run   sD    ,,NN	ll!!! o!119	"9:J.."Czzj.S[I59:.."CAz/0I	"""QJE,,##%%%{{(#jjJjDDD# o!1 	" #% E" sy   AE?E&BE?#E)$&E?
E+5E?E/ E-E/ E?E?$E?)E?+E?-E/ /
E<9E?;E<<E?c                 #    [         R                  " 5       nUR                  (       a  gU R                  b   [	        U R                  5      I Sh  vN   g[        R                  " U UUU R                  S9nU R                  R                  U5        g NB! [
         a    e [         a  nUR                  U5         SnAgSnAff = f7f)zVTriggers the Timer's action: either call its callback, or sends an event to its targetN)rW   timero   r*   )r   get_exitr5   r   r   	Exception_handle_exceptionr   r$   rK   post_message)r;   rn   ro   apperrorrC   s         r"   rs   Timer._tick   s      nn99>>%-T^^,,, LL	E KK$$U+ -!   -%%e,,-s@   5CB BB >CB C)B?:C?CC)
r5   r4   r:   r6   r9   r7   r3   r0   r8   r)   )r<   r   r=   floatr)   z
str | Noner*   zTimerCallback | Noner+   z
int | Noner,   boolr-   r   rZ   r[   )rZ   r   )rZ   r   )rZ   r   )rZ   r[   )r^   zIterable[Timer]rZ   r[   )rn   r   ro   r'   rZ   r[   )r   r   r   r   r   r(   __annotations__r>   r   rD   rH   propertyrK   rO   rS   classmethodr_   r-   re   rh   rN   rk   rs   r    r   r!   r"   r$   r$      s    
 L#  )-!%#% %
 % '% % % % 
%.  +
  D E E0
<,r!   r$   )$r   
__future__r   r1   asyncior   r   r   r   r   typingr	   r
   r   r   r   	rich.reprr   r   textualr   r   textual._callbackr   textual._compatr   textual._contextr   textual._timer   textual._typesr   TimerCallbackr|   r   r$   r   r!   r"   <module>r      s    #  D D < < ' ! $ + '  (hr9S>12HRW4EEF 5ai a k, k, k,r!   