
    &`i)                     0	   d dl Z d dlZd dlZd dlZd dlZd dlZ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mZmZmZmZmZmZmZ d dlZd dlZd dlZd dlmZmZ d dlm Z m!Z!m"Z"m#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- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 	 d dl9Z9d dl:Z9d dl;Z9n# e<$ r dZ9Y nw xY w ej=        e>          Z? ej@        e1de2de'de3de4de0di          ZAh dZBeCeDejE        ejF        ejG        ejH         eId          hZJe-jK        e-jL        e-jM        e-jN        e-jO        gZP G d de          ZQejR        jS        T                                ZUdeeCeQe8f         deeQ         fdZVdeeWef         deeW         fdZXdeDdeDdeeWeWf         fdZYd ee-         deeWee-         f         fd!ZZd ee-         dee-         fd"Z[dgd ee-         d$eCdeeW         fd%Z\d ee-         d&eeW         d'eeW         deee-         eeW         f         fd(Z]e G d) d*                      Z^e G d+ d,                      Z_dhd/ed0eCd1e`defd2Zad3e-d4eeW         d5eeW         deeW         fd6Zb	 did7eWd ee-         d4eeW         d5eeW         d8e`dee^         fd9Zc	 	 djd ee-         d4eeW         d5eeW         d:e`d;e`de_fd<Zdd3e-d&eWfd=Ze	 dkd?eWd@edAeWdeeeWeWf                  fdBZf	 	 	 dldCedDee         dEee         dFee         fdGZgejh        ryejh        ji        rmejh        ji        j                    dH          rN e" e!dIdJdJdK           e!dLdJdJdM          d e!dNdJdJdO           e dPdQdP           e dPdQdP          dRdS          ZknM e" e!dTdUdUdT           e!dTdUdUdT          d e!dTdUdUdT           e dVdQdV           e dVdQdV          dRdS          Zk	 	 	 	 dmdCedWeeW         dDeeeW                  dEeeeW                  dXeeeW                  f
dYZl G dZ d[e+          Zm	 	 	 	 	 dnd\eQd]eCd^ee%         d&eeW         d'eeW         dee         d_eeeeW         eeeWeWf                  f                  fd`Zn G da dbem          Zo G dc ddeo          Zp G de dfem          ZqdS )o    N)	dataclass)IntEnum)Any
CollectionDictIterableListOptionalTupleUnion)flatten_dictunflattened_lookup)DataRowLineTableFormattabulate)AirEntrypoint)TRAINING_ITERATION)
Checkpoint)Callback)Trial)AUTO_RESULT_KEYSEPISODE_REWARD_MEANMEAN_ACCURACY	MEAN_LOSSTIME_TOTAL_STIMESTEPS_TOTAL)Domain)	Verbosityacclossiterztotal time (s)tsreward>   piddatedoneconfignode_iphostnametrial_id	timestamp
_report_onexperiment_tagshould_checkpointtime_since_restoreiterations_since_restorec                        e Zd ZdZdZdZd ZdS )AirVerbosityr         c                 *    t          | j                  S N)strvalueselfs    p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/experimental/output.py__repr__zAirVerbosity.__repr__k   s    4:    N)__name__
__module____qualname__SILENTDEFAULTVERBOSEr=    r>   r<   r3   r3   f   s2        FGG    r>   r3   verbosereturnc                     t           j                            dd          dk    rd S t          | t                    r| S t          | t
                    r| n| j        }t          d|          }t	          |          S )NRAY_AIR_NEW_OUTPUT10r5   )osenvironget
isinstancer3   intr9   min)rF   verbose_ints     r<   get_air_verbosityrS   r   su     
z~~*C00C77t'<(( '55H''7=K a%%K$$$r>   r(   c                    g }t          |           }|                                D ]a\  }}t          |t                    r|                    |           |                    d          r|                    |d d                    b|S )Nz/grid_searchi)r   itemsrO   r   appendendswith)r(   paramsflat_configkeyvals        r<   _infer_paramsr\      s    Fv&&K%%'' % %Sc6"" 	MM# <<'' 	%MM#dsd)$$$Mr>   
start_timecurrent_timec                    t           j                             |          }t           j                             |           }||z
  }|                                }t          |dz            }||dz  z  }t          |dz            }||dz  z  }t          |dz            }t          ||dz  z
            }	d}
