
    &`i;0                        d dl Z d dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ erd d	lmZ  e j        e          Zeeej        ej        ej        ej         gZ! e e	j"        d
d          d          e G d d
e
                                  Z#e G d de                      Z$dS )    N)TYPE_CHECKINGDict)TRAINING_ITERATION)_LOGGER_DEPRECATION_WARNINGLoggerLoggerCallback)TIME_TOTAL_STIMESTEPS_TOTAL)flatten_dict)
Deprecated	PublicAPI)log_once)Trial	TBXLoggerz'ray.tune.tensorboardx.TBXLoggerCallback)oldnewT)messagewarningc                       e Zd ZdZeeeee e	d          fZ
ej        ej        ej        ej        ej        fZd ZdefdZd Zd Zd ZdS )	r   TensorBoardX Logger.

    Note that hparams will be written only after a trial has terminated.
    This logger automatically flattens nested dicts to show on TensorBoard:

        {"a": {"b": 1, "c": 2}} -> {"a/b": 1, "a/c": 2}
    Nc                     	 ddl m} n8# t          $ r+ t          d          rt                              d            w xY w || j        d          | _        d | _        d S )Nr   SummaryWritertbx-install1pip install "ray[tune]" to see TensorBoard files.   
flush_secs)	tensorboardXr   ImportErrorr   loggerinfologdir_file_writerlast_resultselfr   s     p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/tune/logger/tensorboardx.py_initzTBXLogger._init(   s    	2222222 	 	 	&& QOPPP	 *M$+"EEEs   	 5>resultc                    |                     t                    p|t                   }|                                }dddt          t          fD ]	}||v r||= 
t          |d          }ddg}i }|                                D ]!\  }}	d                    ||gz             }
t          |	t          t                              r7t          j        |	          s#|	||
<   | j                            |
|	|           xt          |	t                    rt!          |	          d	k    s't          |	t          j                  rf|	j        d	k    rZ|	||
<   t          |	t          j                  r*|	j        d
k    r| j                            |
|	|           t          |	t          j                  r*|	j        dk    r| j                            |
|	|           Tt          |	t          j                  r+|	j        dk    r | j                            |
|	|d           	 | j                            |
|	|           # t0          t2          f$ rT t5          d          rAt6                              d                    |
|	t=          |           j                             Y w xY w#|| _         | j        !                                 d S Nconfigpid	timestamp/	delimiterraytune)global_stepr               )r5   fpsinvalid_tbx_valuez6You are trying to log an invalid value ({}={}) via {}!)"getr
   r   copyr	   r   itemsjoin
isinstancetupleVALID_SUMMARY_TYPESnpisnanr$   
add_scalarlistlenndarraysizendim	add_image
add_images	add_videoadd_histogram
ValueError	TypeErrorr   r!   r   formattype__name__r%   flush)r'   r*   steptmpkflat_resultpathvalid_resultattrvalue	full_attrs              r(   	on_resultzTBXLogger.on_result2   s   zz/**Hf5G.HkkmmE;>PQ 	 	ACxxF"3#666v&,,.. ,	 ,	KD%//I%':!;!;<< *RXe__ **/Y'!,,Y4,PPPPUD)) 'c%jj1nn5"*-- /=27*q..*/Y' eRZ00 UZ1__%//!$( 0   
  eRZ00 UZ1__%00!$( 1   
  eRZ00 UZ1__%//!5d 0    	%33IuRV3WWWW #I.    344 &&,fYtDzz?R&S&S   (!!!!!s   H;;A!J J c                 J    | j         | j                                          d S d S )N)r$   rT   )r'   s    r(   rT   zTBXLogger.flusho   s.    (##%%%%% )(    c                    | j         ~| j        r\| j        j        rP| j        rIt	          | j        d          }d |                                D             }|                     |           | j                                          d S d S )Nr0   r1   c                 ^    i | ]*\  }}t          |t          t                              '||+S  r@   rA   rB   .0rW   r\   s      r(   
<dictcomp>z#TBXLogger.close.<locals>.<dictcomp>w   G     # # # 5!%/B)C)CDD#u# # #r`   )r$   trialevaluated_paramsr%   r   r>   _try_log_hparamsclose)r'   rX   scrubbed_results      r(   rl   zTBXLogger.closes   s    (z 7dj9 7d>N 7*4+;sKKK# #$/$5$5$7$7# # #
 %%o666##%%%%% )(r`   c                     t           j        j                  } fd|                                D             } fd|                                D             }|                    |            fd|                                D             }|r(t
                              dt          |                     ddlm	} 	  |||          \  }}}	 j
        j                            |            j
        j                            |            j
        j                            |	           d S # t          $ r t
                              d           Y d S w xY w)	Nc                 F    i | ]\  }}t          |j                  ||S rc   r@   VALID_HPARAMSrf   rW   vr'   s      r(   rg   z.TBXLogger._try_log_hparams.<locals>.<dictcomp>   A     
 
 
