§
    +�’jq  ã                  óú   — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlmZmZ d dlmZmZ d dlmZmZmZ e	rd d	lmZ  ej        e¦  «        Z G d
„ de¦  «        Ze G d„ de¦  «        ¦   «         ZdS )é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚTYPE_CHECKINGÚAny)ÚBaseModelCardCallbackÚBaseModelCardData)ÚModuleÚRouter)ÚSparseAutoEncoderÚSparseStaticEmbeddingÚSpladePooling)ÚSparseEncoderc                  ó   — e Zd ZdS )ÚSparseEncoderModelCardCallbackN)Ú__name__Ú
__module__Ú__qualname__© ó    ú]C:\Projects\DSCons\.venv\Lib\site-packages\sentence_transformers\sparse_encoder\model_card.pyr   r      s   € € € € € Ø€Dr   r   c                  ó\  ‡ — e Zd ZU dZdZdZ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e¦  «        j        dz  dd¬¦  «        Zded<    eddd¬¦  «        Zded<    eddd¬¦  «        Zded<   d ˆ fd„Zd!ˆ fd„Zd"ˆ fd„Zd#d„Zˆ xZS )$ÚSparseEncoderModelCardDataam	  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                 ó
   — g d¢S )N)zsentence-transformerszsparse-encoderÚsparser   r   r   r   ú<lambda>z#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ÚmodelÚreturnÚNonec                óÔ  •— t          ¦   «                              |¦  «         | j        €d| _        | j        €d| _        d„ |                     ¦   «         D ¦   «         }g }t
          |v r|dgz  }t          |v r|dgz  }t          |v r|dgz  }t          |v r|dgz  }|  	                    t          t          j        |¦  «        ¦  «         |dgz  }d	                     |¦  «        | _        d S )
Nz$semantic search and sparse retrievalzfeature-extractionc                óF   — g | ]}t          |t          ¦  «        ¯|j        ‘ŒS r   )Ú
isinstancer   Ú	__class__)Ú.0Úmodules     r   ú
<listcomp>z=SparseEncoderModelCardData.register_model.<locals>.<listcomp>d   s,   € ÐdÐdÐd¨FÍÐTZÕ\bÑIcÔIcÐd�vÔ'ÐdÐdÐdr   Ú
AsymmetriczInference-freeÚSPLADEÚCSRr)   ú )ÚsuperÚregister_modelr   r&   Úmodulesr   r   r   r   Úadd_tagsÚmapr%   ÚlowerÚjoinr*   )Úselfr+   Úall_modulesr*   r1   s       €r   r:   z)SparseEncoderModelCardData.register_model\   sü   ø€ Ý‰Œ×Ò˜uÑ%Ô%Ð%àŒ>Ð!ØCˆDŒNØÔÐ$Ø 4ˆDÔàdÐd°e·m²m±o´oÐdÑdÔdˆØˆ
Ý�[Ð Ð Ø˜<˜.Ñ(ˆJå  KÐ/Ð/ØÐ+Ð,Ñ,ˆJå˜KÐ'Ð'Ø˜8˜*Ñ$ˆJå Ð+Ð+Ø˜5˜'Ñ!ˆJà�Š•c�#œ) ZÑ0Ô0Ñ1Ô1Ð1ØÐ'Ð(Ñ(ˆ
ØŸ(š( :Ñ.Ô.ˆŒˆˆr   údict[str, Any]c           	     ó–  •— t          ¦   «                              ¦   «         }d}| j        j        rUdddddœ                     | j        j        | j        j                             dd¦  «                             ¦   «         ¦  «        }|                     | j                             ¦   «         |t          | j        dd ¦  «        d	œ¦  «         |S )
NzDot ProductzCosine SimilarityzEuclidean DistancezManhattan Distance)ÚcosineÚdotÚ	euclideanÚ	manhattanÚ_r8   Úmax_active_dims)Úoutput_dimensionalityÚsimilarity_fn_namerI   )
r9   Úget_model_specific_metadatar+   rK   ÚgetÚreplaceÚtitleÚupdateÚget_embedding_dimensionÚgetattr)r@   ÚmetadatarK   r1   s      €r   rL   z6SparseEncoderModelCardData.get_model_specific_metadatav   sÏ   ø€ Ý‘7”7×6Ò6Ñ8Ô8ˆØ*ÐØŒ:Ô(ð 	jà-Ø$Ø1Ø1ð	"ð "÷
 Šc�$”*Ô/°´Ô1N×1VÒ1VÐWZÐ\_Ñ1`Ô1`×1fÒ1fÑ1hÔ1hÑiÔið ð 	�Šà)-¬×)KÒ)KÑ)MÔ)MØ&8Ý#*¨4¬:Ð7HÈ$Ñ#OÔ#Oðð ñ	