|dk    r	|
|ddz  }
|dk    s|
r	|
|ddz  }
|dk    s|
r	|
|dd	z  }
|
|	dd
z  }
|d|
fS )a  Get strings representing the current and elapsed time.

    Args:
        start_time: POSIX timestamp of the start of the tune run
        current_time: POSIX timestamp giving the current time

    Returns:
        Current time and elapsed time for the current run
    iQ i  <    r   dzd zhr zmin sz%Y-%m-%d %H:%M:%S)datetimefromtimestamptotal_secondsrP   )r]   r^   current_time_dtstart_time_dtdeltarestdayshoursminutessecondsrunning_for_strs              r<   _get_time_strrp      s7    '55lCCO%33J??M /- ?E  Dt%&&DDL!!D!""EEWD$"*ooG$2%&&GOaxxd====(qyyOye????*{{o{g-----'&O11?BBr>   trialsc                     t          j        t                    }| D ]"}||j                                     |           #|S r7   )collectionsdefaultdictliststatusrV   )rq   trials_by_statets      r<   _get_trials_by_statery      sE    !-d33O , ,!((++++r>   c                     d | D             S )Nc                      g | ]}|j         	|S rE   )
error_file).0rx   s     r<   
<listcomp>z*_get_trials_with_error.<locals>.<listcomp>   s    ...!.A...r>   rE   )rq   s    r<   _get_trials_with_errorr      s    ..v....r>      limitc                    t          j                    }| D ]}|j        s
|j                                        D ]j\  }}|t          vr$|t
          vrt          |          t          v rd||<   t          |          |k    r%t          |
                                          c c S kt          |
                                          S )zTry to infer the metrics to print out.

    By default, only the first 4 meaningful metrics in `last_result` will be
    inferred as user implied metrics.
    ra   )rs   OrderedDictlast_resultrU   DEFAULT_COLUMNSr   typeVALID_SUMMARY_TYPESlenru   keys)rq   r   resultrx   metricr9   s         r<   _infer_user_metricsr      s     $&&F 
+ 
+} 	]0022 	+ 	+MFE_,,!111E{{&999)+v6{{e##FKKMM******* $	+ r>   r   modec                     | r|r|sdS |dk    rdnd}t          d          }d}| D ]H}|j        s
t          ||j        d          }t          j        |          r6|r	||z  |k    r||z  }|}I||fS )a9  
    Returns the best trial and the metric key. If anything is empty or None,
    returns a trivial result of None, None.

    Args:
        trials: List of trials.
        metric: Metric that trials are being ranked.
        mode: One of "min" or "max".

    Returns:
         Best trial and the metric key.
    NNmaxg      ?g      -infNdefault)floatr   r   pdisnull)rq   r   r   	metric_opbest_metric
best_trialrx   metric_values           r<   _current_best_trialr      s       t zu}}$I--KJ  } 	)&!-NNN9\"" 	 	\I5CC&2KJvr>   c                   <    e Zd ZU eee                  ed<   eed<   dS )_PerStatusTrialTableDatatrial_infos	more_infoN)r?   r@   rA   r	   r8   __annotations__rE   r>   r<   r   r      s-         d3i   NNNNNr>   r   c                   <    e Zd ZU ee         ed<   ee         ed<   dS )_TrialTableDataheaderdataN)r?   r@   rA   r	   r8   r   r   rE   r>   r<   r   r     s4         I
'
((((((r>   r      Fr9   max_lenwrapc                 |   | -t          | t          t          t          j        t
          f          r| S t          |           }t          |          |k    r|S |rTt          |           |dz  k    rd|d|dz  z
  d         z   } t          j	        | |          }d
                    |          S d|d|z
  d         z   }|S )a=  Abbreviate a string representation of an object to `max_len` characters.

    For numbers, booleans and None, the original value will be returned for
    correct rendering in the table formatting tool.

    Args:
        value: Object to be represented as a string.
        max_len: Maximum return string length.
    Nr5   z...   )width
)rO   rP   r   numbersNumberboolr8   r   textwrapr   join)r9   r   r   stringwrappedr   s         r<   _max_lenr     s     }
53w~t*LMM}ZZF
6{{g " u::!##FA1$5#8#899E-W555yy!!!VQ[OO,,FMr>   trial
param_keysmetric_keysc                       j         t                      j        g}|                     fd|D                        |                    fd|D                        |S )zReturns the following information about a trial:

    name | status | metrics...

    Args:
        trial: Trial to get information for.
        param_keys: Names of parameters to include.
        metric_keys: Names of metrics to include.
    c           	      X    g | ]&}t          t          |j        d                     'S Nr   )r   r   r(   )r}   paramr   s     r<   r~   z#_get_trial_info.<locals>.<listcomp>6  sI     	
 	
 	
  "5%,EEE 	
 	
 	
