
    df4                         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	  ed      w xY w)    )absolute_importwraps)BaseScheduler)	maybe_ref)reactorz+TwistedScheduler requires Twisted installedc                 .     t                fd       }|S )Nc                 H     | j                   j                  | g|i | y N)_reactorcallFromThread)selfargskwargsfuncs      W/home/api-vastappli/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                   b     e Zd ZdZdZdZ fdZed	 f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                 t    t        |j                  dt                    | _        t        t
        |   |       y )Nr   )r   popdefault_reactorr   superr   
_configure)r   config	__class__s     r   r   zTwistedScheduler._configure#   s*    !&**Y"HI08r   c                 L    t         t        |   |       | j                          y r   )r   r   shutdown_stop_timer)r   waitr   s     r   r    zTwistedScheduler.shutdown'   s    .t4r   c                     | j                          |,| j                  j                  || j                        | _        y y r   )r!   r   	callLaterwakeup_delayedcallr   wait_secondss     r   _start_timerzTwistedScheduler._start_timer,   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_timer1   s<    !2!2!9!9!;$$&! "<r   c                 f    | j                          | j                         }| j                  |       y r   )r!   _process_jobsr)   r'   s     r   r%   zTwistedScheduler.wakeup6   s*    ))+,'r   c                     ddl m}  |       S )Nr   )TwistedExecutor)apscheduler.executors.twistedr0   )r   r0   s     r   _create_default_executorz)TwistedScheduler._create_default_executor<   s    A  r   )T)__name__
__module____qualname____doc__r   r&   r   r   r    r)   r!   r%   r2   __classcell__)r   s   @r   r   r      sQ     HL9  S
"
 ( (
!r   r   N)
__future__r   	functoolsr   apscheduler.schedulers.baser   apscheduler.utilr   twisted.internetr   r   ImportErrorr   r    r   r   <module>r?      sJ    &  5 &E;
)!} )!  E
C
DDEs   / =