QJq$BT4U4U
q
 
 
r`   c                 j    i | ]/\  }}t          |j                  ||                                0S rc   r@   VALID_NP_HPARAMStolistrr   s      r(   rg   z.TBXLogger._try_log_hparams.<locals>.<dictcomp>   J     
 
 
1!T233
qxxzz
 
 
r`   c                 V    i | ]%\  }}t          |j        j        z             "||&S rc   r@   rq   rw   rr   s      r(   rg   z.TBXLogger._try_log_hparams.<locals>.<dictcomp>   J     
 
 
1a!3d6K!KLL
q
 
 
r`   KRemoved the following hyperparameter values when logging to tensorboard: %sr   hparamshparam_dictmetric_dicthTensorboardX failed to log hparams. This may be due to an unsupported type in the hyperparameter values.)r   ri   rj   r>   updater!   r"   strtensorboardX.summaryr   r$   file_writeradd_summary	Exception	exception)
r'   r*   flat_paramsscrubbed_params	np_paramsremovedr   experiment_tagsession_start_tagsession_end_tags
   `         r(   rk   zTBXLogger._try_log_hparams   s   "4:#>??
 
 
 
(..00
 
 

 
 
 
#))++
 
 
	 	y)))
 
 
 
#))++
 
 

  	KK-G   	100000	AH+B B B>N- )55nEEE)556GHHH)55oFFFFF 	 	 	0     	s   A.D1 1$EE)rS   
__module____qualname____doc__r   boolintfloatrF   rR   rq   rC   bool_float32float64int32int64rw   r)   r   r^   rT   rl   rk   rc   r`   r(   r   r      s          $UD$$t**=M"*bj"(BHM     ;" ;" ;" ;" ;"z& & &
& 
& 
&) ) ) ) )r`   c                       e Zd ZdZdgZeeeee	 e
d          fZej        ej        ej        ej        ej        fZd ZddZdeddd	efd
ZddddefdZddd	efdZdS )TBXLoggerCallbackr   zevents.out.tfevents.*Nc                     	 ddl m} || _        n8# t          $ r+ t	          d          rt
                              d            w xY wi | _        i | _        d S )Nr   r   r   r   )	r   r   _summary_writer_clsr    r   r!   r"   _trial_writer_trial_resultr&   s     r(   __init__zTBXLoggerCallback.__init__   s~    	222222'4D$$ 	 	 	&& QOPPP	 <>24s	    5Ari   r   c                     || j         v r| j         |                                          |                                 |                     |j        d          | j         |<   i | j        |<   d S )Nr   r   )r   rl   init_local_pathr   
local_pathr   )r'   ri   s     r(   log_trial_startz!TBXLoggerCallback.log_trial_start   s{    D&&&u%++---$($<$< %= %
 %