r>   c           	      N    g | ]!}t          t          |d                     "S r   )r   r   )r}   r   r   s     r<   r~   z#_get_trial_info.<locals>.<listcomp>?  sG     	
 	
 	
  "664@@@ 	
 	
 	
r>   )r   r8   rv   extend)r   r   r   
trial_infor   s   `   @r<   _get_trial_infor   %  s     Fe**el+J 	
 	
 	
 	
 $		
 	
 	
   	
 	
 	
 	
 &		
 	
 	
   r>   rv   force_max_rowsc                    |rdnt           j        }|sdS t                      }d}|D ]T}t          |          |k    rt          |          |z
  }	|	 d|  } n%|                    t          |||                     Ut          ||          S )aS  Gather all information of trials pertained to one `status`.

    Args:
        status: The trial status of interest.
        trials: all the trials of that status.
        param_keys: *Ordered* list of parameters to be displayed in the table.
        metric_keys: *Ordered* list of metrics to be displayed in the table.
            Including both default and user defined.
        force_max_rows: Whether or not to enforce a max row number for this status.
            If True, only a max of `5` rows will be shown.

    Returns:
        All information of trials pertained to the `status`.
       Nz more )mathinfru   r   rV   r   r   )
rv   rq   r   r   r   max_rowr   r   rx   	remainings
             r<    _get_trial_table_data_per_statusr   I  s    , "/aatxG t&&KI H H{w&&Fg-I$44F44IE?1j+FFGGGG#K;;;r>   all_rowswrap_headersc           
          d}dt                     } fd|D             }fd|D             }fd|D             }d t          ||          D             }	|}
ddg|
z   |	z   }t                      }t          D ]G}t	          |||         ||| ot                     |k              }|r|                    |           Ht          ||          S )	as  Generate a table showing the current progress of tuning trials.

    Args:
        trials: List of trials for which progress is to be shown.
        param_keys: Ordered list of parameters to be displayed in the table.
        metric_keys: Ordered list of metrics to be displayed in the table.
            Including both default and user defined.
            Will only be shown if at least one trial is having the key.
        all_rows: Force to show all rows.
        wrap_headers: If True, header columns can be wrapped with ``
``.

    Returns:
        Trial table data, including header and trial table per each status.
    r   c                 L    g | ]t          fd D                        S )c              3   J   K   | ]}t          |j        d           d uV  d S r   )r   r   )r}   rx   ks     r<   	<genexpr>z3_get_trial_table_data.<locals>.<listcomp>.<genexpr>  sM       
 
 q!->>>dJ
 
 
 
 
 
r>   )any)r}   r   rq   s    @r<   r~   z)_get_trial_table_data.<locals>.<listcomp>  s`        
 
 
 

 
 
 
 
	  r>   c                 4    g | ]}t          |           S )r   r   r   r}   r   max_column_lengthr   s     r<   r~   z)_get_trial_table_data.<locals>.<listcomp>  s6          FG-LAAA     r>   c                 4    g | ]}t          |           S r   r   r   s     r<   r~   z)_get_trial_table_data.<locals>.<listcomp>  s6       FG-LAAA  r>   c                 D    g | ]\  }}|t           v rt           |         n|S rE   )r   )r}   r   	formatteds      r<   r~   z)_get_trial_table_data.<locals>.<listcomp>  s@       FI $*_#<#<)  r>   
