
    #i9Y                   l   d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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 d dlmZ d d	lmZ d d
lmZmZmZ d dlZd dlZd dlm Z m!Z! d dlm"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lm.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@  e@       r#d dlAmBZBmCZCmDZDmEZEmFZF 	 d dlAmGZH 	 d dlAmJZK 	 d dlAmLZM 	 d dlNmGZO 	 d dlPmQZQ 	 d dlPmSZS  ej                  eU      ZVerd d lWmXZX d d!lYmZZZ d d"l[m\Z\  G d# d$e.      Z]g d%Z^g d&Z_d.d'Z`d/d(Zad0d)Zbd1d*Zce G d+ d,e              Zdd2d-Zey# eI$ r dZHY w xY w# eI$ r dZKY w xY w# eI$ r dZMY w xY w# eI$ r dZOY w xY w# eIeRf$ r dZQY w xY w# eIeRf$ r dZSY w xY w)3    )annotationsN)CounterUserDictdefaultdict)copy)	dataclassfieldfields)Path)python_version)pformatindent)TYPE_CHECKINGAnyLiteral)CardData	ModelCard)dataset_info)
model_info)
EvalResulteval_results_to_model_index)	yaml_dump)nn)tqdm)TrainerCallback)CodeCarbonCallback)make_markdown_table)TrainerControlTrainerState__version__)format_modality)BaseTrainingArguments)fullnameis_accelerate_availableis_datasets_available)DatasetDatasetDictIterableDatasetIterableDatasetDictValue)Image)Audio)Video)AudioDecoder)VideoDecoder)BaseEvaluator)	BaseModel)BaseTrainerc                       e Zd Zd fdZ	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 	 	 d	dZ	 	 	 	 	 	 	 	 	 	 	 	 d
dZ xZS )BaseModelCardCallbackc                0    t         |           || _        y N)super__init__default_args_dict)selfr;   	__class__s     v/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/sentence_transformers/base/model_card.pyr:   zBaseModelCardCallback.__init__M   s    !2    c                Z   |j                   j                  d       |j                  j                  D cg c]  }t	        |t
              s| }}|r|d   |j                   _        |j                  rU|j                   j                  |j                  |j                   j                  |j                  d      |j                   _	        |j                  rU|j                   j                  |j                  |j                   j                  |j                  d      |j                   _        t        |j                        }	|j                   j                  |	       |j                   j                  s9|j                  xs |j                  x}
r|j                   j!                  |
       y y y c c}w )Ngenerated_from_trainerr   traineval)model_card_dataadd_tagscallback_handler	callbacks
isinstancer   code_carbon_callbacktrain_datasetextract_dataset_metadatatrain_datasetslosseval_dataseteval_datasets
get_losses
set_losseswidgetset_widget_examples)r<   argsstatecontrolmodeltrainerkwargscallbackrG   lossesdatasets              r>   on_init_endz!BaseModelCardCallback.on_init_endQ   sj    	&&'?@ &-%=%=%G%G
!:V^`rKsH
	 
 9B1E!!6   383H3H3a3a%%u'<'<'K'KW\\[b4E!!0 272G2G2`2`$$e&;&;&I&I7<<Y_3E!!/ GLL)((0 $$++G<P<P<iT[TiTi1i1i!!55g> 2j+-
s   F(
F(c                   h d}|j                         }|j                         D 	ci c]  \  }}	||vs||	 c}	}|j                  _        |j                         D 	ci c],  \  }}	||vr#|| j                  v r|	| j                  |   k7  r||	. c}	}|j                  _        t        j                         |j                  _        y c c}	}w c c}	}w )N>   do_evaldo_testdo_trainrun_name	hub_token	report_to
eval_delay
eval_steps
output_dir
save_stepslogging_direval_strategylogging_stepssave_strategylogging_strategysave_total_limitgreater_is_betterpush_to_hub_tokensamples_per_labelshow_progress_barlogging_first_stepevaluation_strategymetric_for_best_model)to_dictitemsrD   all_hyperparametersr;   non_default_hyperparameterstime_training_start_time)
r<   rT   rU   rV   rW   rY   ignore_keys	args_dictkeyvalues
             r>   on_train_beginz$BaseModelCardCallback.on_train_beginv   s    
2 LLN	)2):5
%3c>TCJ5
1
 (oo/=
U+%#1G1G*GEUYUkUkloUpLp J=
9
 6:YY[25
=
s   CC 1Cc                   |D ci c]K  }|j                  d      r8|j                  d      r'dj                  |j                  d      dd        ||   M }}t	        |      dk(  rd|v rd|d   i}d|v r"|j
                  xj                  |d   z  c_        |j
                  j                  rR|j
                  j                  d	   d
   |j                  k(  r)|j
                  j                  d	   j                  |       y |j
                  j                  j                  |j                  |j                  d|       y c c}w )Neval__loss _   rM   Validation Losseval_runtimeStepEpochr   )
startswithendswithjoinsplitlenrD   evaluation_durationtraining_logsglobal_stepupdateappendepoch)	r<   rT   rU   rV   rW   metricsrY   r~   	loss_dicts	            r>   on_evaluatez!BaseModelCardCallback.on_evaluate   s3    
~~g&3<<+@ HHSYYs^AB'('#,6
	 

 y>Q6Y#6*If,=>IW$!!559PP5 !!//%%33B7?5CTCTT!!//3::9E!!//66"[[!--  !
s   AD=c                L   d|v r|j                   j                  rI|j                   j                  d   d   |j                  k(  r |d   |j                   j                  d   d<   y |j                   j                  j                  |j                  |j                  |d   d       y y )NrM   r   r   Training Loss)r   r   r   )rD   r   r   r   r   )r<   rT   rU   rV   rW   logsrY   s          r>   on_logzBaseModelCardCallback.on_log   s     T>%%33))77;FCuGXGXXKOPV<%%33B7H%%33::!& % 1 1)-f r?   )r;   dict[str, Any]returnNone)rT   r$   rU   r    rV   r   rW   r3   rX   r4   r   r   )
rT   r$   rU   r    rV   r   rW   r3   r   r   )rT   r$   rU   r    rV   r   rW   r3   r   dict[str, float]r   r   )rT   r$   rU   r    rV   r   rW   r3   r   r   r   r   )	__name__
__module____qualname__r:   r]   r   r   r   __classcell__)r=   s   @r>   r6   r6   L   s   3#?##? #?  	#?
 #? #? 
#?J*A#*A *A  	*A
 *A 
*AX#   	
  " 
B#   	
   
r?   r6   )languagelicenselibrary_nametagsdatasetsr   pipeline_tagrR   model-indexco2_eq_emissions
base_model)	rW   rX   eval_results_dictsave_dirusage_examples_display_asset_cache_cached_dictr{   r   c                     t               t        t        j                  t        j                  d} t               rddlm} || d<   t               rddlm} || d<   ddl	m} || d<   | S )N)pythonsentence_transformerstransformerstorchr   r!   
accelerater   
tokenizers)
r   sentence_transformers_versionr   r"   r   r&   r   r'   r   r   )versionsaccelerate_versiondatasets_versiontokenizers_versions       r>   get_versionsr      s^     "!>$00""	H  @!3</</H\Or?   c                n    | dk  r| ddS | dz  }|dk  r|ddS | dz  }|dk  r|ddS | dz  }|dd	S )
zZFormat a duration in seconds to a human-readable string, e.g. "23 minutes" or "1.6 hours".<   z.1fz secondsz minutesi     z hoursiQ z days )secondsminuteshoursdayss       r>   format_durationr     sn    |#h''lG|#h''dNErzF##U?D3Zur?   c                >    t        | t              rt        | d      S | S )N   )rH   floatroundr   s    r>   
format_logr     s    %UALr?   c                   t        | t              rt        | j                               }n| g}d}|t	        |      k  r||   } t        | d      r)| j                  |vr|j                  | j                         t        | d      r)| j                  |vr|j                  | j                         t        | d      r)| j                  |vr|j                  | j                         |dz  }|t	        |      k  r|S )Nr   rM   document_regularizerquery_regularizerr   )
rH   dictlistvaluesr   hasattrrM   r   r   r   )rM   r[   loss_idxs      r>   rP   rP      s    $dkkm$ H
S[
 h4 TYYf%<MM$))$4/0T5N5NV\5\MM$3344,-$2H2HPV2VMM$001A S[
  Mr?   c                  @   e Zd ZU dZ ee      Zded<   dZded<   dZ	ded<   dZ
ded	<    ee      Zd
ed<    ee      Zd
ed<   dZded<    ed       Zded<   dZded<    ed      Zded<    edd      Zded<    edd      Zded<    eed      Zded<    eed      Zded<    eed      Zded <    eed      Zd!ed"<    eed      Zd
ed#<    edd      Zd$ed%<    eddd&      Zd$ed'<    eed      Zd
ed(<    edd      Zd)ed*<    edd      Zd+ed,<    ed-d      Zd.ed/<    eed      Zd0ed1<    edd      Z d2ed3<    eddd&      Z!d4ed5<    eedd6      Z"ded7<    eddd&      Z#ded8<    edd      Z$ded9<    ed:d      Z%d;ed<<    eddd&      Z&ded=<    eedd6      Z'd>ed?<    eddd&      Z(d@edA<    edBd      Z)dCedD<    edEd      Z*dCedF<    ee+d      Z,d0edG<    e e-e.      j^                  dHz  dd&      Z0dIedJ<    eddd&      Z1dKedL<   dxdMZ2	 dy	 	 	 	 	 dzdNZ3d{dOZ4d|dPZ5d}dQZ6d~dRZ7dxdSZ8e9ddT       Z:e9ddU       Z;dddVZ<	 d	 	 	 	 	 	 	 	 	 ddWZ=ddXZ>dyddYZ?	 	 	 	 	 	 	 	 ddZZ@	 	 	 	 	 	 	 	 	 	 dd[ZAdd\ZBdd]ZCdydd^ZDdd_ZEdd`ZFddaZGdxdbZHddcZIdd ZJe9dde       ZKe9ddf       ZLdxdgZMddhZNddiZOddjZPdddkZQddlZRddmZSe9ddn       ZTddoZUddpZVddqZWddrZXddsZYddtZZdduZ[ddvZ\dyddwZ]y)BaseModelCardDataa?  A dataclass storing data used in the model card.

    Args:
        language (`Optional[Union[str, List[str]]]`): The model language, either a string or a list,
            e.g. "en" or ["en", "de", "nl"]
        license (`Optional[str]`): The license of the model, e.g. "apache-2.0", "mit",
            or "cc-by-nc-sa-4.0"
        model_name (`Optional[str]`): The pretty name of the model.
        model_id (`Optional[str]`): The model ID when pushing the model to the Hub.
        train_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the training datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}, {"name": "STSB"}]
        eval_datasets (`List[Dict[str, str]]`): A list of the names and/or Hugging Face dataset IDs of the evaluation datasets.
            e.g. [{"name": "SNLI", "id": "stanfordnlp/snli"}, {"id": "mteb/stsbenchmark-sts"}]
        task_name (`str`): The human-readable task the model is trained on.
        tags (`Optional[List[str]]`): A list of tags for the model.
        local_files_only (`bool`): If True, don't attempt to find dataset or base model information on the Hub.
            Defaults to False.
        generate_widget_examples (`bool`): If True, generate widget examples from the evaluation or training dataset,
            and compute their similarities. Defaults to True.

    .. tip::

        Install `codecarbon <https://github.com/mlco2/codecarbon>`_ to automatically track carbon emission usage and
        include it in your model cards.
    )default_factoryzstr | list[str] | Noner   N
