o
    
i                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	 d dl
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ZerDd dlmZ g fd	ed
ee fddZdddee dee dedeee ee ee f fddZ			ddededee	eef  fddZddefddZdS )     )	TYPE_CHECKINGDictAnyTupleCallableListOptionalIOUnionN)Path)util)Errors)registry)Printer)Languageproject_nameremove_config_valuesc                    s   zdd l ddl m}m}m} W n ty   d}t|w tdd}|dd tjtj	fdd	d
t
dt
dtttttf gd f tg d f f f fdd}|S )Nr   )initlogjoinzThe 'wandb' library could not be found - did you install it? Alternatively, specify the 'ConsoleLogger' in the 'training.logger' config section, instead of the 'WandbLogger'.loggerszspacy.ConsoleLogger.v1Fprogress_barnlpr   stdoutstderrreturnc                    s   | j  }t|}D ]}||= qt|}j|dd | ||\ dtttt	f  ffdd}d	 fdd}||fS )
NT)projectconfigreinitinfoc                    sr    |  | d ur5| d }| d }| d } d|i |r) dd | D  t|tr7 | d S d S d S )Nscoreother_scoreslossesc                 S   s   i | ]
\}}d | |qS )loss_ ).0kvr%   r%   H/home/ubuntu/.local/lib/python3.10/site-packages/spacy_legacy/loggers.py
<dictcomp>2       zKwandb_logger_v1.<locals>.setup_logger.<locals>.log_step.<locals>.<dictcomp>)r   items
isinstancedict)r    r!   r"   r#   )console_log_stepwandbr%   r)   log_step*   s   
z7wandb_logger_v1.<locals>.setup_logger.<locals>.log_stepr   c                      s         d S N)r   r%   )console_finalizer0   r%   r)   finalize6   s   z7wandb_logger_v1.<locals>.setup_logger.<locals>.finalizer   N)
r   interpolater   dict_to_dotdot_to_dictr   r   r   strr   )r   r   r   r   
config_dotfieldr1   r4   consoler   r   r0   )r3   r/   r)   setup_logger   s   


 z%wandb_logger_v1.<locals>.setup_logger)r0   r   r   r   ImportErrorr   getsysr   r   r	   r   r   r   r9   r   )r   r   r   r   r   err_msgconsole_loggerr>   r%   r<   r)   wandb_logger_v1   s*   	
$rD      )	max_widthcolswidthsrF   r   c                 C   sr   g }g }t | |D ]%\}}t||kr|d |d  d }||  |tt|| q	||dd |D fS )N   z...c                 S      g | ]}d qS )rr%   r&   _r%   r%   r)   
<listcomp>I       zsetup_table.<locals>.<listcomp>)ziplenappenduppermax)rG   rH   rF   
final_colsfinal_widthscolwidthr%   r%   r)   setup_table?   s   rY   FTr   console_outputoutput_filec                 C   s&   t dd}|| du rdnd||dS )a  The ConsoleLogger.v2 prints out training logs in the console and/or saves them to a jsonl file.
    progress_bar (bool): Whether the logger should print a progress bar tracking the steps till the next evaluation pass.
    console_output (bool): Whether the logger should print the logs on the console.
    output_file (Optional[Union[str, Path]]): The file to save the training logs to.
    r   zspacy.ConsoleLogger.v3FNeval)r   rZ   r[   )r   r@   )r   rZ   r[   rC   r%   r%   r)   console_logger_v2L   s   
r]   c                    sR   t jt jfdddtdtdtttttt	f  gd f tg d f f f fdd}|S )Nr   r   r   r   r   c                    s,  fdd
t dddd | jD | jd d  | jd d	 }d
d | D dd D }dtddg|  dg ddgdd |D  dd D  dg d\}	
j|	d 
jdd 	D d d dtttt	f  dd f 	
fdd}ddd}||fS )Nc                    s   t |  ddS )NT)fileflush)print)text)r   r%   r)   <lambda>b   s    z:console_logger_v1.<locals>.setup_printer.<locals>.<lambda>T)no_printc                 S   s$   g | ]\}}t |d r|jr|qS )is_trainable)hasattrrd   )r&   nameprocr%   r%   r)   rN   e   s    z<console_logger_v1.<locals>.setup_printer.<locals>.<listcomp>trainingeval_frequencyscore_weightsc                 S   s   g | ]
\}}|d ur|qS r2   r%   )r&   rW   valuer%   r%   r)   rN   l   r+   c                 S   s   g | ]}d | qS )zLoss r%   )r&   piper%   r%   r)   rN   m   s       E#ScorerI      c                 S   rJ   )   r%   rL   r%   r%   r)   rN   q   rO   c                 S   rJ   )rq   r%   rL   r%   r%   r)   rN   q   rO   )rG   rH   )rH   spacingc                 S   s   g | ]}d | qS )-r%   )r&   rX   r%   r%   r)   rN   t   s    )rs   r    r   c              	      s0   d u rd ur d d S  fddD }g }D ]7} d |d}zt|}W n tyB   tjj|t|d}t|d w |dkrK|d9 }|	d	| q d
  d g| | d	t d g }d urr
  j|
	d rtjd ddd d
 d   d S d S )N   c                    s"   g | ]}d  t d | qS ){0:.2f}r#   )formatfloat)r&   	pipe_namer    r%   r)   rN      s    zNconsole_logger_v1.<locals>.setup_printer.<locals>.log_step.<locals>.<listcomp>r"   g        )rf   
score_typespeedd   rv   epochstepr!   )rH   alignsrs   F)totaldisableleaver^   zEpoch )updater@   rx   	TypeErrorr   E916rw   type
ValueErrorrR   closerowtqdmset_description)r    r#   scoresrW   r!   errdata)ri   logged_pipesmsgprogressr   
score_colsrs   r   table_alignstable_widthswriterz   r)   r1   w   sL   


z:console_logger_v1.<locals>.setup_printer.<locals>.log_stepc                   S   s   d S r2   r%   r%   r%   r%   r)   r4      s   z:console_logger_v1.<locals>.setup_printer.<locals>.finalizer5   )
r   pipeliner   r,   rY   r   r   r   r9   r   )r   r   r   rj   	loss_colstable_headerr1   r4   r   )ri   r   r   r   r   rs   r   r   r   r   r   r)   setup_printer_   s(   
(6
+z(console_logger_v1.<locals>.setup_printer)
rA   r   r   r	   r   r   r   r   r9   r   )r   r   r%   r   r)   console_logger_v1^   s   (Hr   )FTN)F)typingr   r   r   r   r   r   r   r	   r
   rA   pathlibr   spacyr   spacy.errorsr   
spacy.utilr   wasabir   r   spacy.languager   r9   rD   intrY   boolr]   r   r%   r%   r%   r)   <module>   s@   , 1

