
    Owg5                     @    d dl Z d dlmZmZ d dlmZ  G d de      Zy)    N)ABCMetaabstractmethod)	timedeltac                   *    e Zd ZdZdZed        Zd Zy)BaseTriggerzQAbstract base class that defines the interface that every trigger must implement. c                      y)a  
        Returns the next datetime to fire on, If no such datetime can be calculated, returns
        ``None``.

        :param datetime.datetime previous_fire_time: the previous time the trigger was fired
        :param datetime.datetime now: current datetime
        Nr   )selfprevious_fire_timenows      P/var/www/horilla/myenv/lib/python3.12/site-packages/apscheduler/triggers/base.pyget_next_fire_timezBaseTrigger.get_next_fire_time   s        c                 T    ||s|S |t        t        j                  d|            z   S )a  
        Randomize ``next_fire_time`` by adding a random value (the jitter).

        :param datetime.datetime|None next_fire_time: next fire time without jitter applied. If
            ``None``, returns ``None``.
        :param int|None jitter: maximum number of seconds to add to ``next_fire_time``
            (if ``None`` or ``0``, returns ``next_fire_time``)
        :param datetime.datetime now: current datetime
        :return datetime.datetime|None: next fire time with a jitter.
        r   )seconds)r   randomuniform)r
   next_fire_timejitterr   s       r   _apply_jitterzBaseTrigger._apply_jitter   s-     !!!	&..F2K LLLr   N)__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r      s"    [I Mr   r   )	metaclass)r   abcr   r   datetimer   r   r   r   r   <module>r      s     ' MG Mr   