
    Qi                         d dl mZ d dlmZ d dlmZ d dlmZ 	 d dlm	Z
 d Z G d	 d
e      Zy# e$ rZ ed      edZ[ww xY w)    wraps)SchedulerNotRunningError)BaseScheduler)	maybe_ref)reactorz+TwistedScheduler requires Twisted installedNc                 .     t                fd       }|S )Nc                 H     | j                   j                  | g|i | y N)_reactorcallFromThread)selfargskwargsfuncs      I/app/.venv/lib/python3.12/site-packages/apscheduler/schedulers/twisted.pywrapperzrun_in_reactor.<locals>.wrapper   s#    $$$T4A$A&A    r   )r   r   s   ` r   run_in_reactorr      s"    
4[B B Nr   c                   j     e Zd ZdZdZdZ fdZed
 fd	       Zd
dZ	d Z
d Zed        Zd	 Z xZS )TwistedSchedulera%  
    A scheduler that runs on a Twisted reactor.

    Extra options:

    =========== ========================================================
    ``reactor`` Reactor instance to use (defaults to the global reactor)
    =========== ========================================================
    Nc                 l    t        |j                  dt                    | _        t        |   |       y )Nr   )r   popdefault_reactorr   super
_configure)r   config	__class__s     r   r   zTwistedScheduler._configure#   s'    !&**Y"HI6"r   c                 D    t         |   |       | j                          y r   )r   shutdown_stop_timer)r   waitr   s     r   	_shutdownzTwistedScheduler._shutdown'   s    r   c                 J    | j                   st        | j                  |       y r   )runningr   r#   )r   r"   s     r   r    zTwistedScheduler.shutdown,   s    ||**tr   c                     | j                          |,| j                  j                  || j                        | _        y y r   )r!   r   	callLaterwakeup_delayedcallr   wait_secondss     r   _start_timerzTwistedScheduler._start_timer2   s6    # $ 7 7dkk RD $r   c                     | j                   r8| j                   j                         r| j                   j                          | ` y y y r   )r)   activecancel)r   s    r   r!   zTwistedScheduler._stop_timer7   s<    !2!2!9!9!;$$&! "<r   c                 f    | j                          | j                         }| j                  |       y r   )r!   _process_jobsr,   r*   s     r   r(   zTwistedScheduler.wakeup<   s*    ))+,'r   c                     ddl m}  |       S )Nr   )TwistedExecutor)apscheduler.executors.twistedr3   )r   r3   s     r   _create_default_executorz)TwistedScheduler._create_default_executorB   s    A  r   )T)__name__
__module____qualname____doc__r   r)   r   r   r#   r    r,   r!   r(   r5   __classcell__)r   s   @r   r   r      sV     HL#  S
"
 ( (
!r   r   )	functoolsr   apscheduler.schedulersr   apscheduler.schedulers.baser   apscheduler.utilr   twisted.internetr   r   ImportErrorexcr   r    r   r   <module>rC      sM     ; 5 &N;
0!} 0!  N
C
D#MNs   / A	=A