str | Noner   
model_namemodel_idlist[dict[str, str]]rL   rO   	retrieval	task_namec                 
    g dS )N)sentence-transformerssentence-similarityzfeature-extractionr   r   r?   r>   <lambda>zBaseModelCardData.<lambda>Y  s	     !
 r?   	list[str]r   Fboollocal_files_onlyT)defaultgenerate_widget_examples)r   initr   base_model_revision)r   r   r   ry   rx   z*dict[BaseEvaluator, dict[str, Any]] | Noner   zlist[dict[str, float]]r   rR   zlist | Noneusage_examples)r   r   reprr   label_example_listzCodeCarbonCallback | NonerI   zfloat | Noner{   g        r   r   dict[str, str]	citations
int | Nonebest_model_stepbool | Noneir_model)r   r   r   r   similarities
first_saver   intwidget_stepr   r   r   zdict | Noner   r   strr   r   r   versionzmodel_card_template.mdr   template_pathzBaseModel | NonerW   c                   t        | j                  t              r| j                  g| _        | j                  | j                        | _        | j                  | j
                        | _        | j                  rJ| j                  j                  d      dk7  r+t        j                  d| j                  d       d | _        y y y )N/r   zThe provided z} model ID should include the organization or user, such as "tomaarsen/mpnet-base-nli-matryoshka". Setting `model_id` to None.)
rH   r   r   validate_datasetsrL   rO   r   countloggerwarningr<   s    r>   __post_init__zBaseModelCardData.__post_init__  s    dmmS)!]]ODM"44T5H5HI!33D4F4FG==T]]005:NN0 1^ ^ !DM ;=r?   c                   || j                    }g }|D ]  }d|vrd|v r|d   |d<   d|v r| j                  s	 t        |d         }|j                  rq|rod|j                  v ra|j                  j	                  d      }|Dt        |t              r|g}|D ],  }|| j                   vs| j                   j                  |       . |j                  | j                  vr&| j                  j                  |j                         	 |j                  |        |S # t        $ r" t        j                  d|d   d       |d= Y ?w xY w)a!  
        Validate (i.e. check if the dataset IDs exist on the Hub) and process a list of dataset dictionaries.

        Args:
            dataset_list (list[dict[str, Any]]): List of dataset metadata dictionaries.
            infer_languages (bool | None, optional): Whether to infer languages from the dataset information.
                If None (default), languages will be inferred only if `self.language` is empty.

        Returns:
            list[dict[str, Any]]: The validated and possibly updated list of dataset dictionaries.
        nameidr   zThe dataset `id` z5 does not exist on the Hub. Setting the `id` to None.)r   r   get_dataset_infocardDatagetrH   r   r   r  r   	Exceptionr  r  )r<   dataset_listinfer_languagesoutput_dataset_listr\   infodataset_languager   s           r>   r   z#BaseModelCardData.validate_datasets  sS    ""&--/O # 	0GW$7?&-dmGFOwt'<'<6+GDM:D }}Z4===X+/==+<+<Z+H(+7)*:C@4D3E 0,< C#+4==#@$(MM$8$8$BC
 wwdmm3,,TWW5&&w/9	0: #") ! &NN+GDM+<<qr  	&s   D(E Ec                   ddi}|D ]&  }	 |j                   ||j                  j                  <   ( t	        t
              }|j                         D ]  \  }}||   j                  |        dd}|j                         D ci c]  \  }} ||      | c}}| _        | j                  D ci c]  }|j                  j                  | c}D cg c]  }d| 	 c}       y # t        $ r Y w xY wc c}}w c c}w c c}w )NzSentence Transformersa  
@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}
c                b    t        |       dkD  rdj                  | d d       dz   | d   z   S | d   S )Nr   , r   z and r   )r   r   )r[   s    r>   	join_listz/BaseModelCardData.set_losses.<locals>.join_list  s:    6{Qyy-7&*DD!9r?   zloss:)r[   r   r   r   )
citationr=   r   r  r   r   rw   r   r   rE   )r<   r[   r   rM   inverted_citationsr  r  s          r>   rQ   zBaseModelCardData.set_losses  s   # 
&
	  	D59]]	$..112	
 ).'oo/ 	6ND(x(//5	6	
 OaNfNfNhi:J(F)F+X5i]c2dUY4>>3J3JD3P2de$tf~ef   j2des#   #C$C3-C9C>$	C0/C0c                    || _         y r8   )r   )r<   steps     r>   set_best_model_stepz%BaseModelCardData.set_best_model_step  s
    #r?   c                   t        |t        t        f      ry t        |t              rt	        |      }g | _        t        t        j                  t        |j                               d            }d}t        |j                         ddd      D ]  \  }}t        ||   t              r||   j                  j                         D cg c]5  \  }}t        |t              st        |t              r|j                   d	v r|7 }}}||   j#                  |      }	t%        |	      }
|
d
k(  ri }t'        |	j)                  t        j*                  t-        |
      t/        ||
                        D ](  \  }}t1        d |j                         D              ||<   * t3        t5        |j                         d        \  }}|d | t        ||d  d d d         }}|D ]  }|	|   j                         D cg c]  \  }}|dk7  s| }}}t%        |      dk  r|r|j7                         }|	|   j                         D cg c]  \  }}|dk7  s| }}}t%        |      dk(  r|j9                  |       n|j;                  |d          t%        |      dk  r|rt%        |      dk  r|D cg c]0  }t        |t              rt        |j=                               d
   n|2 }}| j>                  dk(  rF| j
                  j;                  |d
   t        j*                  |dd  t%        |      dz
        d       n0| j
                  j;                  dt        j@                  |      i       |d d | _!          | jD                  r9tG        d | jD                  jH                  D              r| jK                  |       y y y c c}}w c c}}w c c}}w c c}w )N)r\      )k  zComputing widget examplesexampleF)descunitleave>   stringlarge_stringr   c              3  D   K   | ]  \  }}|d k7  st        |        yw)dataset_nameN)r   .0r~   r   s      r>   	<genexpr>z8BaseModelCardData.set_widget_examples.<locals>.<genexpr>  s!     "h*#uRUYgRg3u:"hs     c                    | d   S )Nr   r   )xs    r>   r   z7BaseModelCardData.set_widget_examples.<locals>.<lambda>  s
    AaD r?   r~   r   r%  r   r   r   )source_sentence	sentencestextc              3  $   K   | ]  }|d v 
 yw)r.  messageNr   )r'  ms     r>   r(  z8BaseModelCardData.set_widget_examples.<locals>.<genexpr>7  s     Zqa'::Zs   )&rH   r*   r+   r(   r)   rR   r   randomchoicesr   keysr   rw   featuresr   r,   dtypeselect_columnsr   	enumerateselectsamplerangeminsumzipsortedpopextendr   r   r   choicer   rW   any
