
    &`i                         d dl Z d dlZd dlZd dlZ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 j        e          Z G d de          Z G d	 d
          Z G d de          ZdS )    N)defaultdict)Path)Dict)Callback)Trialc                   (    e Zd ZdZ	 	 	 	 d	dZd ZdS )
FailureInjectorCallbackz3Adds random failure injection to the TrialExecutor.~/ray_bootstrap_config.yaml皙?r   Fc                     || _         t          |                                                                          | _        || _        || _        t          j                    | _	        d S N)
probabilityr   
expanduseras_posixconfig_pathdisabletime_between_checkstime	monotoniclast_fail_check)selfr   r   r   r   s        g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/utils/mock.py__init__z FailureInjectorCallback.__init__   sY     ',,7799BBDD#6 #~//    c           
         t           j                            | j                  sd S t	          j                    | j        | j        z   k     rd S t	          j                    | _        dd l}ddl	m
} d}d}t          j                    | j        k     r| j        st          j                    | j        k     }||k     r	  || j        d|d            d S # |j        j        $ rS |dz  }t                               d                    t'          |          t'          ||z
                                 Y nw xY w||k     d S d S d S d S )Nr   )	kill_node   T)yeshardoverride_cluster_name   z@Killing random node failed in attempt {}. Retrying {} more times)ospathexistsr   r   r   r   r   click ray.autoscaler._private.commandsr   randomr   r   
exceptionsClickExceptionlogger	exceptionformatstr)r   infor%   r   failuresmax_failuresshould_terminates          r   on_step_beginz%FailureInjectorCallback.on_step_begin!   s   w~~d.// 	F>d2T5MMMMF#~//>>>>>>=??T---dl-%}1AA\))I( -.2	    F'6   MH$$117MM3|h/F+G+G2 2     \)))) .--- *)s   9C AD10D1N)r
   r   r   F)__name__
__module____qualname____doc__r   r2    r   r   r	   r	      sK        == 20 0 0 0! ! ! ! !r   r	   c                   L    e Zd ZdZd Zdeeef         fdZdefdZ	de
fdZdS )	TrialStatusSnapshotzvA sequence of statuses of trials as they progress.

    If all trials keep previous status, no snapshot is taken.
    c                     g | _         d S r   	_snapshot)r   s    r   r   zTrialStatusSnapshot.__init__K   s    r   new_snapshotc                 v    |sdS | j         r|| j         d         k    r| j                             |           dS dS )z*May append a new snapshot to the sequence.N)r<   append)r   r=   s     r   r@   zTrialStatusSnapshot.appendN   sO     	F~ 	01C!C!CN!!,///// "D!Cr   returnc                     d}| j         D ]4}d}|D ]}||         t          j        k    r|dz  }t          ||          }5|S )zOutputs the max number of running trials at a given time.

        Usually used to assert certain number given resource restrictions.
        r   r!   )r<   r   RUNNINGmax)r   resultsnapshotcounttrial_ids        r   max_running_trialsz&TrialStatusSnapshot.max_running_trialsV   s`    
  	( 	(HE$  H%66QJE''FFr   c                 f    | j         sdS | j         d         t          fdD                       S )z"True if all trials are terminated.Fr?   c              3   D   K   | ]}|         t           j        k    V  d S r   )r   
TERMINATED).0rH   last_snapshots     r   	<genexpr>z@TrialStatusSnapshot.all_trials_are_terminated.<locals>.<genexpr>j   sA       
 
<DM(#u'77
 
 
 
 
 
r   )r<   all)r   rN   s    @r   all_trials_are_terminatedz-TrialStatusSnapshot.all_trials_are_terminatede   sV    ~ 	5r* 
 
 
 
HU
 
 
 
 
 	
r   N)r3   r4   r5   r6   r   r   r-   r@   intrI   boolrQ   r7   r   r   r9   r9   E   s         
  04S> 0 0 0 0C    
4 
 
 
 
 
 
r   r9   c                   $    e Zd ZdZdefdZd ZdS )TrialStatusSnapshotTakerzCollects a sequence of statuses of trials as they progress.

    If all trials keep previous status, no snapshot is taken.
    rF   c                     || _         d S r   r;   )r   rF   s     r   r   z!TrialStatusSnapshotTaker.__init__u   s    !r   c                     t          t                    }|D ]}|j        ||j        <   | j                            |           d S r   )r   r-   statusrH   r<   r@   )r   	iterationtrialskwargsr=   trials         r   on_step_endz$TrialStatusSnapshotTaker.on_step_endx   sK    "3'' 	8 	8E+0<L((l+++++r   N)r3   r4   r5   r6   r9   r   r]   r7   r   r   rU   rU   o   sI         
"!4 " " " ", , , , ,r   rU   )loggingr"   r'   r   collectionsr   pathlibr   typingr   ray.tune.callbackr   ray.tune.experimentr   	getLoggerr3   r*   r	   r9   rU   r7   r   r   <module>re      s    				   # # # # # #             & & & & & & % % % % % %		8	$	$3 3 3 3 3h 3 3 3l'
 '
 '
 '
 '
 '
 '
 '
T, , , , ,x , , , , ,r   