ó
    >:j,  ã                  ó‚  • 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JrJr  S SKJr  \" 5       (       a!  S SKJrJrJrJr   S S	KJr   S S
KJr   S SKJr  \R8                  " \5      r\	(       a  S SKJ r    " S S\5      r!\ " S S\5      5       r"g! \ a    Sr NSf = f! \ a    Sr NZf = f! \ a    Sr Naf = f)é    )ÚannotationsN)Ú	dataclassÚfield)ÚPath)ÚTYPE_CHECKINGÚAny)ÚBaseModelCardCallbackÚBaseModelCardData)Úis_datasets_available)ÚDatasetÚDatasetDictÚIterableDatasetÚIterableDatasetDict)ÚImage)ÚAudio)ÚVideo)ÚCrossEncoderc                  ó   • \ rS rSrSrg)ÚCrossEncoderModelCardCallbacké!   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úk/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sentence_transformers/cross_encoder/model_card.pyr   r   !   s   † Úr   r   c                  ó*  ^ • \ 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
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 jrS U 4S jjrS S jrS!S jrS"U 4S jjrSrU =r$ )#ÚCrossEncoderModelCardDataé%   a2  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. "CrossEncoder based on answerdotai/ModernBERT-base".
    model_id (`Optional[str]`): The model ID when pushing the model to the Hub,
        e.g. "tomaarsen/ce-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 paraphrase mining".
    tags (`Optional[List[str]]`): A list of tags for the model,
        e.g. ["sentence-transformers", "cross-encoder"].
    local_files_only (`bool`): If True, don't attempt to find dataset or base model information on the Hub.
        Defaults to False.

.. tip::

    Install `codecarbon <https://github.com/mlco2/codecarbon>`_ to automatically track carbon emission usage and
    include it in your model cards.

Example::

    >>> model = CrossEncoder(
    ...     "microsoft/mpnet-base",
    ...     model_card_data=CrossEncoderModelCardData(
    ...         model_id="tomaarsen/ce-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",
    ...     ),
    ... )
Nz
str | NoneÚ	task_namec                 ó
   • / SQ$ )N)zsentence-transformerszcross-encoderÚrerankerr   r   r   r   Ú<lambda>Ú"CrossEncoderModelCardData.<lambda>R   s   € ó !