modalities_set_multimodal_usage_examples)r<   r\   dataset_namesnum_samples_to_checkr%  num_samplescolumnfeaturecolumnsstr_datasetdataset_sizelengthsidxr;  indicesr   target_indicesbackup_indicesr~   sentencer-  
backup_idxbackup_samples                          r>   rS   z%BaseModelCardData.set_widget_examples  s   g1DEFgw'!'2GtGLLN/Cq IJ#)-!(C)[`*
 @	4%L+ ',/A (/|'<'E'E'K'K'M#FGgt,w.7==D^3^ G  ",/>>wGK{+Lq G(""6==|1DL`bnHo#pq  iV  #"h"hhi
 fW]]_.IJJGQ-4\k-BDQ\Q]I^_cac_cIdDeNN & "4;Fs;K;Q;Q;Sm-#xWZ^lWlXm	m)nq(^!/!3!3!5J6A*6M6S6S6U%%2S(Y\`nYn%M % =)Q.!((7 "((q)9: )nq(^ y>A%
 lu_g*Xt2LD*+A.RZZ	  $$(==KK&&/8|)/y}IYZHZ)[ KK&&i0H'IJ&/m#E"4=@	4F ::#ZDJJDYDYZZ//8 [:u. n%s$   :O7O
O
O
O
/5Oc           
        t        t        |j                                     }t        |t              st        |      dk(  ry| j                  r|j                  D cg c]
  }|dk7  s	| }}t        |      dk\  r|d   }|d   }|d   |   }g }t               }	t        t        dt        |                  D ]q  }
||
   |   }t        |t              s| j                  |      n
t        |      }|||	v r>||	j                  |       |j                  |       t        |      dk\  sq n |g|z   | _        yi }|j"                  j%                         D ]  \  }}|dk(  rt        |t&              r|j(                  dv rd	||<   0t*        rt        |t*              rd
||<   Lt,        rt        |t,              rd||<   ht.        sot        |t.              sd||<    t        |j                               d}| j0                  j2                  D ]+  t        t4              st7        fdD              s)} n |ri }|D ]+  }|j%                         D ]  \  }}||k(  s||vs|||<    + - t        dt        |            }g }t        |      D ]=  }
||
   }|j                  |j%                         D ci c]  \  }}|||    c}}       ? || _        y| j0                  j2                  D ]  t        t              sdvsv st        fd|j%                         D              }g }t               }	t        t        dt        |                  D ]q  }
||
   |   }t        |t              s| j                  |      n
t        |      }|||	v r>||	j                  |       |j                  |       t        |      dk\  sq n || _         y yc c}w c c}}w )a  Override :attr:`usage_examples` with multimodal inputs when the model supports non-text modalities.

        Respects the distinction between models that support modalities independently (e.g. CLIP
        supports text OR image, but not combined) vs models that support combined modalities
        (e.g. BLIP supports text+image together via a tuple modality ``("image", "text")``).

        - If the model has a **tuple modality** matching the dataset columns, build multimodal dicts
          (e.g. ``{"text": "...", "image": <PIL.Image>}``).
        - If the model only supports individual non-text modalities (no matching tuple), pick the
          **first non-text modality** and show single-modality examples.
        r   Nr%     r   d      >   r"  r#  r.  imageaudiovideoc              3  &   K   | ]  }|v  
 y wr8   r   )r'  partavailable_modalitiess     r>   r(  zCBaseModelCardData._set_multimodal_usage_examples.<locals>.<genexpr>w  s     2eTX4;O3O2es   r0  c              3  4   K   | ]  \  }}|k(  s|  y wr8   r   )r'  cr2  modalitys      r>   r(  zCBaseModelCardData._set_multimodal_usage_examples.<locals>.<genexpr>  s     TAa8m1Ts   )nextiterr   rH   r*   r   r   column_namessetr<  r=  r   _hash_assethashaddr   r   r6  rw   r,   r7  ImageFeatureAudioFeatureVideoFeaturerW   rE  tupleall)r<   r\   sub_datasetcolrL  	query_coldoc_colquery	documentsseen_hashesir   content_hashcolumn_modalitiesrJ  rK  combined_modalityselected_columnsr_  modnum_examplesr   r;  examplesr`  rc  s                           @@r>   rF  z0BaseModelCardData._set_multimodal_usage_examples:  s    4 012k?3s;7G17L ==&1&>&>Xs#BWsXGX7|q #AJ	!!*#Ay1	!es3K(89: 	A'N73EBLUTWBX4#3#3E#:^bch^iL#/LK4O #/#5$$U+9~*	 (-g	&9# -/*3399; 
	4OFG''5)gmm?Y.Y,2!&)*Wl"C,3!&)*Wl"C,3!&)*Wl"C,3!&)
	4  ##4#;#;#=> +/

-- 	H(E*s2e\d2e/e$,!	
 /1) #4#:#:#< KFCd{t3C'C17(. q#k"23LN<( c$Q%%HXH^H^H`&aHCsF3K'7&abc #1D 

-- 	H(C(X=P-PU]auUuT):)@)@)BTT!es3K(89: 	A'N3/EBLUTWBX4#3#3E#:^bch^iL#/LK4O #/#5OOE*8})	 '/#!	E Yx 'bs   
O)O7Oc                   | j                   r| j                  syt        d | j                  D              ryt        j                  j                  | j                   d      }t        j                  |d       d}g }| j                  D ]  }t        |t              r|j                  |       &t        |t              r$t        d |D              r|j                  |       Zt        |t              rg }|D ]x  }t        |t              r|j                  |       %| j                  |||      }|r|dz  }|j                  |       Q|j                  d	t        |      j                   d
       z |j                  |       t        |t              r| j                  |      si }|j!                         D ]W  \  }	}
t        |
t              r|
||	<   | j                  |
||      }|r|dz  }|||	<   <d	t        |
      j                   d
||	<   Y |j                  |       | j                  |||      }|r|dz  }|j                  |       |j                  d	t        |      j                   d
        || _        y)a0  Save non-text items in :attr:`usage_examples` as files in an ``assets/`` subdirectory.

        After saving, :attr:`usage_examples_display` is set with the same structure as
        :attr:`usage_examples` but with relative file paths (e.g. ``"assets/image_0.jpg"``)
        replacing raw data (PIL images, audio dicts, etc.). Text strings are kept as-is.

        This is called during save, after :meth:`run_usage_snippet` encodes the original data.
        :meth:`generate_usage_snippet` then uses :attr:`usage_examples_display` for the code block.
        Nc              3     K   | ]:  }t        |t              xs$ t        |t              xr t        d  |D               < yw)c              3  <   K   | ]  }t        |t                y wr8   rH   r   r'  r*  s     r>   r(  zHBaseModelCardData.save_usage_example_assets.<locals>.<genexpr>.<genexpr>  s     Df\]ZPQSVEWDf   N)rH   r   r   ro  r'  items     r>   r(  z>BaseModelCardData.save_usage_example_assets.<locals>.<genexpr>  s?      
 tS!gjt&<&fDfaeDfAfg
s   A AassetsTexist_okr   c              3  <   K   | ]  }t        |t                y wr8   r  r  s     r>   r(  z>BaseModelCardData.save_usage_example_assets.<locals>.<genexpr>  s     /Qq
1c0B/Qr  r   <>)r   r   ro  ospathr   makedirsrH   r   r   r   _save_assettyper   r   _is_typed_media_dictrw   r   )r<   
assets_dircounterdisplayr  display_listelemrel_pathdisplay_dictr~   r   s              r>   save_usage_example_assetsz+BaseModelCardData.save_usage_example_assets  sG    }}D$7$7  
++
 
 WW\\$--:

J.'' (	?D$$t$D$'C/QD/Q,Qt$D$'!  	LD!$,$++D1#'#3#3D*g#N##qLG(//9(//!DJ4G4G3H0JK	L |,D$'0I0I$0O!"&**, 	LJC!%-,1S)#'#3#3E:w#O##qLG08L-23DK4H4H3I0KL-	L |,  ++D*gFqLGNN8,NNQtDz':':&;1#=>Q(	?T '.#r?   c                F    t        | t              xr d| v xr
 d| v xs d| v S )zJCheck if a dict is an AudioDict or VideoDict (vs a multimodal input dict).arraysampling_ratevideo_metadata)rH   r   )r  s    r>   r  z&BaseModelCardData._is_typed_media_dict  s1     $%s'T/sRV?V?rZjnrZrsr?   c                   t         t        | t               r| d   | d   d} t        _t        | t              rO| j                  }t	        t        |dd      |j                  |j                  |j                  |j                  f      S t        r@t        | t              r0t	        | j                         | j                  | j                  f      S t        | t              rd| v rddl}| d   }t        |t         j"                        r|j%                         j                         }t        ||j&                        r5t	        |j                         |j(                  | j+                  d      f      S y)zPCompute a content hash for an asset value, or None if the type is not supported.Nr  r  r  r  r  r   )r0   rH   r1   metadatari  getattrduration_secondswidthheight
num_framesPILImagetobytessizemoder   numpyr   Tensorcpundarrayshaper
  )r   r2  npr  s       r>   rh  zBaseModelCardData._hash_asset  s    #
