
    &`i                     l    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          ZdS )	    N)deque)Number)OptionalTuple)_CheckpointManager)TuneFunctionDecoderTuneFunctionEncoderc                        e Zd ZdZddee         fdZd Zddede	d	e
e         fd
Z fdZdefdZededd fd            Z x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                     d | _         d| _        d| _        d | _        d | _        i | _        t          d           | _        i | _        || _	        i | _
        d | _        d | _        d S )Nr   inf)
start_timenum_failuresnum_failures_after_restoreerror_filenamepickled_error_filenamelast_resultfloatlast_result_timemetric_analysis_n_stepsmetric_n_stepscheckpoint_manager_cached_json)selfr   s     o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/trainable/metadata.py__init__z_TrainingRunMetadata.__init__   sx     *+'"&*# !&u  "  AE     c                     d | _         d S )N)r   )r   s    r    invalidate_cachez%_TrainingRunMetadata.invalidate_cache,   s     r"      metricvaluestepc                    || j         vrw||||d| j         |<   i | j        |<   | j        D ]T}d                    |          }|| j         |         |<   t	          |g|          | j        |         t          |          <   Un]|pd}t          || j         |         d                   | j         |         d<   t          || j         |         d                   | j         |         d<   d|z  ||dz
  | j         |         d         z  z   z  | j         |         d<   || j         |         d<   | j        D ]}d                    |          }| j        |         t          |                                       |           t          | j        |         t          |                             t          | j        |         t          |                             z  | j         |         |<   |                                  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keys         r    update_metricz"_TrainingRunMetadata.update_metric/   s   ---	, ,D ( +-D'] O O%,,Q//49$V,S16;UGA6N6N6N#F+CFF33	O 91D25t+F3E:3 3D (/ 36t+F3E:3 3D (/ DETAX1Ef1Me1T$TTU  (/ 49D (0] = =%,,Q//#F+CFF3::5AAA47'/A75 5+F3CFF;<<5=$V,S11 	r"   c                     t                                          ||           |dvr|                                  d S d S )N>   r   )super__setattr__r$   )r   r5   r'   	__class__s      r    r9   z _TrainingRunMetadata.__setattr__R   sI    C'''&&&!!##### '&r"   returnc                     | j         >| j        }|                    dd            t          j        |dt
                    | _         | j         S )Nr      )indentcls)r   __dict__popjsondumpsr	   )r   datas     r    get_json_statez#_TrainingRunMetadata.get_json_stateW   sI    $=DHH^T*** $
4?R S S SD  r"   
json_statec                     t          j        |t                    } |             }|j                            |           |S )N)r?   )rB   loadsr   r@   update)r?   rF   staterun_metadatas       r    from_json_statez$_TrainingRunMetadata.from_json_state_   s?    
:+>???suu$$U+++r"   )r   )r%   )__name__
__module____qualname____doc__r   intr!   r$   r0   r   r   r6   r9   rE   classmethodrL   __classcell__)r:   s   @r    r   r   
   s         ! !c
 ! ! ! !4! ! !!  ! C !  ! hsm !  !  !  ! F$ $ $ $ $
! ! ! ! !  1G    [    r"   r   )rB   collectionsr   numbersr   typingr   r   &ray.train._internal.checkpoint_managerr   ray.tune.utils.serializationr   r	   r    r"   r    <module>rZ      s                 " " " " " " " " E E E E E E Q Q Q Q Q Q Q Q\ \ \ \ \ \ \ \ \ \r"   