5! %'5!!!r`   	iterationr*   c                    || j         vr|                     |           |                    t                    p|t                   }|                                }dddt          t          fD ]	}||v r||= 
t          |d          }ddg}i }	|                                D ]?\  }
}d	                    ||
gz             }t          |t          t                              r=t          j        |          s)||	|<   | j         |                             |||           ~t          |t                     rt#          |          d	k    s't          |t          j                  r~|j        d	k    rr||	|<   t          |t          j                  r0|j        d
k    r%| j         |                             |||           t          |t          j                  r0|j        dk    r%| j         |                             |||           ft          |t          j                  r1|j        dk    r&| j         |                             |||d           	 | j         |                             |||           # t2          t4          f$ rT t7          d          rAt8                              d                    ||t?          |           j                              Y ;w xY wA|	| j!        |<   | j         |         "                                 d S r,   )#r   r   r<   r
   r   r=   r	   r   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r   r!   r   rQ   rR   rS   r   rT   )r'   r   ri   r*   rU   rV   rW   rX   rY   rZ   r[   r\   r]   s                r(   log_trial_resultz"TBXLoggerCallback.log_trial_result   s<   ***  '''zz/**Hf5G.HkkmmE;>PQ 	 	ACxxF"3#666v&,,.. .	 .	KD%//I%':!;!;<< ,RXe__ ,*/Y'"5)44YSW4XXXXUD)) )c%jj1nn5"*-- /=27*q..*/Y' eRZ00 UZ1__&u-77!$( 8   
  eRZ00 UZ1__&u-88!$( 9   
  eRZ00 UZ1__&u-77!5d 8    &u-;;!5d <    
 #I.    344 &&,fYtDzz?R&S&S   %15!5!'')))))s   #I77A!KKFfailedc                 F   || j         v r|rd|j        r]| j        |         rPt          | j        |         d          }d |                                D             }|                     ||           | j         |                                          | j         |= | j        |= d S d S )Nr0   r1   c                 ^    i | ]*\  }}t          |t          t                              '||+S rc   rd   re   s      r(   rg   z3TBXLoggerCallback.log_trial_end.<locals>.<dictcomp>  rh   r`   )r   rj   r   r   r>   rk   rl   )r'   ri   r   rX   rm   s        r(   log_trial_endzTBXLoggerCallback.log_trial_end  s    D&&& >/ >D4Fu4M >*4+=e+DPSTTT# #$/$5$5$7$7# # #
 %%e_===u%++---"5)"5))) '&r`   c                     t          |j                  } fd|                                D             } fd|                                D             }|                    |            fd|                                D             }|r(t                              dt          |                     ddlm} 	  |||          \  }}	}
 j	        |         j
                            |            j	        |         j
                            |	            j	        |         j
                            |
           d S # t          $ r t                              d           Y d S w xY w)	Nc                 F    i | ]\  }}t          |j                  ||S rc   rp   rr   s      r(   rg   z6TBXLoggerCallback._try_log_hparams.<locals>.<dictcomp>"  rt   r`   c                 j    i | ]/\  }}t          |j                  ||                                0S rc   rv   rr   s      r(   rg   z6TBXLoggerCallback._try_log_hparams.<locals>.<dictcomp>&  ry   r`   c                 V    i | ]%\  }}t          |j        j        z             "||&S rc   r{   rr   s      r(   rg   z6TBXLoggerCallback._try_log_hparams.<locals>.<dictcomp>.  r|   r`   r}   r   r~   r   r   )r   rj   r>   r   r!   r"   r   r   r   r   r   r   r   r   )r'   ri   r*   r   r   r   r   r   r   r   r   s   `          r(   rk   z"TBXLoggerCallback._try_log_hparams  s   "5#9::
 
 
 
(..00
 
 

 
 
 
#))++
 
 
	 	y)))
 
 
 
#))++
 
 

  	KK-G   	100000	AH+B B B>N- u%1==nMMMu%1==>OPPPu%1==oNNNNN 	 	 	0     	s   <B D> >$E&%E&)ri   r   )F)rS   r   r   r   _SAVED_FILE_TEMPLATESr   r   r   r   rF   rR   rq   rC   r   r   r   r   r   rw   r   r   r   r   r   rk   rc   r`   r(   r   r      s          55$UD$$t**=M"*bj"(BHM
5 
5 
5' ' ' '@*# @*g @*t @* @* @* @*D* *7 *D * * * *)g )t ) ) ) ) ) )r`   r   )%loggingtypingr   r   numpyrC   ray.air.constantsr   ray.tune.logger.loggerr   r   r   ray.tune.resultr	   r
   ray.tune.utilsr   ray.util.annotationsr   r   ray.util.debugr   ray.tune.experiment.trialr   	getLoggerrS   r!   r   r   r   r   r   r   rB   rQ   r   r   rc   r`   r(   <module>r      s    & & & & & & & &     0 0 0 0 0 0 V V V V V V V V V V 9 9 9 9 9 9 9 9 ' ' ' ' ' ' 6 6 6 6 6 6 6 6 # # # # # # 0//////		8	$	$E2:rz28RXN  .'.F   	   L L L L L L L  L^ \ \ \ \ \ \ \ \ \ \r`   