Trial namerv   )r   r   r   )ry   zipru   ORDERr   r   rV   r   )rq   r   r   r   r   max_trial_num_to_showrw   formatted_metric_columnsformatted_param_columnsmetric_headerparam_headerr   
trial_datat_statustrial_data_per_statusr   s   `   `          @r<   _get_trial_table_datar   n  sn   , *622O     K         KV         KU   !$[2J!K!K  M
 +L H%4}DFJ 	5 	5 @H%!#'<OCKK:O,O!
 !
 !
 ! 	534446:...r>   c                     t          || j        d          }| j                            di           t                                                    }fd|D             }d| j         d| d| d| S )	z:Returns a readable message stating the current best trial.Nr   r(   c                 2    i | ]}|t          |          S rE   )r   )r}   pr(   s     r<   
<dictcomp>z#_best_trial_str.<locals>.<dictcomp>  s&    JJJ1a#Av..JJJr>   zCurrent best trial: z with =z and params=)r   r   rN   ru   r   r+   )r   r   r[   parameter_columnsrX   r(   s        @r<   _best_trial_strr     s     VU%6
E
E
EC""8R00FV[[]]++JJJJ8IJJJF	u~ 	 	V 	 	c 	 		 	r>   ra   rZ   itemprefixc              #     K   || z   } t          |t          j                  r|j        }t          |t                    r| |d                    d          fV  d S t          |t                    r^t          |          }t          |	                                          D ]+\  }}| dz   t          |          z   t          |          fV  ,d S | t          |d          fV  d S )Nz.5frK   /r   )rO   argparse	Namespace__dict__r   rstripdictr   sortedrU   r8   r   )rZ   r   r   	flattenedr   vs         r<   _render_table_itemr     s      3,C$*++ }$ 	& d=='',,,,,,,,	D$		 & &&	9??,,-- 	2 	2DAq)c!ff$hqkk11111	2 	2 8D"%%%%%%%%r>   r   includeexclude
upper_keysc                    |pt                      }|pt                      }|pt                      }g }g }t          |                                           D ]p\  }}||v r
t          t	          |          |          D ]H\  }}	||v r
|r	||vr||vr||v r|                    ||	g           1|                    ||	g           Iq|s|S |s|S ||z   S )a  Get ``data`` dict as table rows.

    If specified, excluded keys are removed. Excluded keys can either be
    fully specified (e.g. ``foo/bar/baz``) or specify a top-level dictionary
    (e.g. ``foo``), but no intermediate levels (e.g. ``foo/bar``). If this is
    needed, we can revisit the logic at a later point.

    The same is true for included keys. If a top-level key is included (e.g. ``foo``)
    then all sub keys will be included, too, except if they are excluded.

    If keys are both excluded and included, exclusion takes precedence. Thus, if
    ``foo`` is excluded but ``foo/bar`` is included, it won't show up in the output.
    )setr   rU   r   r8   rV   )
r   r   r   r   upperlowerrZ   r9   r   r   s
             r<   _get_dict_as_table_datar     s!   & GG$suuJEETZZ\\** % %
U'>>&s3xx77 	% 	%DAq G||  3g--!72B2Bj  aV$$$$aV$$$$	%"   u}r>   utfu   ╭u   ─u   ╮u   ├u   ┤u   ╰u   ╯u   │ r4   )	lineabovelinebelowheaderlinebetweenrows	linebelow	headerrowdatarowpaddingwith_header_hide+-|r   divisionc                     t          | |||          }|r|dgng }|sd S t          t          ||dt                               d S )N)r   r   r   r   ra   )leftright)headerscolaligntablefmt)r   printr   AIR_TABULATE_TABLEFMT)r   r   r   r   r  
table_datar  s          r<   _print_dict_as_tabler  +  s|     )7G  J %,vrll"G 	&*		
 	
 	
    r>   c                   6   e Zd ZdZdZdZdZdZdZ	 d*de	de
eee         eeeef                  f                  fdZede	fd            Z	 d*d	e
e         fd
ZdefdZd Zded         fdZ	 d*dededededede
e         fdZed             ZdddefdZdddefdZd+de
e         defdZd  Zd!edee          d"e defd#Z!d!edee          d"e fd$Z"d!eded         d"dfd%Z#d!eded         d"dfd&Z$d!edee          d"e d'e%fd(Z&d!edee          d"e fd)Z'dS ),ProgressReporterz&Periodically prints out status update.   N	verbosityprogress_metricsc                     || _         t          j                    | _        t          d          | _        t          j                    | _        || _        i | _        d| _        dS )zC

        Args:
            verbosity: AirVerbosity level.
        r   N)
_verbositytime_start_timer   _last_heartbeat_time_progress_metrics_trial_last_printed_results	_in_block)r;   r  r  s      r<   __init__zProgressReporter.__init__P  sP     $9;;$)&MM!9;;!1+-(r>   rG   c                     | j         S r7   )r  r:   s    r<   r  zProgressReporter.verbosityc  s
    r>   r]   c                     || _         d S r7   )r  )r;   r]   kwargss      r<   setupzProgressReporter.setupg  s    
 &r>   	indicatorc                 R    | j         |k    r|                                  || _         d S r7   )r#  
