
    &`i#                     x    d dl Z d dlmZ d dlmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d Z G d d	e          ZdS )
    N)Path)DictList)Trial)LoggerCallback)flatten_dictc                      dt           j        vrdt           j        d<   	 ddl} n# t          $ r t	          d          w xY w| S )zTry importing comet_ml.

    Used to check if comet_ml is installed and, otherwise, pass an informative
    error message.
    COMET_DISABLE_AUTO_LOGGING1r   Nz1pip install 'comet-ml' to use CometLoggerCallback)osenvironcomet_mlImportErrorRuntimeError)r   s    n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/air/integrations/comet.py_import_cometr      sd     $2:5536
/0P P P PNOOOP Os   $ >c                       e Zd ZdZg dZddgZg dZg dZddgZ	 	 	 dde	de
e         de	fdZd Zdedede	fdZd dZdedddefdZd dZd!ddde	fdZd Zd
S )"CometLoggerCallbacka  CometLoggerCallback for logging Tune results to Comet.

    Comet (https://comet.ml/site/) is a tool to manage and optimize the
    entire ML lifecycle, from experiment tracking, model optimization
    and dataset versioning to model production monitoring.

    This Ray Tune ``LoggerCallback`` sends metrics and parameters to
    Comet for tracking.

    In order to use the CometLoggerCallback you must first install Comet
    via ``pip install comet_ml``

    Then set the following environment variables
    ``export COMET_API_KEY=<Your API Key>``

    Alternatively, you can also pass in your API Key as an argument to the
    CometLoggerCallback constructor.

    ``CometLoggerCallback(api_key=<Your API Key>)``

    Args:
            online: Whether to make use of an Online or
                Offline Experiment. Defaults to True.
            tags: Tags to add to the logged Experiment.
                Defaults to None.
            save_checkpoints: If ``True``, model checkpoints will be saved to
                Comet ML as artifacts. Defaults to ``False``.
            **experiment_kwargs: Other keyword arguments will be passed to the
                constructor for comet_ml.Experiment (or OfflineExperiment if
                online=False).

    Please consult the Comet ML documentation for more information on the
    Experiment and OfflineExperiment classes: https://comet.ml/site/

    Example:

    .. code-block:: python

        from ray.air.integrations.comet import CometLoggerCallback
        tune.run(
            train,
            config=config
            callbacks=[CometLoggerCallback(
                True,
                ['tag1', 'tag2'],
                workspace='my_workspace',
                project_name='my_project_name'
                )]
        )

    )auto_output_logginglog_git_metadatalog_git_patchlog_env_cpulog_env_gpudoneshould_checkpoint)node_iphostnamepiddate)trial_idexperiment_idexperiment_tagzhist_stats/episode_rewardzhist_stats/episode_lengthsTNFonlinetagssave_checkpointsc                    t                       || _        || _        || _        || _        |                                  i | _        | j                                        | _	        | j
                                        | _        | j                                        | _        | j                                        | _        d S N)r   r#   r$   r%   experiment_kwargs_configure_experiment_defaults_trial_experiments_exclude_resultscopy_to_exclude_system_results
_to_system_other_results	_to_other_episode_results_to_episodes)selfr#   r$   r%   r(   s        r   __init__zCometLoggerCallback.__init__f   s     		 0!2 	++--- #%05577.3355,1133 16688    c                 b    | j         D ]&}| j                            |          s
d| j        |<   'dS )z@Disable the specific autologging features that cause throttling.FN)_exclude_autologr(   get)r4   options     r   r)   z2CometLoggerCallback._configure_experiment_defaults~   sE    + 	7 	7F)--f55 716&v.	7 	7r6   keyitemreturnc                 >    |                     |dz             p||k    S )z
        Check if key argument is equal to item argument or starts with item and
        a forward slash. Used for parsing trial result dictionary into ignored
        keys, system metrics, episode logs, etc.
        /)
startswith)r4   r;   r<   s      r   _check_key_namez#CometLoggerCallback._check_key_name   s#     ~~dSj))8SD[8r6   trialr   c                    t                       ddlm}m} ddlm} || j        vr.| j        r|n|} |di | j        }|| j        |<    |d           n| j        |         }|	                    t          |                     |                    | j                   |                    dd           |j                                        }|                    dd           |                    |           dS )	z
        Initialize an Experiment (or OfflineExperiment if self.online=False)
        and start logging to Comet.

        Args:
            trial: Trial object.

        r   )
ExperimentOfflineExperiment)set_global_experimentNzCreated fromRay	callbacks )r   r   rD   rE   comet_ml.configrF   r*   r#   r(   set_namestradd_tagsr$   	log_otherconfigr,   poplog_parameters)r4   rB   rD   rE   rF   experiment_cls
experimentrO   s           r   log_trial_startz#CometLoggerCallback.log_trial_start   s#    	::::::::999999///+/;MZZ<MN'AA$*@AAJ-7D#E*!!$''''07JCJJ'''DI&&&^U333""$$

;%%%!!&)))))r6   	iterationresultc           	          | j         vr                     |            j         |         }|d         }|                    di                                           }|                    dd           |                                D ]Z\  }t          |t                    r(|                    t          |id          |           B|	                    ||           [i }i }	i }
i }t          |d          }|                                D ]\  }t           fd j        D                       r't           fd	 j        D                       r||<   Nt           fd
 j        D                       r||
<   ut           fd j        D                       r||<   ||	<   |                    |           |                    |	|           |
                                D ]\  }|                    |           |                                D ]8\  }|                    t'          t)          |                    ||           9dS )zH
        Log the current result of a Trial upon each iteration.
        training_iterationrO   rH   Nr?   )step)	delimiterc              3   D   K   | ]}                     |          V  d S r'   rA   .0r<   kr4   s     r   	<genexpr>z7CometLoggerCallback.log_trial_result.<locals>.<genexpr>   s3      NNT4''400NNNNNNr6   c              3   D   K   | ]}                     |          V  d S r'   r\   r]   s     r   r`   z7CometLoggerCallback.log_trial_result.<locals>.<genexpr>   s3      LLT4''400LLLLLLr6   c              3   D   K   | ]}                     |          V  d S r'   r\   r]   s     r   r`   z7CometLoggerCallback.log_trial_result.<locals>.<genexpr>   s3      OOtT))!T22OOOOOOr6   c              3   D   K   | ]}                     |          V  d S r'   r\   r]   s     r   r`   z7CometLoggerCallback.log_trial_result.<locals>.<genexpr>   s3      QQtT))!T22QQQQQQr6   )xyrY   )r*   rT   rP   r,   items
isinstancedictrQ   r   log_parameteranyr-   r1   r/   r3   
log_otherslog_metricslog_system_info	log_curverangelen)r4   rU   rB   rV   rS   rY   config_updatev
other_logsmetric_logssystem_logsepisode_logsflat_resultr_   s   `            @r   log_trial_resultz$CometLoggerCallback.log_trial_result   s    ///  ''',U3
*+