5,(G#Gnu_?UVE#
5,(GAFD113E3EqwwPQPXPXZ[ZfZfghh
5(3%**ejjABBeT"w%'7'NE%.		))+%,U]]_ekk599_;UVWWr?   c                d   | j                  |      }||| j                  v r| j                  |   S t        t        |t              r|d   |d   d}t        t        |t              rt        |j                  dd      }|rt        j                  j                  |      rddl
}t        j                  j                  |      d   xs d}| d	| | }	d
|	 }
t        j                  |d       |j                  |t        j                  j                  ||	             ||
| j                  |<   |
S | j                  |      }t        j                  |d       t         rnt        |t               r^| d| d}	d
|	 }
|j#                  d      j%                  t        j                  j                  ||	             ||
| j                  |<   |
S t        |t&              rd|v rd|v r	 ddl}|d   }t        |t*        j,                        st+        j.                  |      }|j0                  dk(  r|j3                  d      }| d| d}	d
|	 }
|j%                  t        j                  j                  ||	      |j5                         j7                         |d          ||
| j                  |<   |
S t        |t&              rd|v rd|v r	 ddl}|d   }t        |t*        j,                        st+        j.                  |      }|j0                  dk(  r|d   }|j0                  dk(  r6|j<                  d   dv r%|j<                  d   dvr|j?                  dddd      }|j@                  t*        jB                  k7  r|jE                         rF|jG                         dk  r3|dz  jI                  dd      jK                  t*        jB                        }n/|jI                  dd      jK                  t*        jB                        }|jM                  di       jM                  dd      }| d	| d}	d
|	 }
t        j                  j                  ||	      }|j7                         jO                         }|j<                  d   |j<                  d   }}|jQ                  |d      5 }|jS                  dtU        |             }||_+        ||_,        d!|_-        |D ]F  }|j\                  j_                  |d"#      }|ja                  |      D ]  }|jc                  |        H |ja                         D ]  }|jc                  |        	 ddd       ||
| j                  |<   |
S td        jg                  d$ti        |      jj                          y# t8        $ r Y w xY w# 1 sw Y   XxY w# t8        $ r Y Sw xY w)%u+  Save a non-text value to the assets directory, deduplicating by content hash.

        Args:
            prefix: Prepended to filenames, e.g. ``"example_"`` → ``"example_image_0.jpg"``.

        Returns the relative path (e.g. ``"assets/image_0.jpg"``) on success, or ``None`` on failure.
        Nr  r  r  r  r   r   z.mp4video_assets/Tr  image_z.jpgRGBaudio_z.wavr  r  r   )r   rZ  r   r   rX  rZ  g      ?   fpsr   w)r  h264)rateyuv420prgb24)formatz-Could not save predict example asset of type )6rh  r   r0   rH   r1   r  r  r  r  isfileshutilsplitextr  copy2r   _video_decoder_to_dictr  convertsaver   
torchaudior   r  	as_tensorndim	unsqueezer   r  r  avr  permuter7  uint8is_floating_pointmaxclamptor
  r  open
add_streamr   r  r  pix_fmt
VideoFramefrom_ndarrayencodemuxr  r  r  r   )r<   r   r  rP  prefixrx  source_pathr  extfilenamer  r  r  r  r  filepathframesr  r  	containerstream
frame_dataframepackets                           r>   r  zBaseModelCardData._save_asset   s"    ''.#8I8I(I$$\22 #
5,(G#Gnu_?UVE#
5,(G!%..&$?Krww~~k:gg&&{3A6@&$XVC56$XJ/J6["'',,z8*LM+6>D%%l3//6E
J. 
5(3 uD1H 
+HMM% %%bggll:x&HI'2:!!,/O eT"w%'7Ou<T!g!%6!OOE2E::?!OOA.E$XVC55$XJ/Z BEKKMDUDUDWY^_nYop+6>D%%l3
 eT"w%'7<LPU<U'g!%6!OOE2E::?!!HE::?u{{1~'Bu{{SU^gGg!MM!Q15E;;%++-..0UYY[C5G!& 3 3As ; > >u{{ K %As 3 6 6u{{ Cii 0"599%D$XVC55$XJ/77<<
H=**, &QaWWXCW0 
.I&11&uSz1JF#(FL$*FM%.FN&, 2
 " : ::g : V&,mmE&: 2F%MM&122 #)--/ .!f-.
.  +6>D%%l3 	FtE{G[G[F\]^_  :
. 
.  s?   'CV GV# B#V V# 	VVV V# #	V/.V/c                $   ddl m} t        |      | j                  |<   t	        |d      r|j
                  x}rt        ||      r$|j                  D cg c]  }|j
                   }}nt        |t              r|g}|j                         D 	ci c]  \  }}	||v s||	 }
}}	| j                  r4| j                  d   d   |k(  r| j                  d   j                  |
       y | j                  j                  ||d|
       y y y c c}w c c}	}w )Nr   )SequentialEvaluatorprimary_metricr   r   r   )%sentence_transformers.base.evaluationr  r   r   r   r  rH   
evaluatorsr   rw   r   r   r   )r<   	evaluatorr   r   r  r  primary_metricssub_evaluatorr~   r   training_log_metricss              r>   set_evaluation_metricsz(BaseModelCardData.set_evaluation_metricsl  s    	N,0My) 9./	H`H`5`_5`)%89U^UiUi"jM=#?#?"j"jOS1#2"3AH#k:3TW[jTjCJ#k #k!!d&8&8&<V&D&L""2&--.BC""))!& $ / 6a/"j $ls   DDDc           	     (   d}t        t              }t               }|D ]m  }|d   }|d   }||vrC||   j                  dt	        |       d       t        ||         |k\  r|j                  |       t        |      | j                  k(  sm n |j                         D cg c]^  \  }}| j                  j                  r)t        |t              r| j                  j                  |   n|ddj                  |      z   dz   d	` c}}| _        y c c}}w )
NrZ  r.  labelz<li>z</li>z<ul> z</ul>)LabelExamples)r   r   rg  r   r   r   rj  num_classesrw   rW   labelsrH   r   r   r   )	r<   r\   num_examples_per_labelr~  finished_labelsr;  r.  r  example_sets	            r>   set_label_examplesz$BaseModelCardData.set_label_examples  s
   !"t$% 	F&>D7OEO+&&d4j\'?@x'+AA#''.?#t'7'77	 '/nn&6#

 #{ 6:ZZ5F5F:V[]`Ka**51gl"RWW[%99GC#
 #
s   !A#Dc           	     4   t        |t              r=|j                         D cg c]  \  }}| j                  ||      D ]  }| ! c}}}S |rt	        j
                  d|      rd }|xs |j                  j                  t        |j                        d}|j                  j                  rR|j                  |j                  j                  v r0|j                  j                  |j                     j                  |d<   |j                  x}rt        |j                               d   }|j                  d      rUd|v rQ|t!        d      d  j                  d      }|d   |d<   |d	   j                  d
      d   x}	rt!        |	      dk(  r|	|d<   |gS c c}}}w )N)r%  z_dataset_\d+)r  r   r  r   zhf://datasets/@r  r   r   (   revision)rH   r)   rw   infer_datasetsrematchr  r%  r   r   splitsr}  download_checksumsr   r5  r   r   )
r<   r\   r%  rp  inferred_datasetdataset_output	checksumssourcesource_partsr  s
             r>   r  z BaseModelCardData.infer_datasets  s   g{+ 29 -L+(,(;(;KVb(;(c % !   BHH_lCL !=GLL$=$='
 <<7==GLL4G4G#G%,\\%8%8%G%T%TN6"  22292)..*+A.F  !12sf}%c*:&;&=>DDSI'3At$ ,Q 5 5c :1 ==H=3x=TVCV19N:.7s   $Fc                   |si S t        |t              r5t        |      |d<   |d   j                         D cg c]
  }|dk7  s	| }}n|j                  }|D cg c]  }d| d
 c}|d<   i |d<   t        |t              rs|D ]  }|dd	 |   }|d   }t        |t
              r| j                  j                  |d
      }t        |t        t        f      r*d|v r&|d   j                  d      j                         }	d}
n|D cg c]  }t        |       }	}d}
dt        t        |	      d       d|
 t        t        |	      t        |	      z  d       d|
 t        t        |	      d       d|
 dd|d   |<   t        |t        t         f      rTt#        |      }dt%        |      D ci c])  }|t        |      dkD  rdnd ||   t        |      z  d+ c}d|d   |<   ft        |t&              rVdt        t        |      d      t        t        |      t        |      z  d      t        t        |      d      dd|d   |<   t        |t(              rt#        |D cg c]  }t        |       c}      }t        |      dk(  rddt        |       did|d   |<   'dt        |       dt        |      t        |      z  ddt        |       ddd|d   |<   it*        rt        |t*              r|D cg c]  }t        |t*              s|j,                  ! }}|D cg c]  }t        |t*              s|j.                  ! }}dt        |       dt        |       d t        |      t        |      z   dt        |      t        |      z   d t        |       dt        |       d dd|d   |<   Dt        |t              rd!|v rd"|v st0        t        |t0              r|D cg c]D  }t        |t              rd!|v rd"|v st0        $t        |t0              rt        |d!         |d"   z  F }}|rKd#t        |      dd$t        |      t        |      z  dd$t        |      dd$|d"    d%d&d|d   |<   d#i d|d   |<   t2        t        |t2              ru|D cg c].  }t2        &t        |t2              r|j4                  j6                  0 }}|D cg c].  }t2        &t        |t2              r|j4                  j,                  0 }}|D cg c].  }t2        &t        |t2              r|j4                  j.                  0 }}|rd't        |      dd(t        |       dt        |       d t        |      t        |      z  dd(t        |      t        |      z   dt        |      t        |      z   d t        |      dd(t        |       dt        |       d |j4                  j8                  d)d*d|d   |<   d'i d|d   |<   t;        |      i d|d   |<    dAd,}dd-i|d   j=                         D ci c]  \  }}||d.    c}}dd/i|d   j=                         D ci c]  \  }}| ||d+          c}}g}t?        tA        |      jC                  d0d1      d2      |d3<   |dd4 |d5<   ||d6<   | jE                  |      \  |d7<   }d8t;        |      i|d9<   tG        |d:      rk|jI                         }dBd;}|j=                         D ci c]  \  }}| ||       }}}	 tK        jL                  |d<=      }t?        d>| d?d2      |d9   d@<   |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}}w c c}}w c c}}w # tN        $ r tQ        |d<=      }Y yw xY w)Ca  
        Given a dataset, compute the following:
        * Dataset Size
        * Dataset Columns
        * Dataset Stats
            - Strings: min, mean, max word count/token length
            - Integers: Counter() instance
            - Floats: min, mean, max range
            - List: number of elements or min, mean, max number of elements
        * 3 Example samples
        * Loss function name
            - Loss function config
        r  r   r%  <code></code>rL  statsNr  document)taskattention_maskr   )dimtokens