r   )Údefault_factoryz	list[str]ÚtagsF)ÚdefaultÚinitzlist[list] | NoneÚusage_examplesT)r)   r*   Úreprzbool | NoneÚir_modelÚstrÚpipeline_tagzmodel_card_template.mdr   Útemplate_pathzCrossEncoder | NoneÚmodelc                ó,  • [        U[        5      (       a  U[        UR                  5       5      S      n[        U[        [
        45      (       a  g[        U5      S:X  a  gUS   n/ nUR                  5        GH  u  pEUS;   a  M  [        U[        5      =(       d3    [        U[        5      =(       a    U=(       a    [        US   [        5      nSn[        US5      (       a}  UR                  R                  U5      n[        (       a  [        U[        5      (       d@  [        (       a  [        U[        5      (       d   [        (       a  [        U[        5      (       a  SnU(       d  U(       a  UR                  U5        [        U5      S:X  d  GM    O   [        U5      S:  a  gUu  pš[!        X*   5      nUSS U	   nUSS U
   nU[        L a  US   SS nUS   /[        U5      -  n[#        XÍ5       VVs/ s H  u  pïXï/PM
     snnU l        gs  snnf )	zñ
We don't set widget examples, but only load the prediction example.
This is because the Hugging Face Hub doesn't currently have a Sentence Ranking
or Text Classification widget that accepts pairs, which is what CrossEncoder
models require.
r   N)Údataset_nameÚlabelFÚfeaturesTé   é   )Ú
isinstancer   ÚlistÚkeysr   r   ÚlenÚitemsr.   Úhasattrr5   ÚgetÚImageFeatureÚAudioFeatureÚVideoFeatureÚappendÚtypeÚzipr+   )ÚselfÚdatasetÚfirst_sampleÚpair_columnsÚcolumnÚvalueÚis_textÚis_non_textÚfeatureÚquery_columnÚanswer_columnÚanswer_typeÚqueriesÚanswersÚqueryÚanswers                   r   Úset_widget_examplesÚ-CrossEncoderModelCardData.set_widget_examplesd   sÏ  € ô �gœ{×+Ñ+Øœd 7§<¡<£>Ó2°1Ñ5Ñ6ˆGä�g¤Ô1DÐE×FÑFØäˆw‹<˜1ÓØà˜q‘zˆð ˆØ)×/Ñ/×1‰MˆFØÐ2Ó2ÙÜ  ¬Ó,×q´¸EÄ4Ó1H×1pÈU×1pÔWaÐbgÐhiÑbjÔloÓWpˆGØˆKÜ�w 
×+Ñ+Ø!×*Ñ*×.Ñ.¨vÓ6�ç!’\¤j°¼,×&GÑ&Gß$š¬°G¼\×)JÑ)Jß$š¬°G¼\×)JÑ)Jà"&�KÞž+Ø×#Ñ# FÔ+Ü�<Ó  AÖ%Ùñ! 2ô$ ˆ|Ó˜qÓ Øà&2Ñ#ˆÜ˜<Ñ6Ó7ˆà˜"˜1�+˜lÑ+ˆØ˜"˜1�+˜mÑ,ˆð œ$ÒØ˜a‘j  !�nˆGØ˜q‘z�l¤S¨£\Ñ1ˆGäDGÈÔDYÔZÒDY±=°5 ›ÑDYÒZˆÕùÓZs   Ç7Hc                ó¾   >• [         TU ]  U5        U R                  c  UR                  S:X  a  SOSU l        U R                  c  UR                  S:X  a  SOSU l        g g )Né   z"text reranking and semantic searchztext pair classificationztext-rankingztext-classification)ÚsuperÚregister_modelr"   Ú
num_labelsr/   )rE   r1   Ú	__class__s     €r   rZ   Ú(CrossEncoderModelCardData.register_modelš   s`   ø€ Ü‰Ñ˜uÔ%à�>‰>Ñ!à8=×8HÑ8HÈAÓ8MÑ4ÐSmð ŒNð ×ÑÑ$Ø27×2BÑ2BÀaÓ2G¡ÐMbˆDÕð %r   c           
     óè  • U R                   c  SS/SS/SS//U l         U R                  (       d  g SS KnU R                    VVs/ s H#  o" Vs/ s H  o0R                  U5      PM     snPM%     nnnU R                  R                  USSS9nUR                  S	S
9   SR                  S [        U5      R                  5        5       5      U l
        S S S 5        g s  snf s  snnf ! , (       d  f       g = f)NúHow many calories in an eggúPThere are on average between 55 and 80 calories in an egg depending on its size.ú^Egg whites are very low in calories, have no fat, no cholesterol, and are loaded with protein.úGMost of the calories in an egg come from the yellow yolk in the center.r   TF)Úconvert_to_numpyÚshow_progress_baré   )Ú	precisionÚ
c              3  ó,   #   • U  H
  nS U 3v •  M     g7f)ú# Nr   )Ú.0Úlines     r   Ú	<genexpr>Ú>CrossEncoderModelCardData.run_usage_snippet.<locals>.<genexpr>¾   s   é € Ð)[ÒBZ¸$¨B¨t¨f­+ÒBZùs   ‚)r+   Úgenerate_widget_examplesÚnumpyÚ_prepare_for_inferencer1   ÚpredictÚprintoptionsÚjoinr.   Ú
splitlinesÚsimilarities)rE   ÚnpÚpairÚelemÚprepared_examplesÚscoress         r   Úrun_usage_snippetÚ+CrossEncoderModelCardData.run_usage_snippet¤   sñ   € Ø×ÑÑ&ð 2Øfðð
 2Øtðð
 2Ø]ðð#ˆDÔð ×,×,Øãð _c×^qÒ^qÔrÒ^qÐVZÈDÓQÊDÀD×9Ñ9¸$Ö?ÉDÔQÑ^qÐÑrØ—‘×#Ñ#Ð$5ÈÐ`eÐ#ÐfˆØ�_‰_ qˆ_Ò)Ø $§	¡	Ñ)[Ä#ÀfÃ+×BXÑBXÔBZÓ)[Ó [ˆDÔ÷ *Ð)ùò RùÓrç)Õ)ús$   Á	CÁCÁ&CÂ5C#ÃCÃ#
C1c                ó
  • U R                   =(       d    U R                  nU=(       d    SS/SS/SS//nU R                  =(       d    SnU R                  (       a  U R                  R                  OSnU R                  =(       d    Un[        S U 5       5      nSS	S
SU S3SS/nU H'  nUR                  SU R                  U5       S35        M)     UR                  SS/5        U R                  (       a-  UR                  S5        UR                  U R                  5        O=US:”  a  S[        U5       SU S3OS[        U5       S3n	UR                  SSU	 3/5        US:X  aƒ  U(       d|  U(       a  US   S   OSn
U(       a  U Vs/ s H  oˆS   PM	     snO/ nUR                  S	SSSU
< S3S/5        U H  nUR                  SU< S35        M     UR                  / SQ5        S S!R                  U5      -   S"-   $ s  snf )#Nr_   r`   ra   rb   Úcross_encoder_model_idrX   c              3  ót   #   • U  H.  n[        U[        5      =(       a    [        S  U 5       5      v •  M0     g7f)c              3  óL   #   • U  H  n[        U[        5      (       + v •  M     g 7f)N)r8   r.   )rj   rx   s     r   rl   ÚMCrossEncoderModelCardData.generate_usage_snippet.<locals>.<genexpr>.<genexpr>Ö   s   é € Ð*VÒQUÈ¬z¸$ÄÓ/D×+DÑ+DÒQUùs   ‚"$N)r8   r9   Úany)rj   rw   s     r   rl   ÚCCrossEncoderModelCardData.generate_usage_snippet.<locals>.<genexpr>Õ   s0   é € ð 
ÚciÐ[_ŒJ�tœTÓ"×V¤sÑ*VÑQUÓ*VÓ'VÔVÒciùs   ‚68z.from sentence_transformers import CrossEncoderÚ u   # Download from the ðŸ¤— Hubzmodel = CrossEncoder("z")z # Get scores for pairs of inputsz	pairs = [z    Ú,Ú]zscores = model.predict(pairs)zprint(scores)Ú(z, Ú)z,)zprint(scores.shape)ri   r   z># Or rank different texts based on similarity to a single textzranks = model.rank(z    [z        )z    ]rˆ   zK# [{'corpus_id': ..., 'score': ...}, {'corpus_id': ..., 'score': ...}, ...]z
```python
rg   z
```)Úusage_examples_displayr+   Úmodel_idr1   r[   r‚   rB   Ú_format_snippet_valueÚextendru   r;   rs   )rE   ÚdisplayÚexamplesrŠ   r[   ÚsourceÚis_multimodalÚlinesrw   Ú	shape_strrS   Ú	documentsÚdocs                r   Úgenerate_usage_snippetÚ0CrossEncoderModelCardData.generate_usage_snippetÀ   s1  € Ø×-Ñ-×D°×1DÑ1DˆØ÷ 
à-Øbðð
 .Øpðð
 .ØYðð
ˆð —=‘=×<Ð$<ˆØ.2¯j¯j�T—Z‘Z×*Ò*¸aˆ
ð ×$Ñ$×0¨ˆÜñ 
Ùció
ó 
ˆð
 =ØØ0Ø$ X J¨bÐ1Ø.Øð
ˆó ˆDØ�L‰L˜4 × :Ñ :¸4Ó @ÐAÀÐCÖDñ à�‰àØ/ðô	
ð ××Ø�L‰L˜Ô)Ø�L‰L˜×*Ñ*Õ+à>HÈ1»n˜!œC ›M˜?¨"¨Z¨L¸Ñ:ÐTUÔVYÐZbÓVcÐUdÐdfÐRgˆIØ�L‰Là)Ø˜˜Ð$ðôð ˜‹?¦=Þ&.�H˜Q‘K ’NÐ4QˆEÞ:B©XÓ6ªX T˜aœ©XÒ6ÈˆIØ�L‰LàØTØ)Ø˜5™) 1Ð%Øðôó !�Ø—‘˜x¨¡w¨aÐ0Ö1ñ !à�L‰Lòôð ˜tŸy™y¨Ó/Ñ/°'Ñ9Ð9ùò) 7s   Æ	H c                ór   >• [         TU ]  5       nUR                  SU R                  R                  05        U$ )NÚmodel_num_labels)rY   Úget_model_specific_metadataÚupdater1   r[   )rE   Úmetadatar\   s     €r   r™   Ú5CrossEncoderModelCardData.get_model_specific_metadata  s7   ø€ Ü‘7Ñ6Ó8ˆØ�‰à" D§J¡J×$9Ñ$9ðô	
ð
 ˆr   )r/   ru   r"   r+   )rF   zDataset | DatasetDictÚreturnÚNone)r�   rž   )r�   r.   )r�   zdict[str, Any])r   r   r   r   Ú__doc__r"   Ú__annotations__r   r(   r+   r-   r/   r   Ú__file__Úparentr0   r1   rU   rZ   r{   r•   r™   r   Ú__classcell__)r\   s   @r   r    r    %   sÄ   ø‡ ñ&ðR !€IˆzÓ Ùñ
ñ€Dˆ)ó ñ ).°dÀÑ(G€NÐ%ÓGÙ!¨$°UÀÑG€HˆkÓGñ  d°Ñ7€L�#Ó7Ù©¨X«×(=Ñ(=Ð@XÑ(XÐ_dÐkpÑq€M�4Óqñ "'¨t¸%ÀeÑ!L€EÐÓLô4[÷lcô\ô8K:÷Zõ r   r    )#Ú
__future__r   ÚloggingÚdataclassesr   r   Úpathlibr   Útypingr   r   Ú%sentence_transformers.base.model_cardr	   r
   Úsentence_transformers.utilr   Údatasetsr   r   r   r   r   r?   ÚImportErrorr   r@   r   rA   Ú	getLoggerr   ÚloggerÚ)sentence_transformers.cross_encoder.modelr   r   r    r   r   r   Ú<module>r°      sÅ   ðÝ "ã ß (Ý ß %ç ZÝ <á×ÑßSÓSðÝ2ðÝ2ðÝ2ð 
×	Ò	˜8Ó	$€æÝFô	Ð$9ô 	ð ônÐ 1ó nó ñnøð- ó ØŠðûð ó ØŠðûð ó ØŠðús6   ÁB ÁB% ÁB3 ÂB"Â!B"Â%B0Â/B0Â3B>Â=B>