a
    $Fwj|                     @  sR   d dl mZ d dlmZ d dlmZmZ eddG dd dZG dd	 d	Zd
S )    )annotations)	dataclass)datetime	timedeltaT)frozenc                   @  s>   e Zd ZU dZded< dZded< dZded< dZded	< d
S )SchedulePolicy   intfast_seconds   rank_seconds<   candle_secondsi,  regime_secondsN)__name__
__module____qualname__r
   __annotations__r   r   r    r   r   ;/home/opc/hanz-radar/runtime/src/hanz_realtime/scheduler.pyr      s   
r   c                   @  s@   e Zd ZddddddZddd	d
ddZdddddZdS )SmartSchedulerNzSchedulePolicy | NoneNone)policyreturnc                 C  s   |pt  | _i | _d S )N)r   r   	_last_run)selfr   r   r   r   __init__   s    zSmartScheduler.__init__strr   bool)tasknowr   c                 C  s<   |  |}| j|}|d u s*|| |kr8|| j|< dS dS )NTF)	_intervalr   get)r   r   r    intervalpreviousr   r   r   due   s    

zSmartScheduler.duer   )r   r   c                 C  sB   | j j| j j| j j| j jd}||vr4td| t|| dS )N)ZfastZrankZcandleZregimezUnknown task: )seconds)r   r
   r   r   r   KeyErrorr   )r   r   mappingr   r   r   r!      s    zSmartScheduler._interval)N)r   r   r   r   r%   r!   r   r   r   r   r      s   r   N)
__future__r   dataclassesr   r   r   r   r   r   r   r   r   <module>   s
   