
    &`i9                        d dl Z d dlZ d dlZd dlmZmZ d dlZd dlZdZej	        j
        j        Zdddeidej         dej         id	d
did
didddddddddgdddddgdddddgdddddgddddZdd iZd!Zd"Zi ada e j        e j        dz
  d#            G d$ d%          Z G d& d'e j                  Zd(ee         fd)Zd(ee         fd*Zd?d+Zd,efd-Zd.ed(efd/Z d.ed(efd0Z!d.ed1ed2ed(efd3Z"d.ed4ed(dfd5Z#d?d6Z$d?d7Z%d(ee         fd8Z&d(e j'        fd9Z(d:ed(efd;Z)d:ee         d(dfd<Z*d:ed(ee+         fd=Z,d:ed(ee+         fd>Z-dS )@    N)ListOptionalz@%(asctime)s	%(levelname)s %(filename)s:%(lineno)s -- %(message)s   Fformatclass.)rayray_json()z-ray.data._internal.logging.HiddenRecordFilterz%ray._common.filters.CoreContextFilter)console_filtercore_context_filterz-ray.data._internal.logging.SessionFileHandlerr	   zray-data.log)r   	formatterfilenamer
   r   )r   r   r   filtersz ray._private.log.PlainRayHandlerINFOr   )r   r   levelr   )file	file_jsonconsoleDEBUGr   r   )r   handlers	propagate)ray.datazray.air.util.tensor_extensions)versiondisable_existing_loggers
formattersr   r   loggersr   RAY_DATA_LOG_ENCODINGRAY_DATA_LOGGING_CONFIGTRACEc                       e Zd ZdZd ZdS )HiddenRecordFiltera  Filters out log records with the "hide" attribute set to True.

    This filter allows you to override default logging behavior. For example, if errors
    are printed by default, and you don't want to print a specific error, you can set
    the "hide" attribute to avoid printing the message.

    .. testcode::

        import logging
        logger = logging.getLogger("ray.data.spam")

        # This warning won't be printed to the console.
        logger.warning("ham", extra={"hide": True})
    c                 &    t          |dd           S )NhideF)getattrselfrecords     n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/logging.pyfilterzHiddenRecordFilter.filterd   s    6651111    N)__name__
__module____qualname____doc__r*    r+   r)   r"   r"   T   s-         2 2 2 2 2r+   r"   c                   N     e Zd ZdZdef fdZd Zdej        ddfdZ	d	 Z
 xZS )
SessionFileHandleral  A handler that writes to a log file in the Ray session directory.

    The Ray session directory isn't available until Ray is initialized, so this handler
    lazily creates the file handler when you emit a log record.

    Args:
        filename: The name of the log file. The file is created in the 'logs' directory
            of the Ray session directory.
    r   c                     t                                                       || _        d | _        d | _        d | _        d S N)super__init__	_filename_handler
_formatter_path)r'   r   	__class__s     r)   r6   zSessionFileHandler.__init__s   s9    !


r+   c                     | j         |                                  | j         | j                             |           d S d S r4   )r8   _try_create_handleremitr&   s     r)   r>   zSessionFileHandler.emitz   sH    = $$&&&=$Mv&&&&& %$r+   fmtreturnNc                 V    | j         | j                             |           || _        d S r4   )r8   setFormatterr9   )r'   r?   s     r)   rB   zSessionFileHandler.setFormatter   s+    =$M&&s+++r+   c                 H   | j         J t                      }|d S t          j        |d           t          j                            || j                  | _        t          j	        | j                  | _         | j
        !| j                             | j
                   d S d S )NT)exist_ok)r8   get_log_directoryosmakedirspathjoinr7   r:   loggingFileHandlerr9   rB   )r'   log_directorys     r)   r=   z&SessionFileHandler._try_create_handler   s    }$$$)++ F
MD1111W\\-@@
+DJ77?&M&&t77777 '&r+   )r,   r-   r.   r/   strr6   r>   rJ   	FormatterrB   r=   __classcell__)r;   s   @r)   r2   r2   h   s               ' ' ' 1 d    
8 8 8 8 8 8 8r+   r2   r@   c                     dt           fd} t          j                            t                    }t          j                            t
                    }| | |          }nt          }||                                dk    rr|d                                         D ]W}t          
                                D ];\  }}|d                             |           |d                             |           <X|S )Nconfig_pathc                 |    t          |           5 }t          j        |          }d d d            n# 1 swxY w Y   |S r4   )openyaml	safe_load)rQ   r   configs      r)   _load_logging_configz1_get_logging_config.<locals>._load_logging_config   sv    + 	*$^D))F	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   155JSONr   r   )rM   rF   environget$RAY_DATA_LOGGING_CONFIG_ENV_VAR_NAME"RAY_DATA_LOG_ENCODING_ENV_VAR_NAMEDEFAULT_CONFIGuppervalues'RAY_DATA_LOG_HANDLER_JSON_SUBSTITUTIONSitemsremoveappend)rW   rQ   log_encodingrV   loggerold_handler_namenew_handler_names          r)   _get_logging_configrh      s   #     *..!EFFK:>>"DEEL%%k22#(:(:(<(<(F(F +2244 @ @ =BBDD@ @ $$:&--.>???:&--.>????@ Mr+   c                      t                                          di           } t          |                                           S )Nr   )rh   rZ   listkeys)logger_configs    r)   _get_logger_namesrm      s7    '))--i<<M""$$%%%r+   c                      t                      } t          |           }t          |           }t          | ||          }t	          | |           t                       dS )a  Configure the Python logger named 'ray.data'.

    This function loads the configuration YAML specified by "RAY_DATA_LOGGING_CONFIG"
    environment variable. If the variable isn't set, this function loads the default
    "logging.yaml" file that is adjacent to this module.

    If "RAY_DATA_LOG_ENCODING" is specified as "JSON" we will enable JSON logging mode
    if using the default logging config.
    N)rh   _create_formatters_create_filters_create_handlers_configure_loggers_warn_if_incompatible_env_vars)rV   r   r   r   s       r)   configure_loggingrt      sb     !""F $F++Jf%%G
G<<H vx((( #$$$$$r+   
class_pathc                     ddl }d| vrt          d|            |                     dd          \  }}|                    |          }t	          ||          S )z7Dynamically import a class from a fully qualified path.r   Nr   zInvalid class path: r   )	importlib
ValueErrorrsplitimport_moduler%   )ru   rw   module_name
class_namemodules        r)   _import_classr~      sm    
*<
<<===(//Q77K$$[11F6:&&&r+   rV   c                     i }|                      di                                           D ]M\  }}d|v r#t          |d                   } |            ||<   ,d|v rt          j        |d                   ||<   N|S )z'Create formatter instances from config.r   r   r   )rZ   ra   r~   rJ   rN   )rV   r   name
fmt_configformatter_classs        r)   ro   ro      s    J"JJ|R88>>@@ G Gjj  +Jw,?@@O.00Jt##&0H1EFFJtr+   c                     i }|                      di                                           D ]+\  }}d|v r"t          |d                   } |            ||<   ,|S )z$Create filter instances from config.r   r   )rZ   ra   r~   )rV   r   r   filter_configfilter_classs        r)   rp   rp      sg    G%zz)R88>>@@ + +m=  (t)<==L(LNNGDMNr+   r   r   c                 6   i }h d|                      di                                           D ]\  }}t          |d                   }fd|                                D             } |di |}||_        d|v r|                    |d                    d|v r2|                     |d                   }	|	r|                    |	           |                     dg           D ].}
|                     |
          }|r|                    |           /|||<   |S )	z3Create and configure handler instances from config.>   r   r   r   r   r   r   c                 $    i | ]\  }}|v	||S r0   r0   ).0kvHANDLER_CONFIG_KEYSs      r)   
<dictcomp>z$_create_handlers.<locals>.<dictcomp>   s1     
 
 
Qq@S7S7SAq7S7S7Sr+   r   r   r   r0   )rZ   ra   r~   r   setLevelrB   	addFilter)rV   r   r   r   r   handler_confighandler_classhandler_kwargshandlerr   filter_name
filter_objr   s               @r)   rq   rq      si   H EDD &

:r : : @ @ B B ! !n%nW&=>>
 
 
 
+1133
 
 
  -11.11 n$$^G4555.(("~k'BCCI 0$$Y///)--i<< 	. 	.K [11J .!!*--- Or+   r   c                    |                      di                                           D ]\  }}t          j        |          }|                    |                     dt          j                             |j        dd         D ]}|                    |           |                     dg           D ].}|                     |          }|r|                    |           /|                     dd          |_	        dS )z'Configure logger instances from config.r   r   Nr   r   T)
rZ   ra   rJ   	getLoggerr   NOTSETr   removeHandler
addHandlerr   )rV   r   logger_namerl   re   r   handler_names          r)   rr   rr     s   &,jjB&?&?&E&E&G&G @ @"]";//))'7>BBCCC qqq) 	* 	*G  )))) *--j"== 	+ 	+Lll<00G +!!'***(,,[$??@ @r+   c                     t           j                            t                    } t           j                            t                    }| 2|2t          j        t                    }|                    d           dS dS dS )zGWarn if both RAY_DATA_LOGGING_CONFIG and RAY_DATA_LOG_ENCODING are set.NzMUsing `RAY_DATA_LOG_ENCODING` is not supported with `RAY_DATA_LOGGING_CONFIG`)	rF   rY   rZ   r[   r\   rJ   r   r,   warning)rQ   rd   re   s      r)   rs   rs   )  sz    *..!EFFK:>>"DEEL <#;"8,,*	
 	
 	
 	
 	
 #;#;r+   c                      t          j        d          } | j                                         |                     t           j                   i adadS )zSReset the logger named 'ray.data' to its initial state.

    Used for testing.
    r   N)rJ   r   r   clearr   r   _DATASET_LOGGER_HANDLER_ACTIVE_DATASET)re   s    r)   reset_loggingr   8  sK     z**F
O
OOGN### OOOr+   c                      t           j        j        j        } | dS |                                 }t
          j                            |dd          S )zyReturn the directory where Ray Data writes log files.

    If Ray isn't initialized, this function returns ``None``.
    Nlogszray-data)r	   _privateworker_global_nodeget_session_dir_pathrF   rH   rI   )global_nodesession_dirs     r)   rE   rE   G  sE    
 ,%2Kt2244K7<<VZ888r+   c                      t           j                            t                    } | &|                                 dk    rt                      S t          j        t                    S )NrX   )	rF   rY   rZ   r\   r^   DEFAULT_JSON_FORMATTERrJ   rN   DEFAULT_TEXT_FORMATTER)rd   s    r)   _get_default_formatterr   T  sP    :>>"DEELL$6$6$8$8F$B$B%'''3444r+   
dataset_idc                 p    t          d|  d          }|                    t                                 |S )zCreate a log handler for a dataset with the given ID.

    Args:
        dataset_id: The ID of the dataset.

    Returns:
        A log handler for the dataset.
    z	ray-data-z.log)r   )r2   rB   r   )r   r   s     r)   _create_dataset_log_handlerr   \  s@     !*Fj*F*F*FGGGG/11222Nr+   c                     | sdS t                       t          |           }d t                      D             }|D ]}|                    |           dS )a<  Create a log handler for a dataset with the given ID. Switch the dataset logger
    for the worker to this dataset logger. Note that only the driver keeps track of the
    active dataset. The worker will just use the handler that the driver tells it to use.

    Args:
        dataset_id: The ID of the dataset.
    Nc                 6    g | ]}t          j        |          S r0   rJ   r   r   r   s     r)   
<listcomp>z4update_dataset_logger_for_worker.<locals>.<listcomp>w  #    GGG4w &&GGGr+   )rt   r   rm   r   )r   log_handlerr   re   s       r)    update_dataset_logger_for_workerr   k  st      -j99KGG3D3F3FGGGG ' '+&&&&' 'r+   c                    d t                      D             }t          |           }t          j        t                    }|                    |           |                    d|            |t          | <   t          s| a|D ]}|                    |           n#|                    |  dt           d|  d           |	                    |           t          S )a  Create a log handler for a dataset with the given ID. Activate the handler if
    this is the only active dataset. Otherwise, print a warning to that handler and
    keep it inactive until it becomes the only active dataset.

    Args:
        dataset_id: The ID of the dataset.
    c                 6    g | ]}t          j        |          S r0   r   r   s     r)   r   z+register_dataset_logger.<locals>.<listcomp>  r   r+   z(Registered dataset logger for dataset %sz- registers for logging while another dataset zJ is also logging. For performance reasons, we will not log to the dataset z% until it is the only active dataset.)
rm   r   rJ   r   r,   r   infor   r   r   )r   r   r   local_loggerre   s        r)   register_dataset_loggerr   |  s    HG3D3F3FGGGG-j99K $X..LK(((@*MMM*5J' 	
$ 	+ 	+Fk****	+ 	 T TT T",T T T	
 	
 	

 {+++r+   c                 ~   d t                      D             }t                              | d          }t          | k    rIdat          r@t	          t          t          t                                                                         |r.|D ]}|                    |           |	                                 t          S )zmRemove the logger for a dataset with the given ID.

    Args:
        dataset_id: The ID of the dataset.
    c                 6    g | ]}t          j        |          S r0   r   r   s     r)   r   z-unregister_dataset_logger.<locals>.<listcomp>  r   r+   N)
rm   r   popr   r   nextiterrk   r   close)r   r   r   re   s       r)   unregister_dataset_loggerr     s     HG3D3F3FGGGG)--j$??K*$$" 	P#D.E.J.J.L.L)M)M$N$NOOO  	. 	.F  ----r+   )r@   N).rJ   logging.configrF   typingr   r   rT   r	   r   _commonr   JSONFormatterr   r-   r,   r]   r`   r\   r[   r   r   addLevelNamer   r"   Handlerr2   dictrh   rM   rm   rt   r~   ro   rp   rq   rr   rs   r   rE   rN   r   r   r   intr   r   r0   r+   r)   <module>r      s        				 ! ! ! ! ! ! ! !  



 H  /=  %01.9]]<R<[]]
   !PQ $&MN  E&
 
 E#&-.	
 
 8()	
 
 * +
 
 ++
 +
 A, ,` ,2;*? ' &= " (A $   W]Q& 0 0 02 2 2 2 2 2 2 2()8 )8 )8 )8 )8 )8 )8 )8XXd^    4&49 & & & &% % % %0	'c 	' 	' 	' 	't     
D 
T 
 
 
 
 T  t  d  t        F@t @t @ @ @ @ @&
 
 
 
   
98C= 
9 
9 
9 
95 1 5 5 5 5C 4F    '# '4 ' ' ' '"           F# (3-      r+   