charactersr"  rX  r   )r=  meanr  )r7  datar   ~r  z.2%r   r   z	 elements.2fr[  r*  z pxr  r  r\  sz Hz)r=  r  r  r  r]  zs, .0f)r=  r  r  r  r  c                Z    ddj                  d | j                         D              z   dz   S )Nz<ul><li>z	</li><li>c              3  0   K   | ]  \  }}| d |   ywz: Nr   r&  s      r>   r(  zRBaseModelCardData.compute_dataset_metrics.<locals>.to_html_list.<locals>.<genexpr>U  s      4f:3PUuBug5F4fs   z
</li></ul>)r   rw   )r  s    r>   to_html_listz?BaseModelCardData.compute_dataset_metrics.<locals>.to_html_listT  s.    !K$4$44fY]YcYcYe4f$ffiuuur?   r  r7  details-:|--|  stats_tablerZ  r~  _example_columnsexamples_tabler%   rM   get_config_dictc                4   t        | t        j                        s| S | j                  j                  }g }t        | d      rDt        | j                  d      r.|j                  t        | j                  j                               t        | d      r| j                  r|j                  d       t        | d      rE| j                         j                         D ]$  \  }}|j                  | dt        |              & |r| ddj                  |       d	S |S )
NrD   r   trust_remote_codeztrust_remote_code=Truer!  =(r  ))rH   r   Moduler=   r   r   rD   r   r   r   r#  r!  rw   r   )r   module_namemodule_args_strr~   vals        r>   format_config_valuezFBaseModelCardData.compute_dataset_metrics.<locals>.format_config_valueg  s    !%3 L#oo66"$ 5"34AVAVXd9e#**40E0E0P0P+QR5"565;R;R#**+CD5"34$)$9$9$;$A$A$C ES'..#aS	{/CDE #)]!DIIo,F+GqII""r?   r   r   ```json

```config_code)r  r   r   r   r   r   ))rH   r(   r   r5  rf  r   rW   
preprocessr   r   r>  tolistr   r=  r  r   r   r   r@  r   r   r  r  r  r0   r1   r  r  average_fpsr%   rw   r   r   replace_render_examples_tabler   r!  jsondumps	TypeErrorr   )r<   r\   r   rM   rJ  dataset_columns
subsectionfirst	tokenizedrO  suffixrT  r  r~   lstimgwidthsheightsd	durationsvr  r   stats_linesr   configr+  
str_configs                               r>   compute_dataset_metricsz)BaseModelCardData.compute_dataset_metrics  s   & Igw'#&w<L 4;AJOO4Eb&SaIavbOb%22OJY"ZVF87#;"ZY "Wgw') v_$Ud^F3
"1eS) $

 5 5jz 5 RI!)dH-=>CSW`C`"+,<"="A"Aa"A"H"O"O"Q!)AK"LX3x="L"L!-!)&+CL!&<%=Qvh#G',S\CL-H!'L&MQvh$W&+CL!&<%=Qvh#G!5L)&1  T{3%j1G!& (.g! #  3w<!+;C#DWS\TWXbTcEcdgDh!ii!5L)&1  u-!(#(Z!#<$)#j/C
O*KQ$O#(Z!#<!5L)&1  t,%:&FCs3x&FGG7|q(%+ &3u:,i(@%9W-f5 &,*-g,y'A+.w<#g,+Fs*K9(U*-g,y'A%9W-f5  Juh$?7A!_ZPSU]E^#))!_!_9C"a#zRUW_G`3::"a"a%,*-f+aG~S'I+.v;#f++E*FaGX[\cXdHdGeeh(i*-f+aG~S'I%9W-f5 %UD1g6F?^cKc$0Z|5T &0% ! *1d 31\]I] , 8Z<=X  '
Oa.@@%	 % %)0.1)nS-A+C/29~I/Ns.SST,U.1)nS-A+C8=o8N7Os5S	)"=L1&9 GNWY<ZL1&9%1j6U &0% !+7Jq,<W JJ77%	 % &0" !+7Jq,<W JJ,," " &0# !+7Jq,<W JJ--# #
 %)0.1)nS-AS[MQRSVW^S_R``c+d/29~I/Ns.SSVWZ[aWbfijpfqWqVrrstwx  uA  EH  IP  EQ  uQ  tR  RU  -V.1)nS-AS[MQRSVW^S_R``c+d.3nn.H.H-M	)"=L1&9 GNWY<ZL1&9BJ5/[]8^W-f5mv_pv VelSZF[FaFaFcd
UU7^ 3deYuVbcjVkVqVqVs"t
U3U6](C#C"tuK +11D[1Q1Y1YZ_af1gim*nL''.r{L$/>L+,040K0KL0Y-L)*A  
V 4*+))+F#( IOW*#uc.u55WFW7!ZZq9
 399ZLPU9VX\2]L /[ c #[ #M! 'G( "`"a%&%
"
#0  e"tD X  7$VA6
7sx   
]?]?^^	0.^*^
^^2^^;A	^"<3^'53^,.3^1!^6^<
9__ _! _!c                   |r|rft        |t              rt        |      t        |      k7  st        |t              r/t        |      dk7  r!t        j                  d| d| d| d       g }|s| j                  |      }t        |t              ret        |j                         |j                         |      D cg c].  \  }}}| j                  ||t        |t              r||   n|      0 }}}}n| j                  ||d   |      g}|dk(  r?t        |D cg c]  }|j                  dd       c}      }	|	r| j                  d	|	        |re|dk(  r`| j                  Tt        |t              r!t!        d
 |j                         D              }
nt!        |j"                        }
ddh|
z  rd| _        | j%                  |      S c c}}}w c c}w )Nr   zThe number of `z?_datasets` in the model card data does not match the number of z1 datasets in the Trainer. Removing the provided `z$_datasets` from the model card data.r   rB   r  zdataset_size:c              3  B   K   | ]  }|j                   D ]  }|   y wr8   )rf  )r'  rp  rJ  s      r>   r(  z=BaseModelCardData.extract_dataset_metadata.<locals>.<genexpr>  s$     "uk\g\t\t"uRX6"u6"us   rt  questionT)rH   r)   r   r(   r  r  r  r?  r5  r   rG  r   r>  r
  rE   r   rg  rf  r   )r<   r\   dataset_metadatarM   dataset_typer%  dataset_valuer   r  num_training_samplesrf  s              r>   rK   z*BaseModelCardData.extract_dataset_metadata  s    G[1c:J6KsSZ|6[w0S9I5Ja5O%l^3rs  sA A..:^;_a $& ##'#6#6w#? ';/ FI(8:JF	$ 	$ Bm\ 00%$.8t.D\*$	$  	$ %)$@$@JZ[\J]_c$d#e  7"#&P`'aHVQ(?'a#b #.B-CDE |w.4==3H'4(""uW^^=M"uu"7#7#78$|3 $%%&6779	$ (bs   <3GGc                   || _         | j                  y ddlm} ||j	                         D cg c]  }|j
                   c}v rd| _        y dD ]5  }||j                  v st        |j                  |         dkD  s.d| _         y  y c c}w )Nr   )RouterT)rt  r
  passagecorpus)rW   r   "sentence_transformers.base.modulesrP  childrenr=   promptsr   )r<   rW   rP  moduleir_prompt_names        r>   register_modelz BaseModelCardData.register_model  s    