ô 	
ð 	
ð ˆr   c                ó8  •‡ — t          ¦   «                              ¦   «          ‰ j        sd S ‰ j        d d…         ‰ _        ˆ fd„‰ j        D ¦   «         }‰ j                             |dd¬¦  «        }‰ j                             ||¦  «        }t          j         	                    dd¬¦  «        5  d 
                    d	„ t          |                     ¦   «         ¦  «                             ¦   «         D ¦   «         ¦  «        ‰ _        d d d ¦  «         d S # 1 swxY w Y   d S )
Né   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )Ú_prepare_for_inference)r2   Úitemr@   s     €r   r4   z@SparseEncoderModelCardData.run_usage_snippet.<locals>.<listcomp>’   s'   ø€ Ð_Ð_Ð_À4˜T×8Ò8¸Ñ>Ô>Ð_Ð_Ð_r   TF)Úconvert_to_tensorÚshow_progress_baré   )Ú	precisionÚsci_modeú
c              3  ó    K  — | ]	}d |› �V — Œ
dS )z# Nr   )r2   Úlines     r   ú	<genexpr>z?SparseEncoderModelCardData.run_usage_snippet.<locals>.<genexpr>—   s(   è è € Ð)eÐ)e¸$¨+¨t¨+¨+Ð)eÐ)eÐ)eÐ)eÐ)eÐ)er   )r9   Úrun_usage_snippetÚgenerate_widget_examplesr$   r+   ÚencodeÚ
similarityÚtorchÚ_tensor_strÚprintoptionsr?   r%   ÚcpuÚ
splitlinesÚsimilarities)r@   Úprepared_examplesÚ
embeddingsre   r1   s   `   €r   rb   z,SparseEncoderModelCardData.run_usage_snippet‰   sh  øø€ Ý‰Œ×!Ò!Ñ#Ô#Ð#àÔ,ð 	ØˆFà"Ô1°"°1°"Ô5ˆÔð `Ð_Ð_Ð_È4ÔK^Ð_Ñ_Ô_ÐØ”Z×&Ò&Ð'8ÈDÐdiÐ&ÑjÔjˆ
Ø”Z×*Ò*¨:°zÑBÔBˆ
åÔ×+Ò+°aÀ%Ð+ÑHÔHð 	fð 	fØ $§	¢	Ð)eÐ)eÅ#ÀjÇnÂnÑFVÔFVÑBWÔBW×BbÒBbÑBdÔBdÐ)eÑ)eÔ)eÑ eÔ eˆDÔð	fð 	fð 	fñ 	fô 	fð 	fð 	fð 	fð 	fð 	fð 	fð 	føøøð 	fð 	fð 	fð 	fð 	fð 	fs   Â,ADÄDÄDc                ó   — | j         S )N)r*   )r@   s    r   Úget_default_model_namez1SparseEncoderModelCardData.get_default_model_name™   s
   € ØŒÐr   )r+   r   r,   r-   )r,   rB   )r,   r-   )r,   r%   )r   r   r   Ú__doc__Ú_snippet_model_classÚ_snippet_default_model_idr   Ú__annotations__r   r!   r$   r&   r   Ú__file__Úparentr(   r*   r+   r:   rL   rb   ro   Ú__classcell__)r1   s   @r   r   r      sµ  ø€ € € € € € ð(ð (ðT +ÐØ 9Ðð !€IÐ Ð Ð Ñ Ø�eð
ð 
ðñ ô €Dð ð ð ñ ð .3¨U¸4ÀeÐ-LÑ-LÔ-L€NÐLÐLÐLÑLð ˜ d°Ð7Ñ7Ô7€LÐ7Ð7Ð7Ñ7Ø˜%¨¨¨X©¬Ô(=Ð@XÑ(XÐ_dÐkpÐqÑqÔq€MÐqÐqÐqÑqØ�eÐ$4¸5ÀuÐMÑMÔM€JÐMÐMÐMÑMð #( %°¸5ÀuÐ"MÑ"MÔ"M€EÐMÐMÐMÑMð/ð /ð /ð /ð /ð /ð4ð ð ð ð ð ð&fð fð fð fð fð fð ð ð ð ð ð ð ð r   r   )Ú
__future__r   ÚloggingÚdataclassesr   r   Úpathlibr   Útypingr   r   rf   Ú%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‚      s\  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø pÐ pÐ pÐ pÐ pÐ pÐ pÐ pÐ pÐ pàð IØHÐHÐHÐHÐHÐHà	ˆÔ	˜8Ñ	$Ô	$€ð	ð 	ð 	ð 	ð 	Ð%:ñ 	ô 	ð 	ð ðAð Að Að Að AÐ!2ñ Aô Añ „ðAð Að Ar   