
    h-                     j   S SK JrJrJrJrJrJrJr  S SKJ	r	  S SK
r
S SKrS SKJr  S SKJr  SSKJrJrJr  SSKJrJr  \" 5       SSSSS4S	\S
\S\\   S\\   S\\   S\\   S\\   S\\\      S\4S jjr\" 5       SSSS4S	\S
\S\\   S\\   S\\   S\\   S\\   S\4S jjrS\	4S jrSSS\" 5       4S\	SSS	\S
\S\\   S\\   S\\   S\\   S\\\\4   4S jjr     S!S\\\\4      S\S\\   S\\   S\\   S\\   S\\   4S jjrS\4S jrS\S\\\\4      S\\/\4   4S  jrg)"    )DictAnyTupleCallableListOptionalIO)
ModuleTypeN)Language)SimpleFrozenList   )dict_to_dotdot_to_dictmatcher_for_regex_patterns)setup_default_console_loggerLoggerTproject_name	task_nameremove_config_valuesmodel_log_intervallog_dataset_dirlog_best_dirlog_latest_dirlog_custom_statsreturnc                   ^ ^^^^^^^^	 [        5       m	[        R                  [        R                  4S[        S[
        S[
        S[        [        [        [        [        4   /S4   [        / S4   4   4U	UUUUUU UU4	S jjjnU$ )a  Creates a logger that interoperates with the ClearML framework.

Args:
    project_name (str):
        The name of the project in the ClearML interface. The project will be created automatically if it doesn't exist yet.
    task_name (str):
        The name of the ClearML task. A task is an experiment that lives inside a project. Can be non-unique.
    remove_config_values (List[str]):
        A list of values to exclude from the config before it is uploaded to ClearML. Defaults to [].
    model_log_interval (Optional[int]):
        Steps to wait between logging model checkpoints to the ClearML dasboard (default: `None`). Will have no effect without also setting `log_best_dir` or `log_latest_dir`. Defaults to None.
    log_dataset_dir (Optional[str]):
        Directory containing the dataset to be logged and versioned as a ClearML Dataset. Defaults to None.
    log_best_dir (Optional[str]):
        Directory containing the best trained model as saved by spaCy, to be logged and versioned as a ClearML artifact. Defaults to None.
    log_latest_dir (Optional[str]):
        Directory containing the latest trained model as saved by spaCy, to be logged and versioned as a ClearML artifact. Defaults to None.
    log_custom_stats (Optional[List[str]]):
        A list of regular expressions that will be applied to the info dictionary passed to the logger. Statistics and metrics that match these regexps will be automatically logged. Defaults to None.

Returns:
    LoggerT: Logger instance.
nlpstdoutstderrr   Nc           
         >	^^^^ [        T5      m[        T	U TTTT
TT5      u  mmmS[        [        [        [
        4      4UU	UU
UUUU4S jjnU4S jnX44$ )Ninfoc           	      B   > [        U TTTTTT5        [        TU T5        g N)_log_step_clearml_log_custom_stats)	r!   
best_modelclearml
last_modelr   r   
match_statr   tasks	    O/home/james-whalen/.local/lib/python3.13/site-packages/spacy_loggers/clearml.pylog_step9clearml_logger_v2.<locals>.setup_logger.<locals>.log_step?   s.    " gtZ8    c                     > [        T 5        g r#   _finalize_clearmlr*   s   r+   finalize9clearml_logger_v2.<locals>.setup_logger.<locals>.finalizeK   s    d#r.   )r   _setup_clearmlr   r   strr   )r   r   r   r,   r3   r&   r(   r)   r*   r'   r   r   r   r   r   r   r   r   s        @@@@r+   setup_logger'clearml_logger_v2.<locals>.setup_logger0   sg     00@A
'5 	(
$j*
	98DcN3 
	9 
	9	$ !!r.   _import_clearmlsysr   r   r   r	   r   r   r   r6   r   )
r   r   r   r   r   r   r   r   r7   r'   s
   ```````` @r+   clearml_logger_v2r<      s~    B G %(JJSZZ""!"8:"	xc3h($./"d(1CC	D" " "@ r.   c                 
  ^ ^^^^^^^ [        5       m[        R                  [        R                  4S[        S[
        S[
        S[        [        [        [        [        4   /S4   [        / S4   4   4UUUUUU UU4S jjjnU$ )a  Creates a logger that interoperates with the ClearML framework.

Args:
    project_name (str):
        The name of the project in the ClearML interface. The project will be created automatically if it doesn't exist yet.
    task_name (str):
        The name of the ClearML task. A task is an experiment that lives inside a project. Can be non-unique.
    remove_config_values (List[str]):
        A list of values to exclude from the config before it is uploaded to ClearML. Defaults to [].
    model_log_interval (Optional[int]):
        Steps to wait between logging model checkpoints to the ClearML dasboard (default: `None`). Will have no effect without also setting `log_best_dir` or `log_latest_dir`. Defaults to None.
    log_dataset_dir (Optional[str]):
        Directory containing the dataset to be logged and versioned as a ClearML Dataset. Defaults to None.
    log_best_dir (Optional[str]):
        Directory containing the best trained model as saved by spaCy, to be logged and versioned as a ClearML artifact. Defaults to None.
    log_latest_dir (Optional[str]):
        Directory containing the latest trained model as saved by spaCy, to be logged and versioned as a ClearML artifact. Defaults to None.

Returns:
    LoggerT: Logger instance.
r   r   r   r   Nc           
         >^^^^^	 [        XU5      u  mm[        T
U TTTTTT5      u  m	mmS[        [        [        [
        4      4UUUUUUU	4S jjnUU	4S jnX44$ )Nr!   c           	      8   > T" U 5        [        U TTTTTT5        g r#   )r$   )r!   r&   console_log_stepr(   r   r   r   r*   s    r+   r,   9clearml_logger_v1.<locals>.setup_logger.<locals>.log_step   s(    T""r.   c                  *   > T " 5         [        T5        g r#   r0   )console_finalizer*   s   r+   r3   9clearml_logger_v1.<locals>.setup_logger.<locals>.finalize   s    d#r.   )r   r5   r   r   r6   r   )r   r   r   r,   r3   r&   rC   r@   r(   r*   r'   r   r   r   r   r   r   r   s        @@@@@r+   r7   'clearml_logger_v1.<locals>.setup_loggert   su     .J.
** (6 	(
$j*
	8DcN3 
	 
		$ !!r.   r9   )	r   r   r   r   r   r   r   r7   r'   s	   ``````` @r+   clearml_logger_v1rF   T   sw    < G %(JJSZZ!"!"!!"8:!"	xc3h($./"d(1CC	D!" !"F r.   c                  `     SS K n SSK JnJnJn  U $ ! [         a  n[	        S5      UeS nAff = f)Nr   )TaskDatasetOutputModelzThe 'clearml' library could not be found - did you install it? Alternatively, specify the 'ConsoleLogger' in the 'training.logger' config section, instead of the 'ClearMLLogger'.)r'   rH   rI   rJ   ImportError)r'   rH   rI   rJ   excs        r+   r:   r:      sC    
 	76 N  P
 		s    
-(-r'   r   r   c                 j   UR                   R                  5       n[        U5      n	U H  n
X	 M     [        U	5      nU R                  R                  UUSS9nUR                  5        H  u  pUR                  XS9  M     U(       au  U R                  R                  U[        R                  R                  U5      S9nUR                  U5        UR                  SS9  UR                  SUR                   S.5        U(       a  U R#                  USS	S
9nOS nU(       a  U R#                  USSS
9nOS nXU4$ )NT)r   r   
output_uri)name)dataset_projectdataset_name)auto_uploadzCreated Dataset ID)rO   valuespaCyz
Best Model)r*   	frameworkrO   z
Last Model)configinterpolater   r   rH   inititemsconnectrI   createospathbasename	add_filesr3   set_user_propertiesidrJ   )r'   r   r   r   r   r   r   r   rV   
config_dotfieldr*   config_sectionsubconfig_or_valuedatasetr&   r(   s                    r+   r5   r5      sJ    ZZ##%FV$J% &$F<<!  D
 /5lln*'= /= //((())/: ) 
 	/*T*  , 	
 ((| ) 

 
((| ) 

 
Z''r.   r!   r*   r&   r(   c           	         U c  g U R                  S5      nU R                  S5      nU R                  S5      n	U(       a#  UR                  5       R                  SSU S   US9  U	(       aB  U	R                  5        H.  u  pUR                  5       R                  SU
 3SU
 3U S   US9  M0     [	        U[
        5      (       a  UR                  5        H  u  p[	        U[
        5      (       aJ  [        U5      nUR                  5        H)  u  nnUR                  5       R                  U
UU S   US9  M+     Md  [	        U[        [        45      (       d  M  UR                  5       R                  U
U
U S   US9  M     U(       a  U R                  S	5      (       al  U S   U-  S
:X  a_  U S   S
:w  aU  U(       a  Uc   eUR                  USSS9  U(       a0  U S   [        U S   5      S
   :X  a  Uc   eUR                  USSS9  g g g g g g g )Nscoreother_scoreslossesScorestep)	iterationrS   loss_titleseriesrm   rS   output_pathr   Fr(   )weights_pathauto_delete_filetarget_filenamecheckpointsr&   )get
get_loggerreport_scalarrY   
isinstancedictr   floatintupdate_weights_packagemax)r!   r*   r&   r(   r   r   r   rh   ri   rj   metricmetric_valuesub_metrics_dict
sub_metricsub_metric_values                  r+   r$   r$      s1    |HHWE88N+LXXhF''WVE 	( 	
 $*LLN FOO++fX&vh'v,"	 ,  %3 ,%% %1$6$6$8 F,--#.|#<  &++-$ OO%33$)"&v,.	 4  . L5#,77!//"6l&	 0 ! %9. dhh}55<,,1d6la6G!---11!/%*$0 2 
 WT-5H1I!1L L!---11!-%*$0 2  !M| 7H1 6r.   c                 B    U R                  SS9  U R                  5         g )NT)wait_for_uploads)flushcloser2   s    r+   r1   r1   &  s    JJJ%JJLr.   matcherc                     UbR  UR                  5        H=  u  p4U" U5      (       d  M  U R                  5       R                  SU 3SU 3US   US9  M?     g g )Nrn   rl   ro   )rY   rx   ry   )r*   r!   r   kvs        r+   r%   r%   +  s`     JJLDAqzz!//!!+"1#;"6l	 0  ! r.   )NNNNN) typingr   r   r   r   r   r   r	   typesr
   r\   r;   spacyr   
spacy.utilr   utilr   r   r   r   r   r6   r}   r<   rF   r:   r5   r$   r1   boolr%    r.   r+   <module>r      s   A A A  	 
  ' F F 7 '7&8(,%)"&$(,0CCC s)C !	C
 c]C 3-C SMC tCy)C CT '7&8(,%)"&$(CCC s)C !	C
 c]C 3-C SMC CL ( &*"&$(&6&83(3(	3( 3( 	3(
 c]3( 3-3( SM3( s)3( 3S=3(r !% $(,"&$(D
4S>
"D
D D 	D
 !D 3-D SMDNC 

d38n-8@#8Mr.   