o
    1 i                     @   s^   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZ G dd dZdS )	    N)deque)Number)OptionalTuple)_CheckpointManager)TuneFunctionDecoderTuneFunctionEncoderc                       s|   e Zd ZdZddee fddZdd Zdd	ed
e	de
e fddZ fddZdefddZededd fddZ  ZS )_TrainingRunMetadataa  Serializable struct for holding runtime trial metadata.

    Runtime metadata is data that changes and is updated on runtime. This includes
    e.g. the last result, the currently available checkpoints, and the number
    of errors encountered for a trial.
       
   n_stepsc                 C   sR   d | _ d| _d| _d | _d | _i | _td | _i | _|| _	i | _
d | _d | _d S )Nr   inf)
start_timeZnum_failuresZnum_failures_after_restoreZerror_filenameZpickled_error_filenameZlast_resultfloatZlast_result_timemetric_analysis_n_stepsmetric_n_stepsZcheckpoint_manager_cached_json)selfr    r   g/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/tune/trainable/metadata.py__init__   s   
z_TrainingRunMetadata.__init__c                 C   s
   d | _ d S )N)r   )r   r   r   r   invalidate_cache,   s   
z%_TrainingRunMetadata.invalidate_cache   metricvaluestepc                 C   sX  || j vr5||||d| j |< i | j|< | jD ]}d|}|| j | |< t|g|d| j| t|< qnq|p8d}t|| j | d | j | d< t|| j | d | j | d< d| ||d | j | d    | j | d< || j | d< | jD ].}d|}| j| t| | t	| j| t| t
| j| t|  | j | |< qw|   d S )	N)maxminavglastzlast-{:d}-avg)maxlenr   r   r   r    r!   )r   r   r   formatr   strr   r   appendsumlenr   )r   r   r   r   nkeyr   r   r   update_metric/   s>   



 

z"_TrainingRunMetadata.update_metricc                    s&   t  || |dvr|   d S d S )N>   r   )super__setattr__r   )r   r)   r   	__class__r   r   r,   R   s   z _TrainingRunMetadata.__setattr__returnc                 C   s4   | j d u r| j}|dd  tj|dtd| _ | j S )Nr      )indentcls)r   __dict__popjsondumpsr   )r   datar   r   r   get_json_stateW   s
   
z#_TrainingRunMetadata.get_json_state
json_statec                 C   s$   t j|td}|  }|j| |S )N)r2   )r5   loadsr   r3   update)r2   r9   stateZrun_metadatar   r   r   from_json_state_   s   z$_TrainingRunMetadata.from_json_state)r
   )r   )__name__
__module____qualname____doc__r   intr   r   r$   r   r   r*   r,   r8   classmethodr=   __classcell__r   r   r-   r   r	   
   s    #r	   )r5   collectionsr   numbersr   typingr   r   Z&ray.train._internal.checkpoint_managerr   Zray.tune.utils.serializationr   r   r	   r   r   r   r   <module>   s    