
…Nðh-  ã               @   sa   d  d l  m Z m Z d  d l m Z d  d l Z d  d l Z Gd d „  d e j e ƒ ƒ Z d S)é    )ÚABCMetaÚabstractmethod)Ú	timedeltaNc               @   s:   e  Z d  Z d Z f  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
        N© )ÚselfZprevious_fire_timeÚnowr   r   úU/mod/web/acousticsspace/venv/lib/python3.5/site-packages/apscheduler/triggers/base.pyÚget_next_fire_time   s    zBaseTrigger.get_next_fire_timec             C   sK   | d k s | r | S| t  d t j | | ƒ ƒ } | | k  rG | S| S)a¾  
        Randomize ``next_fire_time`` by adding or subtracting a random value (the jitter). If the
        resulting datetime is in the past, returns the initial ``next_fire_time`` without jitter.

        ``next_fire_time - jitter <= result <= next_fire_time + 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 or subtract 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.
        NÚseconds)r   ÚrandomÚuniform)r   Znext_fire_timeÚjitterr   Znext_fire_time_with_jitterr   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   