ó
    >:jq  ã                  óô   • S SK Jr  S SKrS SKJrJr  S SKJr  S SKJ	r	J
r
  S SKrS SKJrJr  S SKJrJr  S SKJrJrJr  \	(       a  S S	KJr  \R0                  " \5      r " S
 S\5      r\ " S S\5      5       rg)é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚTYPE_CHECKINGÚAny)ÚBaseModelCardCallbackÚBaseModelCardData)ÚModuleÚRouter)ÚSparseAutoEncoderÚSparseStaticEmbeddingÚSpladePooling)ÚSparseEncoderc                  ó   • \ rS rSrSrg)ÚSparseEncoderModelCardCallbacké   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úl/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sentence_transformers/sparse_encoder/model_card.pyr   r      s   † Úr   r   c                  ó.  ^ • \ rS rSr% SrSrSrSrS\S'   \	" S S	9r
S
\S'   \	" SSS9rS\S'   \	" SSS9rS\S'   \	" \" \5      R                  S-  SSS9rS\S'   \	" SSSS9rS\S'   \	" SSSS9rS\S'   SU 4S jjrS U 4S jjrS!U 4S jjrS"S jrSrU =r$ )#ÚSparseEncoderModelCardDataé   aá  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, e.g. "SparseEncoder based on answerdotai/ModernBERT-base".
    model_id (`Optional[str]`): The model ID when pushing the model to the Hub,
        e.g. "tomaarsen/se-mpnet-base-ms-marco".
    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,
        e.g. "semantic search and sparse retrieval".
    tags (`Optional[List[str]]`): A list of tags for the model,
        e.g. ["sentence-transformers", "sparse-encoder"].
    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.

Example::

    >>> model = SparseEncoder(
    ...     "microsoft/mpnet-base",
    ...     model_card_data=SparseEncoderModelCardData(
    ...         model_id="tomaarsen/se-mpnet-base-allnli",
    ...         train_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
    ...         eval_datasets=[{"name": "SNLI", "id": "stanfordnlp/snli"}, {"name": "MultiNLI", "id": "nyu-mll/multi_nli"}],
    ...         license="apache-2.0",
    ...         language="en",
    ...     ),
    ... )
r   Úsparse_encoder_model_idNz
str | NoneÚ	task_namec                 ó
   • / SQ$ )N)zsentence-transformerszsparse-encoderÚsparser   r   r   r   Ú<lambda>Ú#SparseEncoderModelCardData.<lambda>J   s   € ó !
