
      i                         d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z
 ddlmZ ddee   ded	eeef   fd
Zdeded	eeeeeef      fdZddZy)zUtilities for loggers.    )Path)AnyUnion)TensorN)
Checkpointloggers	separatorreturnc                     t        |       dk(  r| d   j                  S |j                  t        j	                  d | D                    S )N   r   c              3   F   K   | ]  }t        |j                          y wN)strversion).0loggers     x/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning/pytorch/loggers/utilities.py	<genexpr>z_version.<locals>.<genexpr>   s     'R'FNN(;'s   !)lenr   joindictfromkeys)r   r	   s     r   _versionr      s<    
7|qqz!!!>>$--'R''RRSS    checkpoint_callbacklogged_model_timec                    i }t        | d      r't        | d      r| j                  df|| j                  <   t        | d      r't        | d      r| j                  df|| j                  <   t        | d      r)| j
                  j                         D ]  \  }}|df||<    t        d	 |j                         D              }|D cg c]  }|d
   |vs||d
      |d   k  s| }}|S c c}w )zReturn the checkpoints to be logged.

    Args:
        checkpoint_callback: Checkpoint callback reference.
        logged_model_time: dictionary containing the logged model times.

    last_model_pathcurrent_scorelatestbest_model_pathbest_model_scorebestbest_k_modelsbest_kc              3      K   | ]K  \  }\  }}t        |      j                         s#t        |      j                         j                  |||f M y wr   )r   is_filestatst_mtime)r   pstags       r   r   z$_scan_checkpoints.<locals>.<genexpr>4   sH      @SHQW[\]W^WfWfWha	 	 !Q,@Ss
   $A,Ar   r   )hasattrr   r   r"   r!   r$   itemssorted)r   r   checkpointskeyvaluecs         r   _scan_checkpointsr4       s    K"$567CVXg;h<O<]<]_g;h'778"$567CVXj;k<O<`<`bh;i'778"O4-;;AACJC %x0K D  @K@Q@Q@S K *mkQqT9J-JN_`abc`dNehijkhlNl1kKm ns   C%C%c                 z   | j                   sy | j                  }| j                  | j                  j                  nd}d }|j                  r|r| j                  j                  }|j                  }g }|j                         |j                         z  D ]g  }|dk(  r	||   ||   }	}t        |      t        |	      k7  s-t        |t              rt        |      t        |	      k7  s||	k7  sW|j                  |       i |rt        d| d      i ||}n1|j                  r|j                  }n|r| j                  j                  }|)|j                         D 
ci c]  \  }
}|
dk7  s|
| }}
}| j                   D ]6  }||j                  |       |j                  |       |j                          8 y c c}}
w )NF_class_pathz&Error while merging hparams: the keys zg are present in both the LightningModule's and LightningDataModule's hparams but have different values.)r   lightning_module
datamodule_log_hyperparamshparams_initialkeystype
isinstancer   idappendRuntimeErrorr.   log_hyperparams	log_graphsave)trainer	pl_moduledatamodule_log_hyperparamsr:   datamodule_hparamslightning_hparamsinconsistent_keysr1   lm_valdm_valkvr   s                r   r9   r9   ;   s   ??((IHOHZHZHf!3!3!D!DlqO!!&@$//??%55$))+.@.E.E.GGCm#.s35G5LFFVV,vv.2f:F3KV#!((- H 89J8K L- - 
 F.E2DE		#	##33	#!,,<< ",;,A,A,CZ,CDAqqMGY1a4,CZ//&""?3#	 " [s   F7)F7)_)rD   z
pl.Trainerr
   N)__doc__pathlibr   typingr   r   torchr   lightning.pytorchpytorchpllightning.pytorch.callbacksr   listr   intr   r   tuplefloatr4   r9    r   r   <module>r\      s{         2Td3i TC T%S/ T: $ SWX]^cehjoqt^tXuSv 6+r   