==$=U^^5EF6f&&FF DMH 	N.3u}}^7T3UXY3Y $		 Gs   Bc                    || _         y r8   r   )r<   r   s     r>   set_model_idzBaseModelCardData.set_model_id  s	     r?   c                    | j                   ry	 t        |      }|j                  | _        ||dk(  r|j
                  }|| _        y# t        $ r Y yw xY w)NFmainT)r   get_model_infor  r  r   shar   )r<   r   r  r   s       r>   set_base_modelz BaseModelCardData.set_base_model  s_      	'1J %--x61!~~H#+   		s   A 	AAc                8    t        |t              r|g}|| _        y r8   )rH   r   r   )r<   r   s     r>   set_languagezBaseModelCardData.set_language  s    h$ zH r?   c                    || _         y r8   )r   )r<   r   s     r>   set_licensezBaseModelCardData.set_license  s	    r?   c                    t        |t              r|g}|D ],  }|| j                  vs| j                  j                  |       . y r8   )rH   r   r   r   )r<   r   tags      r>   rE   zBaseModelCardData.add_tags  s@    dC 6D 	&C$))#		  %	&r?   c           
        | j                   j                  x}|j                  j                  }t	        |      }dj                  |j                  dd        g}|j                  j                  d      }|t        dt        |            D cg c].  }dj                  |d |       dz   dj                  ||d        z   0 c}z  }|D ]  }| j                  |      s y  y y c c}w )Nr   r   r   )rW   transformers_modelrE  _name_or_pathr   r   partsr  r   r<  r   r`  )r<   ri  r   base_model_pathcandidate_model_idsr  rP  r   s           r>   try_to_set_base_modelz'BaseModelCardData.try_to_set_base_model  s    "&**"?"??L+22@@J":.O $'88O,A,A"#,F#G"H
 %))//4FQVWXZ]^dZeQf$JM&,sxxst/EE$  0 &&x0 M$s   3C c                   g }i }g }| j                   j                         D ]^  \  }}t        |dd      t        |dd      }r{t        fd|j	                         D              rY|j                         D ci c]  \  }}|t              dz   d | }}}|r%|j                  dz         r|t              dz   d }d#d}	|j                         D ci c]  \  }}| |	|       }}}|j                         D 
cg c]2  \  }
}|
|k(  rd|
 dn|
|
|k(  rdt        |       dn
t        |      d	4 }}
}|j                  }t        |dd      }d
}t        |d      r:|j                         x}r(	 t        j                  |d      }t        d| dd      }|j!                  t#        |      ||||d       fd|j%                  |j                         D 
cg c]  \  }
} |      x}vt'        ||j)                         j+                  dd      |xs d|r"|j+                  dd      j+                  dd      nd|
j+                  dd      j-                         |
|       c}}
       |j/                  |       a g }|D ]  }|d   D ci c]  }|d   |d    }}t1        |      }|D ]  }t1        d |d   D              }|d   |d   k(  s$||k(  s*|d   |d   k7  s6|d   |d   k(  sB|d   D ]+  }d|v r|j3                  d      ||d   <   ||d      ||d   <   - t5        |d   t6              s	|d   g|d<   |d   j!                  |d            |j!                  |        |D ]/  }t9        |j3                  d            j+                  dd       |d!<   1 |t7        |j	                               t;        | j<                  |      d"S c c}}w c c}}w c c}}
w # t        $ r t        |      }Y rw xY wc c}}
w c c}w )$au  Format the evaluation metrics for the model card.

        The following keys will be returned:
        - eval_metrics: A list of dictionaries containing the class name, description, dataset name, and a markdown table
          This is used to display the evaluation metrics in the model card.
        - metrics: A list of all metric keys. This is used in the model card metadata.
        - model-index: A list of dictionaries containing the task name, task type, dataset type, dataset name, metric name,
          metric type, and metric value. This is used to display the evaluation metrics in the model card metadata.
        r  Nr  c              3  F   K   | ]  }|j                  d z           yw)r   N)r   )r'  r~   r  s     r>   r(  z8BaseModelCardData.format_eval_metrics.<locals>.<genexpr>  s     Q3CNN4#:6Qs   !r   r   c                b    	 t        | d      r| j                         S 	 | S # t        $ r Y | S w xY w)z^Try to convert a value from a Numpy or Torch scalar to pure Python, if not already pure Pythonr7  )r   r  r  r   s    r>   try_to_pure_pythonzABaseModelCardData.format_eval_metrics.<locals>.try_to_pure_python  sB    ug.$zz|+ /  ! s   ! 	..**)Metricr,   r  r!  r   r   r,  r-  r  )
class_namedescriptionr%  table_linesr.  c                    	 t        |       S # t        $ r Y nw xY wt        | t              rd| v r | j	                         d         S y )Nr   r   )r   r  rH   r   r   )metric_valuetry_to_floats    r>   rz  z;BaseModelCardData.format_eval_metrics.<locals>.try_to_float=  sT     ..   lC0SL5H'(:(:(<Q(?@@s   
 	r   -unknownUnknown)r   	task_typerL  r%  metric_namemetric_typery  rw  rt  r,   c              3  &   K   | ]	  }|d      yw)rt  Nr   )r'  lines     r>   r(  z8BaseModelCardData.format_eval_metrics.<locals>.<genexpr>_  s     1pT$x.1ps   ru  r%  r.  r  r  table)eval_metricsr   r   r   r   r   r   )r   rw   r  ro  r5  r   r   r   rv  r   r!  r5  r6  r7  r   r   r   r%   rB  r   lowerr3  titler   rg  rA  rH   r   r   r   r   )r<   r  all_metricseval_resultsr  r   r  r~   r   rr  
metric_keyry  rw  rv  r%  r.  rE  rF  metric_value_floatgrouped_eval_metricseval_metricr  eval_metric_mappingeval_metric_metricsgrouped_eval_metricgrouped_eval_metric_metricsr  rz  s                             @@r>   format_eval_metricsz%BaseModelCardData.format_eval_metrics  s    "&"8"8">">"@ L	(Iw9fd3D$Y0@$GNQ',,.QQIPY:33s4y1}/6YY!n&?&?s
&K%3CIMO%DN IPX*#us.u55XGX 18 -J 6@>5Q:,b1Wa!^3  "*\":!;2>#L1	K  $//K"9fd;LKy"34ID]D]D_:_&:_-!%F1!=J %yE%BDI"*9"5#.$0#.#.	  5<MMO 1
L.:<.HH*U "-"-"3"3"5"="=c3"G%1%>YYe\%9%9#s%C%K%KCQT%Ukt$.$6$6sC$@$F$F$H$.%7 w'YL	(^  "' 	9KMXYfMg"hT4>4=#@"h"h"%&9":'; 9#.11pM`anMo1p.p+-1D\1RR+/JJ#N37J>7ZZ#M26I-6XX !4M B `"d?HLQXHYD!4^!DE<OPTU]P^<_[89	` &&9.&I4P?RSa?b>c+N;'7>>{>?Z[%9( %++K8/	92 $8 	+>?R?V?VWd?e+f+n+nu,(	 1K,,./6tU
 	
U Z Y" ! -!$VJ-4& #is1   ;OO7O!5O'B
PP'O?>O?c                   g | j                   D ]-  }|j                         D ]  }|vsj                  |        / dfd}t        |      }| j                   D cg c]M  }|D ci c]?  }||d   | j                  k(  rd||v rt        ||         nd dn|j                  |d      A c}O }}}t        |      }|d|v dS c c}w c c}}w )Nc                    | dk(  ry| dk(  ry| dk(  ry| dk(  ry| j                  d	      ry
j                  |       dz   S )Nr   r   r   r   r   rX  r   rZ  rM   r   r  )r   index)r~   eval_lines_keyss    r>   sort_metricsz<BaseModelCardData.format_training_logs.<locals>.sort_metrics  sS    g~f}o%''||F#"((-11r?   r+  r   rs  r{  )
eval_linesexplain_bold_in_eval)r~   r   r   r   )r   r5  r   r@  r   r   r
  r   )	r<   linesr~   r  sorted_eval_lines_keysr  r   r  r  s	           @r>   format_training_logsz&BaseModelCardData.format_training_logs  s   '' 	0Ezz| 0o-#**3/0	0	2 "(\!J **
  2	  <4#7#77 3$;*T#Y/CHKXXc3'(
 
 )7
$$(J$6
 	

s   "	C+AC	/C	Cc                (     j                   j                  t         j                   dd      }d fddfd} |       }||S |r$	 t        |      } ||      }||S 	 t        d      t        d      # t        $ r Y t        d      w xY w)a]  Convert a ``VideoDecoder`` to a ``VideoDict`` by extracting all frames.

        Tries multiple strategies to extract frames:
        1. ``get_frames_at`` on the original decoder (random-access batch)
        2. Recreate a fresh decoder from source path and retry
        3. Collect frames one-by-one via ``decoder[i]`` (random-access seek)
        r  Nc                \    j                   j                  t        t        |             dS )N)r  total_num_framesframes_indices)r  r  r   r<  )num_decoded_framesr  r   s    r>   _make_metadataz@BaseModelCardData._video_decoder_to_dict.<locals>._make_metadata  s+    $)NN$=$="&u-?'@"A r?   c                   t        |       }||dz
  fD ]S  }	 | j                  t        t        |                  }|j                   |j                  j
                  d         dc S  g }t        |      D ]  }	 |j                  | |           |r't        j                  |       t        |            dS y # t        $ r Y w xY w# t        $ r Y  Ew xY w)Nr   r   )r  r  )
r   get_frames_atr   r<  r  r  r  r   r   stack)decodernr  r  	collectedrw  r  s         r>   _try_decodez=BaseModelCardData._video_decoder_to_dict.<locals>._try_decode  s    GA !a%j 
$224j8I3JKF!'*89J9J19M*N  I1X $$WQZ0
 "[[3&4S^&D 
 ! !  ! s$   AB;;C