r   )Údefault_factoryz	list[str]ÚtagsF)ÚdefaultÚinitzlist[list[str]] | NoneÚusage_examplesÚstrÚpipeline_tagzmodel_card_template.md)r'   r(   Úreprr   Útemplate_pathúSparse EncoderÚ
model_typezSparseEncoder | NoneÚmodelc                ó  >• [         TU ]  U5        U R                  c  SU l        U R                  c  SU l        UR	                  5        Vs/ s H&  n[        U[        5      (       d  M  UR                  PM(     nn/ n[        U;   a  US/-  n[        U;   a  US/-  n[        U;   a  US/-  n[        U;   a  US/-  nU R                  [        [        R                  U5      5        US/-  nSR!                  U5      U l        g s  snf )	Nz$semantic search and sparse retrievalzfeature-extractionÚ
AsymmetriczInference-freeÚSPLADEÚCSRr.   Ú )ÚsuperÚregister_modelr    r+   ÚmodulesÚ
isinstancer   Ú	__class__r   r   r   r   Úadd_tagsÚmapr*   ÚlowerÚjoinr/   )Úselfr0   ÚmoduleÚall_modulesr/   r:   s        €r   r7   Ú)SparseEncoderModelCardData.register_model\   sõ   ø€ Ü‰Ñ˜uÔ%à�>‰>Ñ!ØCˆDŒNØ×ÑÑ$Ø 4ˆDÔà6;·m±m´oÓd²o¨FÌÐTZÔ\b×IcÓ'�v×'Ô'±oˆÐdØˆ
Ü�[Ó Ø˜<˜.Ñ(ˆJä  KÓ/ØÐ+Ð,Ñ,ˆJä˜KÓ'Ø˜8˜*Ñ$ˆJä Ó+Ø˜5˜'Ñ!ˆJà�‰”cœ#Ÿ)™) ZÓ0Ô1ØÐ'Ð(Ñ(ˆ
ØŸ(™( :Ó.ˆ�ùò! es   ÁDÁ(Dc           	     óœ  >• [         TU ]  5       nSnU R                  R                  (       a]  SSSSS.R	                  U R                  R                  U R                  R                  R                  SS5      R                  5       5      nUR                  U R                  R                  5       U[        U R                  SS 5      S	.5        U$ )
NzDot ProductzCosine SimilarityzEuclidean DistancezManhattan Distance)ÚcosineÚdotÚ	euclideanÚ	manhattanÚ_r5   Úmax_active_dims)Úoutput_dimensionalityÚsimilarity_fn_namerI   )
r6   Úget_model_specific_metadatar0   rK   ÚgetÚreplaceÚtitleÚupdateÚget_embedding_dimensionÚgetattr)r?   ÚmetadatarK   r:   s      €r   rL   Ú6SparseEncoderModelCardData.get_model_specific_metadatav   s±   ø€ Ü‘7Ñ6Ó8ˆØ*ÐØ�:‰:×(×(à-Ø$Ø1Ø1ñ	"÷
 ‰c�$—*‘*×/Ñ/°·±×1NÑ1N×1VÑ1VÐWZÐ\_Ó1`×1fÑ1fÓ1hÓið ð 	�‰à)-¯©×)KÑ)KÓ)MØ&8Ü#*¨4¯:©:Ð7HÈ$Ó#Oñô	
ð ˆr   c                ó,  >• [         TU ]  5         U R                  (       d  g U R                  S S U l        U R                   Vs/ s H  oR	                  U5      PM     nnU R
                  R                  USSS9nU R
                  R                  X35      n[        R                  R                  SSS9   SR                  S [        UR                  5       5      R                  5        5       5      U l        S S S 5        g s  snf ! , (       d  f       g = f)	Né   TF)Úconvert_to_tensorÚshow_progress_baré   )Ú	precisionÚsci_modeÚ
c              3  ó,   #   • U  H
  nS U 3v •  M     g7f)z# Nr   )Ú.0Úlines     r   Ú	<genexpr>Ú?SparseEncoderModelCardData.run_usage_snippet.<locals>.<genexpr>—   s   é € Ð)eÒBd¸$¨B¨t¨f­+ÒBdùs   ‚)r6   Úrun_usage_snippetÚgenerate_widget_examplesr)   Ú_prepare_for_inferencer0   ÚencodeÚ
similarityÚtorchÚ_tensor_strÚprintoptionsr>   r*   ÚcpuÚ
splitlinesÚsimilarities)r?   ÚitemÚprepared_examplesÚ
embeddingsrf   r:   s        €r   rb   Ú,SparseEncoderModelCardData.run_usage_snippet‰   sè   ø€ Ü‰Ñ!Ô#à×,×,Øà"×1Ñ1°"°1Ð5ˆÔð LP×K^ÒK^Ó_ÒK^À4×8Ñ8¸Ö>ÑK^ÐÐ_Ø—Z‘Z×&Ñ&Ð'8ÈDÐdiÐ&Ðjˆ
Ø—Z‘Z×*Ñ*¨:ÓBˆ
ä×Ñ×+Ñ+°aÀ%Ð+ÒHØ $§	¡	Ñ)eÄ#ÀjÇnÁnÓFVÓBW×BbÑBbÔBdÓ)eÓ eˆDÔ÷ IÐHùò	 `÷ IÕHús   ÁD Â4ADÄ
Dc                ó   • U R                   $ )N)r/   )r?   s    r   Úget_default_model_nameÚ1SparseEncoderModelCardData.get_default_model_name™   s   € Ø�‰Ðr   )r/   r+   rl   r    r)   )r0   r   ÚreturnÚNone)rt   zdict[str, Any])rt   ru   )rt   r*   )r   r   r   r   Ú__doc__Ú_snippet_model_classÚ_snippet_default_model_idr    Ú__annotations__r   r&   r)   r+   r   Ú__file__Úparentr-   r/   r0   r7   rL   rb   rr   r   Ú__classcell__)r:   s   @r   r   r      sÉ   ø‡ ñ(ðT +ÐØ 9Ðð !€IˆzÓ Ùñ
ñ€Dˆ)ó ñ .3¸4ÀeÑ-L€NÐ*ÓLñ  d°Ñ7€L�#Ó7Ù©¨X«×(=Ñ(=Ð@XÑ(XÐ_dÐkpÑq€M�4ÓqÙÐ$4¸5ÀuÑM€J�ÓMñ #(°¸5ÀuÑ"M€EÐÓM÷/÷4÷&f÷ ò r   r   )Ú
__future__r   ÚloggingÚdataclassesr   r   Úpathlibr   Útypingr   r   rg   Ú%sentence_transformers.base.model_cardr	   r
   Ú"sentence_transformers.base.modulesr   r   Ú,sentence_transformers.sparse_encoder.modulesr   r   r   Ú*sentence_transformers.sparse_encoder.modelr   Ú	getLoggerr   Úloggerr   r   r   r   r   Ú<module>rˆ      se   ðÝ "ã ß (Ý ß %ã ç Zß =ß pÑ pæÝHà	×	Ò	˜8Ó	$€ô	Ð%:ô 	ð ôAÐ!2ó Aó ñAr   