a
    jFwj                     @  sf   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 eddG d	d
 d
Z	G dd dZ
dS )    )annotations)deque)	dataclass)datetime   )RadarSignalT)frozenc                   @  s6   e Zd ZU ded< ded< ded< ded< ded< d	S )
StatusChangestrsymbolmarketz
str | None
old_status
new_statusr   	timestampN)__name__
__module____qualname____annotations__ r   r   6/home/opc/hanz-radar/runtime/src/hanz_radar/history.pyr	   
   s
   
r	   c                   @  s@   e Zd ZddddddZddd	d
dZddddddZdS )RadarHistory  intNone)
max_eventsreturnc                 C  s   i | _ t|d| _d S )N)maxlen)_last_statusr   _events)selfr   r   r   r   __init__   s    zRadarHistory.__init__r   zStatusChange | None)signalr   c                 C  s^   |j |jf}| j|}|jj}||kr,d S t|j|j |||jd}|| j|< | j	| |S )N)r   r   r   r   r   )
r   r   r   getstatusvaluer	   r   r   append)r   r!   keyoldnewZchanger   r   r   record   s    
zRadarHistory.record2   zlist[StatusChange])limitr   c                 C  s   t | j| d  S )N)listr   )r   r+   r   r   r   recent+   s    zRadarHistory.recentN)r   )r*   )r   r   r   r    r)   r-   r   r   r   r   r      s   r   N)
__future__r   collectionsr   dataclassesr   r   modelsr   r	   r   r   r   r   r   <module>   s   