;	CC
	CCz)Could not decode frames from VideoDecoder)r  r   r   r   )r   zdict[str, Any] | None)r  r2  r  r1   r  RuntimeError)r   r  r  resultfreshr  r  s   `    @@r>   r  z(BaseModelCardData._video_decoder_to_dict  s     nn((u~~vt4		: U#M $T*$U+%!M &
 FGGlFGG  FGGs   A; ;	BBc                    t         %t        | t               rt        j                  |       S t        | t              r7| j                         D ci c]  \  }}|t        j                  |       c}}S | S c c}}w )zConvert a value to a format suitable for model inference.

        ``VideoDecoder`` objects are converted to a ``VideoDict`` via :meth:`_video_decoder_to_dict`.
        All other values are returned as-is.
        )r1   rH   r   r  r   rw   _prepare_for_inference)r   r  rC  s      r>   r  z(BaseModelCardData._prepare_for_inference  se     #
5,(G$;;EBBeT"OT{{}]tq!A(??BB]] ^s    A5c                0    | j                   
g d| _         y y )NzThe weather is lovely today.zIt's so sunny outside!zHe drove to the stadium.)r   r  s    r>   run_usage_snippetz#BaseModelCardData.run_usage_snippet  s    &#D 'r?   c                    | j                   xs | j                  }|s| j                  d      S | j                  xs |}t        d |D              }|r| j	                  |      S | j                  |      S )a  Generate the Python usage code snippet for the model card.

        Returns the code block (including \`\`\` delimiters) showing how to use this model.
        Called after :meth:`run_usage_snippet` has set :attr:`usage_examples` and :attr:`similarities`.

        Subclasses can override this to generate snippets for different model types (e.g. IR models,
        cross-encoders) or multimodal inputs.
        Nc              3  J   K   | ]  }t        |t        t        f         y wr8   )rH   r   r   r  s     r>   r(  z;BaseModelCardData.generate_usage_snippet.<locals>.<genexpr>  s     Pz$d<<Ps   !#)r   r   _generate_text_snippetrD  _generate_non_text_snippet)r<   r  r  has_non_texts       r>   generate_usage_snippetz(BaseModelCardData.generate_usage_snippet  su     --D1D1D..t44 $$/PPP227;;**733r?   c           
     *   t        | dd      }t        | dd      }| j                  xs |}|xs g d}| j                         }d| ddd	| d
| dddg}|D ]  }|j                  d|d        |j	                  ddddt        |       d| ddddg       | j                  r-|j                  d       |j                  | j                         n,|j	                  ddt        |       dt        |       dg       ddj                  |      z   dz   S )z#Generate a text-only usage snippet._snippet_model_classSentenceTransformer_snippet_default_model_idsentence_transformers_model_idr  "from sentence_transformers import r     # Download from the 🤗 Hubmodel = ("")# Run inferencezsentences = [    ,]z$embeddings = model.encode(sentences)print(embeddings.shape)# [r  .# Get the similarity scores for the embeddings7similarities = model.similarity(embeddings, embeddings)print(similarities)print(similarities.shape)
```python

r-  )r  r   "_get_snippet_output_dimensionalityr   rB  r   r   r   )	r<   r  model_classdefault_model_idr   r~  
output_dimr  r.  s	            r>   r  z(BaseModelCardData._generate_text_snippet  sT   d$:<QR"4)DFfg==4$4 
 

 <<>
 1>*{m2hZr2
  	+DLL4xq)*	+6)c(m_Bzl!4@I
	
 LL./LL**+LL/#h-3x=/; tyy//'99r?   c           
     8   t        | dd      }t        | dd      }| j                  xs |}| j                         }d| ddd| d	| d
ddg}|D ]&  }|j                  d| j	                  |       d       ( |j                  ddddt        |       d| ddddg       | j                  r-|j                  d       |j                  | j                         n,|j                  ddt        |       dt        |       dg       ddj                  |      z   dz   S )zYGenerate a usage snippet for non-text inputs (multimodal dicts or single-modality items).r  r  r  r  r  r  r  r  r  r  r  z
inputs = [r  r  r  z!embeddings = model.encode(inputs)r  r  r  r  r  r  r  r  r  r-  )	r  r   r  r   _format_snippet_valuerB  r   r   r   )r<   r  r  r  r   r  r  r  s           r>   r  z,BaseModelCardData._generate_non_text_snippet?  sQ   d$:<QR"4)DFfg==4$4<<>
 1>*{m2hZr2
  	EDLL4 : :4 @ACD	E3)c'l^2j\3@I
	
 LL./LL**+LL/#g,r#g,q9 tyy//'99r?   c                N   |d   }|d   sd|fS t        |d   t        |d         d            }g }t        |      D ]A  }i }|D ]'  }|d   |   |   }	| j                  |	|      \  }
}|
||<   ) |j	                  |       C t        t        |      j                  dd      d      |fS )a  Render the examples table for a dataset, saving non-text values as assets when possible.

        Returns:
            A tuple of ``(rendered_table, new_asset_counter)``. The counter should be passed to
            subsequent calls to avoid filename collisions across datasets.
        r  r~  r  r   r  r  r  )r   r   r<  _format_and_save_exampler   r   r   r3  )r<   r   asset_counterr8  rI  examples_lines
sample_idxrL  rJ  r   cells              r>   r4  z(BaseModelCardData._render_examples_tableh  s     ''9:J'}$$,z24Z8P3QRS3TUV, 	+JG) '$Z08D&*&C&CE=&Y#m"&' !!'*	+ ).9AA%OQUVXeeer?   c                   t         xr t        |t               xsT t        duxr t        |t              xs8 t        |t              xr
 d|v xr d|v xs t        duxr t        |t              }|r| j
                  sd| j                  |       d|fS | j                  |      }|/|| j                  v r!| j                  || j                  |         |fS t        j                  j                  | j
                  d      }| j                  |||d      }|r| j                  ||      |d	z   fS d| j                  |       d|fS )
aR  Format a dataset example value for the model card table, saving non-text values as assets.

        Delegates the actual file I/O to :meth:`_save_asset` and wraps the resulting path in the
        appropriate HTML tag via :meth:`_example_asset_html`.

        Returns:
            A tuple of ``(html_cell_content, new_counter)``.
        Nr  r  r  r  r  example_)r  r   )r  rH   r0   r   r1   r   _format_example_valuerh  r   _example_asset_htmlr  r  r   r  )r<   r   r  is_mediarx  r  r  s          r>   r  z*BaseModelCardData._format_and_save_example}  sW    5*UH5 ND(LZ|-LN5$'YGu,<YTYAYN D(LZ|-L	 	 t}}D66u=>gFOO ''.#8I8I(I++E43D3D\3RSU\\\WW\\$--:
##E:wz#R++E8<gkII2259:'BGKKr?   c                h   t         rt        |t               rd| dS t        t        |t              st        |t              r&d|v r"d|v rt	        |d         |d   z  }d| d|ddS t
        0t        |t
              r |j                  }d	| d
|j                  ddS d| j                  |       dS )z6Generate an inline HTML tag for a saved example asset.z
<img src="z" width="200">r  r  z<audio controls src="z"><code>&lt;audio r  zs&gt;</code></audio>z!<video controls width="200" src="z"><code>&lt;video zs&gt;</code></video>r  r  )	r  rH   r0   r   r   r1   r  r  r  )r<   r   r  durationr2  s        r>   r  z%BaseModelCardData._example_asset_html  s    
5(3z88$E<)Hud#5(8_PU=U5>*U?-CCH*8*4FxPSnThii#
5,(GA3H: >##$#5#5c"::NP 2259:'BBr?   c           	        t         t        | t               r| d   | d   d} t        Ut        | t              rE| j                  }d|j                  dd|j
                   d|j                   d	|j                  d
d	S t        r-t        | t              rd| j
                   d| j                   dS t        | t              r)d| v r%d| v r!t        | d         | d   z  }d|dd| d    dS t        | t              r	d| v rd| v ryt        | t              r"t        |       dkD  rt        | dd       dd dz   S t        | t              rt        |       dkD  r| dd dz   S t        |       j                  dd      j                  dd      }|S )zAFormat a dataset example value for the model card examples table.Nr  r  r  z
&lt;video r  zs r*  z @ r  zfps&gt;z
&lt;image z&gt;z
&lt;audio zs @ z Hz&gt;r  z&lt;video&gt;r  r   z, ...]r  z...r  z<br>|z\|)r0   rH   r1   r  r  r  r  r2  r  r   r   r   r   r3  )r   r2  r  r  s       r>   r  z'BaseModelCardData._format_example_value  s    #
5,(G#Gnu_?UVE#
5,(GA 2 237r!''!AHH:SQRQ^Q^_bPccjkk
5(3}Aell^4@@eT"w%'7Ou<T5>*U?-CCH~T%2H1IQQeT"w%'7<LPU<U"eT"s5zA~uRay>#2&11eS!c%j4&7$<%''U##D&199#uEr?   c                l    t        |t              r+|j                  d      rt         j	                  |            S t        |t
              r.dj                   fd|j                         D              }d| dS t        |t              r dj                   fd|D              }d| dS t        |      S )	a  Format a value for inclusion in a code snippet.

        Strings are shown as repr (quoted), and asset paths are converted to Hub URLs
        when model_id is available. Dicts and lists are formatted recursively so that
        nested asset paths also get URL conversion.
        r  r  c              3  P   K   | ]  \  }}|d j                  |         ywr  r  )r'  r  rC  r<   s      r>   r(  z:BaseModelCardData._format_snippet_value.<locals>.<genexpr>  s,     bDAqR(B(B1(E'FGbs   #&{}c              3  @   K   | ]  }j                  |        y wr8   r  )r'  rC  r<   s     r>   r(  z:BaseModelCardData._format_snippet_value.<locals>.<genexpr>  s     Kd88;Ks   [r  )	rH   r   r   r   _asset_path_to_urlr   r   rw   r   )r<   r   rk  elemss   `   r>   r  z'BaseModelCardData._format_snippet_value  s     eS!e&6&6y&A//677eT"IIbTYT_T_TabbEwb>!eT"IIKUKKEugQ<E{r?   c                B    | j                   rd| j                    d| S |S )z]Convert a relative asset path to a Hub URL if model_id is available, otherwise keep relative.https://huggingface.co//resolve/main/rZ  )r<   relative_paths     r>   r  z$BaseModelCardData._asset_path_to_url  s&    ==,T]]O>-YYr?   c                p    | j                   r	 | j                   j                         S y# t        $ r Y yw xY w)N?)rW   get_embedding_dimensionr  r  s    r>   r  z4BaseModelCardData._get_snippet_output_dimensionality  s=    ::zz99;;   s   ) 	55c                0   | j                   j                  j                         }t        |j                        dz  t        |j
                        dd|j                  dk(  |j                  |j                  d}|j                  r|j                  |d<   d|iS )Nr  