_end_block)r;   r)  s     r<   _start_blockzProgressReporter._start_blockn  s*    >Y&&OO"r>   c                 @    | j         rt          d           d | _         d S )Nra   )r#  r  r:   s    r<   r+  zProgressReporter._end_blocks  s"    > 	"IIIr>   rq   r   c                 .    |                                   d S r7   )r+  )r;   rq   infos      r<   on_experiment_endz"ProgressReporter.on_experiment_endx  s    r>   experiment_nameexperiment_pathsearcher_strscheduler_strtotal_num_samplestensorboard_pathc                     |                      d           t          d|            |rt          d| d           d S d S )N	exp_startz
View detailed results here: zGTo visualize your results with TensorBoard, run: `tensorboard --logdir `)r,  r  )r;   r1  r2  r3  r4  r5  r6  r'  s           r<   experiment_startedz#ProgressReporter.experiment_started{  st     	+&&&@@@AAA 	=)9= = =    	 	r>   c                 f    t          | j        t          j                              \  }}d| d|z   S )NzCurrent time: . Total running time: )rp   r  r  )r;   current_time_strrunning_time_strs      r<   _time_heartbeat_strz$ProgressReporter._time_heartbeat_str  sC    -:dikk.
 .
** F-EEEHXX	
r>   FforcerA  c                    | j         | j        k     rd S |s$t          j                    | j        z
  | j        k    r+ | j        |g|R d|i t          j                    | _        d S d S )NrA  )r  _heartbeat_thresholdr  r   _heartbeat_freq_print_heartbeatr;   rq   rA  argss       r<   print_heartbeatz ProgressReporter.print_heartbeat  sz    ?T666F 	4DIKK$";;t?SSS!D!&=4===u===(,	D%%% TSr>   c                    t           r7   NotImplementedErrorrF  s       r<   rE  z!ProgressReporter._print_heartbeat      !!r>   r   c                 <   |p|j         }| j                            |j        d          }|                    t          d          }||k    s|rOt          || j                            |           d| j        t          t                     || j        |j        <   dS dS )zHOnly print result if a different result has been reported, or force=Truer   z result)r   r   r   r  N)r   r"  rN   r+   r   r  _addressing_tmplformatr!  BLACKLISTED_KEYSr   )r;   r   r   rA  last_result_iter	this_iters         r<   _print_resultzProgressReporter._print_result  s    ,5,;??PRSSJJ1155	(((E( /66u==FFF.()    @ID,U^<<< )(r>   c                 h    t          |j        | j                            |           d           d S )Nz config)r   )r  r(   rO  rP  )r;   r   s     r<   _print_configzProgressReporter._print_config  sD    LD$9$@$@$G$G!P!P!P	
 	
 	
 	
 	
 	
r>   	iterationr   c                 p   | j         | j        k     rd S |                     d| d|t                               t	          | j        t          j                              \  }}t          | j        	                    |           d|t                    d| d|z              | 
                    ||           d S )Ntrial__result_z finished iteration z at r<  )r  _intermediate_result_verbosityr,  r   rp   r  r  r  rO  rP  rT  )r;   rW  rq   r   r   r/  curr_time_strr>  s           r<   on_trial_resultz ProgressReporter.on_trial_result  s     >D???FN5NN&9K2LNNOOO*78H$)++*V*V''$++E22 8 8"();"<8 88 8 8:JK	
 	
 	

 	5&)))))r>   c                    | j         | j        k     rd S t          | j        t	          j                              \  }}d}|j        r t          |j        v r|j        t                   }|                     d| d           t          | j	        
                    |           d| d| d|z              |                     |           d S )Nr   rY  	_completez completed after  iterations at r<  )r  _start_end_verbosityrp   r  r  r   r   r,  r  rO  rP  rT  r;   rW  rq   r   r/  r\  r>  finished_iters           r<   on_trial_completez"ProgressReporter.on_trial_complete  s     >D555F*78H$)++*V*V'' 	B!3u7H!H!H!-.@AM35333444$++E22 8 8,8 88 8 8:JK	
 	
 	

 	5!!!!!r>   c                 z   t          | j        t          j                              \  }}d}|j        r t          |j        v r|j        t                   }|                     d| d           t          | j                            |           d| d| d| d|j	         	           | 
                    |           d S )Nr   rY  _errorz errored after r`  r<  z
Error file: )rp   r  r  r   r   r,  r  rO  rP  r|   rT  rb  s           r<   on_trial_errorzProgressReporter.on_trial_error  s     +88H$)++*V*V'' 	B!3u7H!H!H!-.@AM05000111$++E22 . .*. .. .7G. . !+. .	
 	
 	
 	5!!!!!r>   c                 (     | j         d|||d| d S )N)rW  rq   r   rE   )rg  )r;   rW  rq   r   r/  s        r<   on_trial_recoverz!ProgressReporter.on_trial_recover  s,     	TieTTtTTTTTr>   
checkpointc                 >   | j         | j        k     rd S d}|j        r t          |j        v r|j        t                   }|                     d| d|            d|j        j         d|j         }t          | j	        
                    |           d| d|            d S )N?rY  rZ  ()z" saved a checkpoint for iteration z at: )r  r[  r   r   r,  
filesystem	type_namepathr  rO  rP  )r;   rW  rq   r   rj  r/  
saved_iterlocs           r<   on_checkpointzProgressReporter.on_checkpoint  s     ?T@@@F
 	?!3u7H!H!H*+=>J>5>>*>>???E*'1EEJOEE$++E22  0:  	
 	
 	
 	
 	
r>   c                 ^   | j         | j        k     rd S t          |j                  }|                     d| d           |rAt          | j                            |           d           |                     |           d S t          | j                            |           d           d S )NrY  _startz started with configuration:z& started without custom configuration.)	r  ra  r   r(   r,  r  rO  rP  rV  )r;   rW  rq   r   r/  
has_configs         r<   on_trial_startzProgressReporter.on_trial_start  s    >D555F%,''
05000111 		(//66XXX   u%%%%%(//66 9 9 9    r>   r7   )NF)(r?   r@   rA   __doc__rD  rC  ra  r[  rO  r3   r
   r   r	   r8   r   r$  propertyr  r   r(  r   r,  r+  r0  rP   r:  r?  r   rH  rE  rT  rV  r   r]  rd  rg  ri  r   rt  rx  rE   r>   r<   r  r  E  ss       00 O%)"
 NR  #5cDc3h4H)H#IJ   & <    X
 '+& &UO& & & &#c # # # #
  
W     +/   	
   #3-   & 
 
 X
 <A 4 4 4D 4 4 4 4 =B " " "T " " " "I I8D> I I I I I"
 
 

** U* 	*
 * * * *&""&*5k":?" " " "$""&*7m"<C" " " ""UU&*7mU<CU U U U


 U
 	

 
 
 
 
2 T%[       r>   r  r  num_samples
entrypointr  c                     |t           j        t           j        t           j        hv rt	          | |||||          }nt          | |          }|S )N)r{  r   r   r(   r  )r  )r   TUNE_RUNTUNE_RUN_EXPERIMENTSTUNERTuneTerminalReporterTrainReporter)r  r{  r|  r   r   r(   r  reporters           r<   _detect_reporterr    sl     *  
 (#-
 
 
 !=MNNNOr>   c                   Z    e Zd Zej        ZdZej        Zej        Z	dZ
	 	 	 	 	 ddededee         dee         d	ee         d
eeee         eeeef                  f                  f fdZ	 	 ddee         dee         f fdZd Zdddedeee         ef         fdZdddefdZ xZS )TuneReporterBaseFzTrial {}r   Nr  r{  r   r   r(   r  c                     || _         || _        || _        d | _        t	          |pi           | _        t          t          |                               ||           d S )N)r  r  )	_num_samples_metric_mode_inferred_metricr\   _inferred_paramssuperr  r$  )r;   r  r{  r   r   r(   r  	__class__s          r<   r$  zTuneReporterBase.__init__?  so     (
 $ -fl ; ;%%..2B 	/ 	
 	
 	
 	
 	
r>   r]   total_samplesc                 Z    t                                          |           || _        d S )N)r]   )r  r(  r  )r;   r]   r  r'  r  s       r<   r(  zTuneReporterBase.setupR  s+     	,,,)r>   c                     d                     d t          |                                          D                       }d| S )Nz | c                 <    g | ]\  }}t          |           d | S )r   )r   )r}   rv   rq   s      r<   r~   zDTuneReporterBase._get_overall_trial_progress_str.<locals>.<listcomp>]  s@       "FF v;;))))  r>   zTrial status: )r   ry   rU   )r;   rq   r   s      r<   _get_overall_trial_progress_strz0TuneReporterBase._get_overall_trial_progress_str[  sU     &:6&B&B&H&H&J&J  
 
 )(((r>   force_full_outputr  rG   c                (   t                      }|                    |                     |                     |                    | j                   |                    |           t          || j        | j                  \  }}|r#|                    t          ||                     | j	        st          |          | _	        t          t                                                    | j	        z   }t          || j        ||| j                  }||fS )N)r   r   r   r   )ru   rV   r  r?  r   r   r  r  r   r  r   r   r   r   r  _wrap_headers)	r;   rq   r  sys_argsr   current_best_trialr   all_metricstrial_table_datas	            r<   _get_heartbeatzTuneReporterBase._get_heartbeate  s    d::6BBCCCd.///h%8DL$*&
 &
"F  	GMM/*<fEEFFF$ 	@$7$?$?D!?//1122T5JJ0,#&+
 
 
 '''r>   r@  rA  c                    t           r7   rJ  )r;   rq   rA  r  s       r<   rE  z!TuneReporterBase._print_heartbeat  rL  r>   )r   NNNNr   )r?   r@   rA   r3   rC   rC  r  rD   r[  ra  rO  rP   r
   r8   r   r   r	   r$  r   r(  r  r   r   r   r  rE  __classcell__r  s   @r<   r  r  8  s       '/M%1%9"'/!
  $"!%MQ
 

 
 	

 sm
 
 #5cDc3h4H)H#IJ
 
 
 
 
 
* '+'+* *UO*  }* * * * * *) ) ) <A( ( (48(	tCy/)	*( ( ( (@ AF " " " " " " " " " " "r>   r  c                   Z     e Zd Z	 ddedededededee         f fdZd	d
defdZ xZ	S )r  Nr1  r2  r3  r4  r5  r6  c           
          |t           j        k    rd}nt          |          }t          t	          d|gd|gd|ggd|gt
                                t                      j        d||||||d| d S )	NinfinitezSearch algorithm	SchedulerzNumber of trialszConfiguration for experiment)r  r  )r1  r2  r3  r4  r5  r6  rE   )sysmaxsizer8   r  r   r  r  r:  )
r;   r1  r2  r3  r4  r5  r6  r'  total_num_samples_strr  s
            r<   r:  z'TuneTerminalReporter.experiment_started  s     s{**$.!!$'(9$:$:!'6 -0')>?
 8I.  
	
 
	
 
	
 	#" 	
++%'/-	
 	
 	
 	
 	
 	
 	
r>   Fr@  rA  c          	      0   | j         | j        k     r|sd S  | j        |g|R d|i\  }}|                     d           |D ]}t	          |           g }g }|j        }	|j        D ]=}
|                    |
j                   |
j	        r|
                    |
j	                   >t	          t          ||	t          d                     |r"t	          d                    |                     |sd S t          |          }|sd S |                     d           t	          dt          |                      g d}	d	 |D             }t	          t          ||	t          dd
                     t!          d |D                       rt	          d           d S d S )Nr  	heartbeatF)r  r  	showindexz, status_erroredzNumber of errored trials: )r   z
# failuresz
error filec                     g | ]J}t          |          t          |j        j                  |j        t          j        k    rd ndz   |j        gKS )ra   *)r8   run_metadatanum_failuresrv   r   ERRORr|   r}   r   s     r<   r~   z9TuneTerminalReporter._print_heartbeat.<locals>.<listcomp>  sf     
 
 
  E

E&3444422#? 	
 
 
r>   )r  r  r  )r  r  r  r  c              3   @   K   | ]}|j         t          j        k    V  d S r7   )rv   r   
TERMINATEDr  s     r<   r   z8TuneTerminalReporter._print_heartbeat.<locals>.<genexpr>  s,      OOEu|u//OOOOOOr>   z3* The trial terminated successfully after retrying.)r  rC  r  r,  r  r   r   r   r   r   rV   r   r  r   r   r   r   )r;   rq   rA  r  heartbeat_strsr  rc   
more_infosall_datafail_header	sub_tabletrials_with_errorfail_table_datas                r<   rE  z%TuneTerminalReporter._print_heartbeat  s4   ?T666u6F%8T%8&
&
 &
 &
16&
 &
"
 	+&&& 	 	A!HHHH
 '# 	7 	7IOOI1222" 7!!)"5666#.	  	
 	
 	
  	)$))J''((( 	F26::  	F*+++C3/@+A+ACCDDD@@@
 
 +
 
 
 	#.2  	
 	
 	
 OO=NOOOOO 	IGHHHHH	I 	Ir>   r7   )
r?   r@   rA   r8   rP   r
   r:  r   rE  r  r  s   @r<   r  r    s         +/"
 "
"
 "
 	"

 "
 "
 #3-"
 "
 "
 "
 "
 "
H AF <I <I <I <I <I <I <I <I <I <I <Ir>   r  c                        e Zd Zej        Zej        Zej        ZdZ	dde
e         defdZdddefdZd	ede
e         d
edef fdZ xZS )r  TrainingFrq   r  c                 J   t          |          dk    rd S |d         }|j        t          j        k    r%d                    d|j         d| j        g          S |j        rt          |j        vrd}n|j        t                   dz   }d                    d| d| j        g          S )Nr   r   zTraining is in z status.r4   zTraining on iteration .)r   rv   r   RUNNINGr   r?  r   r   )r;   rq   r  r   iter_nums        r<   r  zTrainReporter._get_heartbeat  s    v;;!Fq	<5=((8895<9994;ST     	A$6e>O$O$OHH();<q@Hxx1h11143KL
 
 	
r>   r@  rA  c                N    t          |                     ||                     d S )Nr  )r  r  rF  s       r<   rE  zTrainReporter._print_heartbeat  s)    d!!&E!BBCCCCCr>   rW  r   r   c                 t    t          j                     | _         t                      j        d||||d| d S )N)rW  rq   r   r   rE   )r  r   r  r]  )r;   rW  rq   r   r   r/  r  s         r<   r]  zTrainReporter.on_trial_result  sS     %)IKK! 	
eF	
 	
NR	
 	
 	
 	
 	
r>   F)r?   r@   rA   r3   rD   rC  rC   r[  ra  rO  r	   r   r   r  rE  rP   r   r]  r  r  s   @r<   r  r    s        '/%1%9"'/!
 
T%[ 
T 
 
 
 
" =B D D DT D D D D

 U
 	

 
 
 
 
 
 
 
 
 
 
r>   r  )r   )r   Fr  )FF)ra   )NNN)NNNN)NNNNN)rr   rs   rd   loggingr   r   rL   r  r   r  dataclassesr   enumr   typingr   r   r   r   r	   r
   r   r   numpynppandasr   rayray._private.dictr   r   )ray._private.thirdparty.tabulate.tabulater   r   r   r   ray.air._internal.usager   ray.air.constantsr   ray.tuner   ray.tune.callbackr   ray.tune.experiment.trialr   ray.tune.resultr   r   r   r   r   r   ray.tune.search.sampler   ray.tune.utils.logr   richrich.layout	rich.liveImportError	getLoggerr?   loggerr   r   rQ  rP   r   float32float64int32int64r   r   r  r  PAUSEDPENDINGr  r   r3   widgetsutilin_notebookIS_NOTEBOOKrS   r8   r\   rp   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   stdoutencoding
startswithr  r  r  r  r  r  r  rE   r>   r<   <module>r     sb
            				 



   ! ! ! ! ! !       P P P P P P P P P P P P P P P P P P P P         



 > > > > > > > >            2 1 1 1 1 1 0 0 0 0 0 0       & & & & & & + + + + + +                * ) ) ) ) ) ( ( ( ( ( (KKK   DDD 
	8	$	$ *+)u6F&X	 	   " 	JJHHDJJ  
M		L	M	K	    7    k**,,%3i/0%l% % % %"$sCx. T#Y    %Ce %C5 %CU38_ %C %C %C %CPe c4;6F1G    /4; /4; / / / / U C S	    ,K!)#6>sm
8E?HSM)*   B        
 ) ) ) ) ) ) ) )
 C # $ 3    <!!"3i!6:3i!	#Y! ! ! !R !"< "<"<K"< S	"< c	"<
 "< &'"< "< "< "<R B/ B/KB/S	B/ cB/ 	B/
 B/ B/ B/ B/ B/J   $ (*& &	&&!$&eCHo& & & &, %)$('+	5 5
5j!5 j!5 $	5 5 5 5p : #*% #**=*H*H*O*O 'K$ueUE22UE5%88$ueUE22'%e,,sE**	 	 	 (K$sCc**S#sC00$sCc**'#sC((S#&&	 	 	 !)-)-*. 
SM jo& jo&	
 z#'   4U U U U Ux U U Uv +/ !IM  ' SM	
 3- TN uT#YT#s(^0D%DEF   6N" N" N" N" N"' N" N" N"baI aI aI aI aI+ aI aI aIH&
 &
 &
 &
 &
$ &
 &
 &
 &
 &
s   $B1 1B;:B;