8R005577+t,,,!'')) 	: 	:DAq!T"" :)),1vs*C*C$)OOOO ((AD(9999
"6S999%%'' 	# 	#DAqNNNNNT=MNNNNN LLLLLT^LLLLL 
# !
1OOOOOtOOOOO #!"AQQQQQt?PQQQQQ #"#Q "#Aj))){666%%'' 	- 	-DAq&&q!,,,, &&(( 	E 	EDAq  eCFFmmqt DDDD	E 	Er6   c                    t                      }| j        rG|j        rA| j        |         }|                    dt          |           d          }d }t          |j        j        t          j	        j
                  r|j        j        }|rt          j        |          D ]\  }}}t          j                            ||          }	|D ]}}
t          ||	|
                                          }t          |	|
                                          }|                    d          r
|dd          }|                    ||           ~|                    |           d S d S d S )Ncheckpoint_model)nameartifact_typez./   )logical_path)r   r%   
checkpointr*   ArtifactrL   rg   
filesystempyarrowfsLocalFileSystempathr   walkrelpathr   as_posixr@   addlog_artifact)r4   rB   r   rS   artifactcheckpoint_rootrootdirsfilesrel_rootfile
local_filer   s                r   log_trial_savez"CometLoggerCallback.log_trial_save   s    ??  	.U%5 	.07J((1CJJ11 )  H #O%*5wz7QRR 8"'"2"7  L)+)A)A 
L 
L%D$!wt_EEH % L L%)/8T%J%J%S%S%U%U
'+Hd';';'D'D'F'F (22488 <+7+;L ZlKKKKL ##H-----;	. 	. 	. 	.r6   failedc                 T    | j         |                                          | j         |= d S r'   )r*   end)r4   rB   r   s      r   log_trial_endz!CometLoggerCallback.log_trial_end   s-    &**,,,#E***r6   c                 z    | j                                         D ]\  }}|                                 i | _         d S r'   )r*   rf   r   )r4   rB   rS   s      r   __del__zCometLoggerCallback.__del__  sF    !%!8!>!>!@!@ 	 	E:NN"$r6   )TNF)rB   r   )F)__name__
__module____qualname____doc__r8   r+   r.   r0   r2   boolr   rL   r5   r)   rA   rT   intr   rx   r   r   r   rI   r6   r   r   r      sr       2 2j    34 =<<O EDDN35QR !&	9 99 3i9 	9 9 9 907 7 793 9c 9d 9 9 9 9* * * *</E# /Eg /Et /E /E /E /Eb .  .  .  .D+ +7 +D + + + +% % % % %r6   r   )r   pathlibr   typingr   r   
pyarrow.fsr   ray.tune.experimentr   ray.tune.loggerr   ray.tune.utilsr   r   r   rI   r6   r   <module>r      s    				                   % % % % % % * * * * * * ' ' ' ' ' '  "g% g% g% g% g%. g% g% g% g% g%r6   