o
    1 i5                     @   s   d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlmZmZ er>d dlmZ eeZeejd	d
dddeG dd	 d	eZeG dd deZdS )    N)Path)TYPE_CHECKINGDictTextIO)EXPR_PROGRESS_FILE)_LOGGER_DEPRECATION_WARNINGLoggerLoggerCallback)flatten_dict)
Deprecated	PublicAPI)Trial	CSVLoggerzray.tune.csv.CSVLoggerCallback)oldnewT)messagewarningc                   @   s>   e Zd ZdZdd Zdd ZdefddZd	d
 Zdd Z	dS )r   Logs results to progress.csv under the trial directory.

    Automatically flattens nested dicts in the result dict before writing
    to csv:

        {"a": {"b": 1, "c": 2}} -> {"a/b": 1, "a/c": 2}

    c                 C   s
   d| _ d S )NF)_initializedself r   _/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/tune/logger/csv.py_init"   s   
zCSVLogger._initc                 C   sJ   | j s#t| jt}| o| jdk| _|d| _	d| _
d| _ dS dS )z3CSV outputted with Headers as first set of results.r   aNT)r   r   Zlogdirr   existsstatst_size_continuingopen_file_csv_out)r   Zprogress_filer   r   r   _maybe_init%   s   
zCSVLogger._maybe_initresultc                    s       | }d|v r|d= t|dd} jd u r,t j|  _ js, j	   j
 fdd| D   j  d S )Nconfig/	delimiterc                    s"   i | ]\}}| j jv r||qS r   )r!   
fieldnames.0kvr   r   r   
<dictcomp><   s   " z'CSVLogger.on_result.<locals>.<dictcomp>)r"   copyr
   r!   csv
DictWriterr    keysr   writeheaderwriterowitemsflush)r   r#   tmpr   r   r   	on_result0   s   

zCSVLogger.on_resultc                 C   s$   | j r| jjs| j  d S d S d S N)r   r    closedr5   r   r   r   r   r5   @   s   zCSVLogger.flushc                 C   s   | j r
| j  d S d S r8   )r   r    closer   r   r   r   r:   D   s   zCSVLogger.closeN)
__name__
__module____qualname____doc__r   r"   r   r7   r5   r:   r   r   r   r   r      s    	c                   @   sR   e Zd ZdZegZdd ZdddZdeddd	e	fd
dZ
ddddefddZdS )CSVLoggerCallbackr   c                 C   s   i | _ i | _i | _d S r8   )_trial_continue_trial_files
_trial_csvr   r   r   r   __init__V   s   
zCSVLoggerCallback.__init__trialr   c                 C   sr   || j v r| j |   |  t|jt}| t| | o&| j	dk| j
|< |d| j |< d | j|< d S )Nr   at)rA   r:   Zinit_local_pathr   Z
local_pathr   Z_restore_from_remoter   r   r   r@   r   rB   )r   rD   local_file_pathr   r   r   _setup_trial[   s   
zCSVLoggerCallback._setup_trial	iterationr#   c                    s    j vr
  | }|dd  t|dd} j s9t j  |  j<  j	 s9 j 
   j  fdd| D   j    d S )Nr$   r%   r&   c                    s&   i | ]\}}| j  jv r||qS r   )rB   r(   r)   r   rD   r   r   r-   }   s   & z6CSVLoggerCallback.log_trial_result.<locals>.<dictcomp>)rA   rG   r.   popr
   rB   r/   r0   r1   r@   r2   r3   r4   r5   )r   rH   rD   r#   r6   r   rI   r   log_trial_resultm   s   





z"CSVLoggerCallback.log_trial_resultFfailedc                 C   s0   || j vrd S | j|= | j |   | j |= d S r8   )rA   rB   r:   )r   rD   rL   r   r   r   log_trial_end   s
   
zCSVLoggerCallback.log_trial_endN)rD   r   )F)r;   r<   r=   r>   r   Z_SAVED_FILE_TEMPLATESrC   rG   intr   rK   boolrM   r   r   r   r   r?   I   s    	
r?   )r/   loggingpathlibr   typingr   r   r   Zray.air.constantsr   Zray.tune.logger.loggerr   r   r	   Zray.tune.utilsr
   Zray.util.annotationsr   r   Zray.tune.experiment.trialr   	getLoggerr;   loggerformatr   r?   r   r   r   r   <module>   s*    
1