codecarbonzfine-tuningY)	emissionsenergy_consumedr  training_typeon_cloud	cpu_modelram_total_sizehardware_usedr   )
rI   tracker_prepare_emissions_datar   r  r  r  r  r  	gpu_model)r<   emissions_datar   s      r>   get_codecarbon_dataz%BaseModelCardData.get_codecarbon_data  s    22::RRT ~7784?$^%C%CD"*&//36'11,;;	,
 ##0>0H0H_-"$455r?   c                   | j                   d d d dS t        j                         | j                   z
  }|| j                  z
  }t        |      | j                  rt        | j                        nd | j                  rt        |      dS d dS )N)training_timeevaluation_time
total_time)r{   rz   r   r   )r<   total_durationtraining_durations      r>   get_training_duration_dataz,BaseModelCardData.get_training_duration_data  s    $$,%)dRVWWt'@'@@*T-E-EE,->?LPLdLdt/G/GHjn=A=U=U/.9
 	
 \`
 	
r?   c                    | j                   i S | j                   j                  D cg c]  }t        |      j                          }}| j                   j                  t        | j                         |dS c c}w )N)model_max_lengthmodel_stringsupported_modalities)rW   rE  r#   r  max_seq_lengthr   )r<   r2  r  s      r>   get_model_specific_metadataz-BaseModelCardData.get_model_specific_metadata  sh    ::IDHJJDYDYZq 2 8 8 :ZZ $

 9 9

O$8
 	
  [s    A6c                    | j                   r/| j                  j                  j                   d| j                    S | j                  j                  j                  S )Nz
 based on )r   rW   r=   r   r  s    r>   get_default_model_namez(BaseModelCardData.get_default_model_name  sF    ??jj**334Jt>OPP::''000r?   c                   | j                   r| j                  s	 | j                          | j                  s| j                         | _        	 | j                          i | _	        	 | j                          | j                  rId}| j                  | j                  fD ],  }|D ]%  }d|v sd|v s	 | j                  ||      \  |d<   }' . t        |       D ci c]#  }|j                   t#        | |j                         % }}	 | j%                         |d<   | j&                  r 	 |j)                  | j+                                | j,                  r 	 |j)                  | j/                                t1        | j,                        dkD  |d<   | j2                  rU| j2                  j4                  r?| j2                  j4                  j6                  |j)                  | j9                                |j)                  | j;                                |j)                  | j=                                d| _         t>        D ]  }|jA                  |d         || _!        |S # t        $ r Y 5w xY w# t        $ r#}t        j                  d|        Y d }~.d }~ww xY w# t        $ r#}t        j                  d|        Y d }~Ed }~ww xY w# t        $ r#}t        j                  d|        Y d }~Id }~ww xY wc c}w # t        $ r(}t        j                  d	|        d
|d<   Y d }~d }~ww xY w# t        $ r#}t        j                  d|        Y d }~d }~ww xY w# t        $ r#}t        j                  d|        Y d }~d }~ww xY w)Nz,Error while computing usage snippet output: z)Error while saving usage example assets: r   r~  r  r   z)Error while re-rendering examples table: usage_snippetz&Error while generating usage snippet: r  z+Error while formatting evaluation metrics: z&Error while formatting training logs: rY  hide_eval_linesF)"r   r   rn  r  r   r  r  r  r  r   r  r   rL   rO   r4  r
   r  r  r  r   r   r  r   r  r   rI   r  _start_timer  r  r  IGNORED_FIELDSrA  r   )r<   excexample_asset_counterr  r   r	   
super_dictr~   s           r>   rv   zBaseModelCardData.to_dict  sb   ??4??**,
 "99;DO	Q""$
 
	N**, ==$%!!%!4!4d6H6H I ^$0 ^L!\16HL6X^TXToTo ,.CUQL)9:<Q^^ JPPTVejj'$

";;V
V	-*.*E*E*GJ' !!T!!$":":"<=
 O!!$";";"=> ),D,>,>(?#(E
$% %%))11))11==Id6689$99;< 	$::<=! 	&CNN3%	& 'o    	QNNI#OPP	Q  	NNNFseLMM	N  ) ^"NN-VWZV[+\]]^ W
  	-NNCC5IJ*,J'	-  T!LSERSST  O!GuMNNOs   I I# $J -K(K0K5 !L) M 	I I #	J,J

J	J>J99J>	K-
K((K-5	L&>L!!L&)	M2MM	N!M??Nc           	     
   | j                   | j                   }d | _         n| j                         }t        |j                         D ci c]  \  }}|t        v s|d g fvs|| c}}d|      j                         S c c}}w )NF)	sort_keys
line_break)r   rv   r   rw   YAML_FIELDSstrip)r<   r  r  r~   r   s        r>   to_yamlzBaseModelCardData.to_yamll  s}    ($$D $D<<>D*.**,iJC#:LQV_ceg^hQhS%Zi!
 %'		is   	A?
A?
!A?
)r   r   r8   )r  list[dict[str, Any]]r  r   r   r  )r[   list[nn.Module]r   r   )r  r   r   r   )r\   Dataset | DatasetDictr   r   )r\   r)   r   r   )r  r   r   r   )r   r   r   r   )r  )
r   r   r  r   rP  r   r  r   r   r   )r   r   )
r  r2   r   r   r   r   r  r   r   r   )r\   r(   r   r   )r\   r!  r%  r   r   r   )r\   z Dataset | IterableDataset | Noner   r   rM   z'dict[str, nn.Module] | nn.Module | Noner   r   )
r\   r!  rK  r  rM    nn.Module | dict[str, nn.Module]rL  zLiteral['train', 'eval']r   r  )rW   r3   r   r   )r   r   r   r   )r   r   r  r   r   r   )r   str | list[str]r   r   )r   r   r   r   )r   r#  r   r   r   r   )r   r   r   r   r  )r   r   )r  zlist[str] | Noner   r   )r  zlist[str | dict[str, str]]r   r   )r   )r   r   r  r   r   tuple[str, int])r   r   r  r   r   r%  )r   r   r  r   r   r   r/  )r  r   r   r   )r   z	int | str)r   zdict[str, str | None])^r   r   r   __doc__r	   r   r   __annotations__r   r   r   rL   rO   r   r   r   r   r   r   r   ry   rx   r   r   rR   r   r   r   rI   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __file__parentr   rW   r  r   rQ   r  rS   rF  r  staticmethodr  rh  r  r  r  r  rG  rK   rX  r[  r`  rb  rd  rE   rn  r  r  r  r  r  r  r  r  r4  r  r  r  r  r  r  r  r  r  r  rv   r  r   r?   r>   r   r   4  s   6 (-T'BH$BGZ!J
!Hj+0+FN(F*/*EM'E'Iz'
D)  #d"%*4%8d8 #4e<J
<&+Du&EE27SX2YY*/5*QQDIZ^ejDkAk,1$U,SM)S#(E#JF J"'5"ANKA*/5u*UKU/4TPU/V,V6;Du6U3U).t%)H,H!&s!?? %d GI~G"'5"AOZA!$UGHkG5uMHiM$TEJL*J T6J6Re4K4 EFHjFt%eLL$L %dU KL+K &;%HL#H&=EJL#J#LuMG^MX(=(=@X(X_dkpqM4q $Du5IEI!  RV/#0/#CN/#	/#bg>$P9ddLC.J t t  *jZ ^_&1?HKWZ	6
* >G1G %G 6	G
 
GR28&28 /28 /	28
 /28 
28h"! !
&&
B$
L =H =H~ 
 
4.,:\':Rf*L<C$  ,"6 	

1\|
r?   r   c                    t        j                  | j                  | j                  j                  d      }|j                  }t        | j                  dd       }|rd| d}|j                  dd| d      }|S )	Nu   🤗)	card_datar   hf_emojir   r  r  zsrc="assets/zsrc="r  )r   from_templaterD   r   contentr  r3  )rW   
model_cardr/  r   base_urls        r>   generate_model_cardr2  y  s~    ((''u7L7L7Z7ZekJ   G u,,j$?H,XJnE//.E(72KLNr?   r$  )r   r   r   r   )r   zfloat | int | strr   r   )rM   r"  r   r   )rW   r3   r   r   )f
__future__r   r5  loggingr  r3  r  rz   collectionsr   r   r   r   dataclassesr   r	   r
   pathlibr   platformr   pprintr   textwrapr   typingr   r   r   r   r   huggingface_hubr   r   r   r  r   r^  huggingface_hub.repocard_datar   r   huggingface_hub.utilsr   r   tqdm.autonotebookr   r   transformers.integrationsr   transformers.modelcardr   transformers.trainer_callbackr   r    r   r"   r   #sentence_transformers.base.modalityr#   (sentence_transformers.base.training_argsr$   sentence_transformers.utilr%   r&   r'   r   r(   r)   r*   r+   r,   r-   rk  ImportErrorr.   rl  r/   rm  	PIL.Imager  torchcodec.decodersr0   OSErrorr1   	getLoggerr   r  /sentence_transformers.base.evaluation.evaluatorr2    sentence_transformers.base.modelr3   "sentence_transformers.base.trainerr4   r6   r  r  r   r   r   rP   r   r2  r   r?   r>   <module>rN     s   "   	  	  6 6  0 0  #   . .   / < 8 Q +  " ( 8 6 F N ? J _ _ZZ222+00 
		8	$M:>MO M`
,( A A AH2_:      
  H
 	W L
 	W Lsl   E$ $E1 +E> 2F 9F  F' $E.-E.1E;:E;>FFFF	F$#F$'	F32F3