a
    dK                     @   sF   d dl mZmZ d dlmZ d dlZd dlZG dd deeZdS )    )ABCMetaabstractmethod)	timedeltaNc                   @   s(   e Zd ZdZdZedd Zdd ZdS )BaseTriggerzQAbstract base class that defines the interface that every trigger must implement. c                 C   s   dS )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   )selfZprevious_fire_timenowr   r   U/var/www/html/django/DPS/env/lib/python3.9/site-packages/apscheduler/triggers/base.pyget_next_fire_time   s    zBaseTrigger.get_next_fire_timec                 C   s&   |du s|s|S |t td|d 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.
        Nr   )seconds)r   randomuniform)r   Znext_fire_timejitterr   r   r   r	   _apply_jitter   s    zBaseTrigger._apply_jitterN)__name__
__module____qualname____doc__	__slots__r   r
   r   r   r   r   r	   r      s
   
	r   )	abcr   r   datetimer   r   sixwith_metaclassr   r   r   r   r	   <module>   s   