§
    +�’j£;  ã                  ó&  — 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	 d dl
mZ d dlmZ d dlmZ erd dlmZ  ej        e¦  «        Zd+d
„Zd,d„Zd-d„Zd.d„Z	 d/dddddddœd0d&„Zed'„ ¦   «         Zeej        fd(„¦   «         Zd)„ Zg d*¢ZdS )1é    )ÚannotationsN)ÚCallable)Úcontextmanager)Úisclass)ÚTYPE_CHECKING)ÚTensorÚreturnÚstrc                ó’   — t          | ¦  «        s| j        } | j        }|�|t          j        j        k    r| j        S |dz   | j        z   S )aI  
    Gives a full name (package_name.class_name) for a class / object in Python. Will
    be used to load the correct classes from JSON files

    Args:
        obj: The object for which to get the full name, e.g. an instance of a class or the class itself.

    Returns:
        str: The full name of the object.

    Example:
        >>> from sentence_transformers.sentence_transformer.losses import MultipleNegativesRankingLoss
        >>> from sentence_transformers import SentenceTransformer
        >>> from sentence_transformers.util import fullname
        >>> model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
        >>> loss = MultipleNegativesRankingLoss(model)
        >>> fullname(loss)
        'sentence_transformers.sentence_transformer.losses.multiple_negatives_ranking.MultipleNegativesRankingLoss'
    Nú.)r   Ú	__class__Ú
__module__r
   Ú__name__)ÚobjÚmodules     úMC:\Projects\DSCons\.venv\Lib\site-packages\sentence_transformers\util\misc.pyÚfullnamer      sM   € õ( �3‰<Œ<ð ØŒmˆØŒ^€FØ€~˜¥3¤=Ô#;Ò;Ð;ØŒ|ÐØ�C‰<˜#œ,Ñ&Ð&ó    Úsimilarity_fctr   c                ó®  — t          | t          j        ¦  «        rot          | j        dt          | j        ¦  «        j        ¦  «        }d                     d„ | j         	                    ¦   «         D ¦   «         ¦  «        }|r|› d|› d�n|S t          | dd¦  «        }t          | dt          | ¦  «        j        ¦  «        }|dv r?t          |d	¦  «        r/d
dlm} |dk    r|j        n|j        } ||j        ¦  «        j        S t          | dd¦  «        }|�Ad                     d„  |¦   «          	                    ¦   «         D ¦   «         ¦  «        }|› d|› d�S |S )zÉReadable config-dict rendering of a loss's scoring callable: objects exposing
    ``get_config_dict`` (e.g. configured metric classes) and :func:`functools.partial` bindings
    include their settings.r   z, c              3  ó*   K  — | ]\  }}|› d |›�V — ŒdS ©ú=N© ©Ú.0ÚkeyÚvalues      r   ú	<genexpr>z&similarity_fct_name.<locals>.<genexpr>6   s4   è è € Ð^Ð^±
°°U˜CÐ+Ð+ %Ð+Ð+Ð^Ð^Ð^Ð^Ð^Ð^r   ú(ú)Ú__self__N)Ú
similarityÚsimilarity_pairwiseÚsimilarity_fn_namer   )ÚSimilarityFunctionr#   Úget_config_dictc              3  ó*   K  — | ]\  }}|› d |›�V — ŒdS r   r   r   s      r   r   z&similarity_fct_name.<locals>.<genexpr>G   s4   è è € ÐVÐV±
°°U˜CÐ+Ð+ %Ð+Ð+ÐVÐVÐVÐVÐVÐVr   )Ú
isinstanceÚ	functoolsÚpartialÚgetattrÚfuncÚtyper   ÚjoinÚkeywordsÚitemsÚhasattrÚ%sentence_transformers.util.similarityr&   Úto_similarity_fnÚto_similarity_pairwise_fnr%   )r   ÚnameÚargsÚownerr&   ÚresolveÚmetric_configs          r   Úsimilarity_fct_namer;   0   s‰  € õ �.¥)Ô"3Ñ4Ô4ð 3Ý�~Ô*¨J½¸^Ô=PÑ8QÔ8QÔ8ZÑ[Ô[ˆØ�yŠyÐ^Ð^¸nÔ>U×>[Ò>[Ñ>]Ô>]Ð^Ñ^Ô^Ñ^Ô^ˆØ$(Ð2�$Ð Ð ˜Ð Ð Ð Ð ¨dÐ2õ �N J°Ñ5Ô5€EÝ�> :­t°NÑ/CÔ/CÔ/LÑMÔM€DØÐ4Ð4Ð4½ÀÐH\Ñ9]Ô9]Ð4ØLÐLÐLÐLÐLÐLð �|Ò#Ð#ð Ô/Ð/à#Ô=ð 	ð
 ˆw�uÔ/Ñ0Ô0Ô9Ð9Ý˜NÐ,=¸tÑDÔD€MØÐ Ø�yŠyÐVÐV¸m¸m¹o¼o×>SÒ>SÑ>UÔ>UÐVÑVÔVÑVÔVˆØÐ Ð ˜Ð Ð Ð Ð Ø€Kr   Úteacher_probabilitiesr   Úteacher_logitsÚteacher_temperatureÚfloatÚ	loss_nameÚNonec                ó   — |                      ¦   «                              ¦   «         }|                     ¦   «                              ¦   «         rt	          |› d�¦  «        ‚|                     ¦   «                              ¦   «         rdS t          | dk                         ¦   «         ¦  «        }|sdS |                     d¬¦  «        j	        | 
                    d¬¦  «        j	        z
                       ¦   «                              ¦   «         }t                               |› d|› d|› d|                      ¦   «         › d	|d
›d|dz  d›d�¦  «         dS )aÓ  Inspect a distillation loss's teacher target once, on its first forward.

    Takes the target the loss itself computed rather than recomputing a softmax, so the two can
    never disagree. Reading either result off an accelerator costs a device synchronization, hence
    the once-per-loss contract. That also means only the first batch a loss sees is inspected: with
    one loss shared across a ``DatasetDict`` whose splits carry differently scaled teacher scores,
    the splits drawn later go unexamined.

    Args:
        teacher_probabilities: The softmaxed teacher target the loss will use.
        teacher_logits: The raw teacher scores, used to report their spread.
        teacher_temperature: The temperature already applied to ``teacher_logits``.
        loss_name: Loss class name, to open the message with.

    Raises:
        ValueError: If the teacher scores contain NaN, which would make the loss and every gradient
            NaN on the first backward.
    z•: the teacher scores contain NaN, so the loss and every gradient would be NaN after the first backward. Check the column holding your teacher scores.Nr   éÿÿÿÿ)Údimz: teacher_temperature=z underflows z of zg teacher scores to exactly zero, so those candidates carry no gradient. The widest candidate row spans z.1fz…, and a float32 softmax underflows once a row's spread divided by the temperature exceeds about 100. Raise teacher_temperature above éd   z.3gr   )Údetachr?   ÚisnanÚanyÚ
ValueErrorÚisinfÚintÚsumÚmaxÚvaluesÚminÚitemÚloggerÚwarningÚnumel)r<   r=   r>   r@   ÚscoresÚ	collapsedÚspreads          r   Úcheck_teacher_targetsrW   L   s�  € ð* ×"Ò"Ñ$Ô$×*Ò*Ñ,Ô,€FØ‡|‚|�~„~×ÒÑÔð 
ÝØð Zð Zð Zñ
ô 
ð 	
ð ‡|‚|�~„~×ÒÑÔð àˆÝÐ*¨aÒ/×4Ò4Ñ6Ô6Ñ7Ô7€IØð ØˆØ�jŠj˜RˆjÑ Ô Ô'¨&¯*ª*¸¨*Ñ*<Ô*<Ô*CÑC×HÒHÑJÔJ×OÒOÑQÔQ€FÝ
‡N‚NØð 	9ð 	9Ð,?ð 	9ð 	9ÈYð 	9ð 	9Ø ×&Ò&Ñ(Ô(ð	9ð 	9à7=Ðfð	9ð 	9ð &,¨c¡\Ð8ð		9ð 	9ð 	9ñô ð ð ð r   Údotted_pathr.   c                óè  — 	 |                       dd¦  «        \  }}n"# t          $ r | › d�}t          |¦  «        ‚w xY wt          j        ¦   «         5  t          j        dt          ¦  «         	 t          j        | ¦  «        }n$# t          $ r t          j        |¦  «        }Y nw xY wddd¦  «         n# 1 swxY w Y   	 t          ||¦  «        S # t          $ r d|› d|› d�}t          |¦  «        ‚w xY w)	a}  
    Import a dotted module path and return the attribute/class designated by the
    last name in the path. Raise ImportError if the import failed.

    Args:
        dotted_path (str): The dotted module path.

    Returns:
        Any: The attribute/class designated by the last name in the path.

    Raises:
        ImportError: If the import failed.

    Example:
        >>> import_from_string('sentence_transformers.sentence_transformer.losses.multiple_negatives_ranking.MultipleNegativesRankingLoss')
        <class 'sentence_transformers.sentence_transformer.losses.multiple_negatives_ranking.MultipleNegativesRankingLoss'>
    r   é   z  doesn't look like a module pathÚignoreNzModule "z" does not define a "z" attribute/class)ÚrsplitrI   ÚImportErrorÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningÚ	importlibÚimport_moduleÚ	Exceptionr,   ÚAttributeError)rX   Úmodule_pathÚ
class_nameÚmsgr   s        r   Úimport_from_stringri   w   sp  € ð$Ø"-×"4Ò"4°S¸!Ñ"<Ô"<Ñˆ�Z�ZøÝð ð ð ØÐ>Ð>Ð>ˆÝ˜#ÑÔÐðøøøõ
 
Ô	 Ñ	"Ô	"ð :ð :ÝÔ˜hÕ(:Ñ;Ô;Ð;ð	:ÝÔ,¨[Ñ9Ô9ˆFˆFøÝð 	:ð 	:ð 	:ÝÔ,¨[Ñ9Ô9ˆFˆFˆFð	:øøøð	:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ðÝ�v˜zÑ*Ô*Ð*øÝð ð ð ØX˜ÐXÐX¸:ÐXÐXÐXˆÝ˜#ÑÔÐðøøøsJ   ‚ œ;ÁB2Á-BÂB2ÂB#Â B2Â"B#Â#B2Â2B6Â9B6Â>C Ã#C1F)Útrust_remote_codeÚrevisionÚcode_revisionÚtokenÚcache_folderÚlocal_files_onlyÚ	class_refÚmodel_name_or_pathú
str | Nonerj   Úboolrk   rl   rm   úbool | str | Nonern   ro   c          	     óˆ  — |                       d¦  «        rt          | ¦  «        S |�Žddlm} |s\t          j                             |¦  «        rt          j                             |¦  «        nd|› �}	t          d|› d| ›d|	› d	�¦  «        ‚	  || ||||||¬
¦  «        S # t          t          f$ r Y nw xY wt          | ¦  «        S )at
  
    Resolve a module class reference to a class object.

    For class refs in the ``sentence_transformers.*`` namespace, this imports directly via
    :func:`import_from_string`. For other class refs (e.g. repository-local custom classes
    like ``modeling_my_model.CustomTransformer``), it first tries
    :func:`transformers.dynamic_module_utils.get_class_from_dynamic_module` to fetch the
    modeling file from the model directory, then falls back to :func:`import_from_string`
    if dynamic loading is not applicable or fails.

    Importing a class outside the ``sentence_transformers.*`` namespace runs code selected by the model's
    configuration (repository-hosted modeling code via dynamic loading, or a locally installed package via
    direct import). Loading such a class requires ``trust_remote_code=True``, for local directories just
    like for Hugging Face Hub repositories.

    .. versionchanged:: 6.0
        Importing a module class outside the ``sentence_transformers.*`` namespace now requires
        ``trust_remote_code=True`` whenever ``model_name_or_path`` is set. Previously a local
        ``model_name_or_path`` was implicitly trusted, and untrusted imports emitted a
        ``FutureWarning`` while still importing.

    Args:
        class_ref: Dotted class path. Either a fully-qualified ``sentence_transformers.*``
            path or a repository-local reference like ``modeling_<name>.<ClassName>``.
        model_name_or_path: Hub repo id or local directory used to source repository-local
            modeling files. Required for dynamic loading.
        trust_remote_code: Whether to trust and import code selected by the model configuration. Required
            to import any non-``sentence_transformers.*`` class when ``model_name_or_path`` is set, and
            permits dynamic loading of repository-hosted modeling files. Any falsy value, an explicit
            None included, is treated as False.
        revision: Hub revision to fetch the modeling file from.
        code_revision: Optional separate revision pinning for the modeling code (overrides
            ``revision`` when set).
        token: Hugging Face Hub authentication token. Required for fetching modeling files
            from private repositories.
        cache_folder: Optional override for the Hugging Face Hub cache directory.
        local_files_only: If True, only use cached files and never reach out to the Hub.

    Returns:
        The resolved class.

    Raises:
        ValueError: If ``class_ref`` is outside the ``sentence_transformers.*`` namespace,
            ``model_name_or_path`` is set, and ``trust_remote_code`` is not True.
    zsentence_transformers.Nr   )Úget_class_from_dynamic_modulezhttps://hf.co/z
The model z references the module class z€, which is not part of Sentence Transformers. Importing it executes third-party code. You can inspect the repository content at zS.
Please pass the argument `trust_remote_code=True` to allow custom code to be run.)rk   rl   rm   Ú	cache_dirro   )
Ú
startswithri   Ú!transformers.dynamic_module_utilsrv   ÚosÚpathÚisdirÚabspathrI   ÚOSError)
rp   rq   rj   rk   rl   rm   rn   ro   rv   Úlocations
             r   Úimport_module_classr€   ž   sA  € ðp ×ÒÐ4Ñ5Ô5ð -Ý! )Ñ,Ô,Ð,àÐ%ØSÐSÐSÐSÐSÐSð !ð 	õ ”7—=’=Ð!3Ñ4Ô4ð;•”—’Ð 2Ñ3Ô3Ð3à:Ð&8Ð:Ð:ð õ
 ðeÐ/ð eð eÈið eð eà)1ðeð eð eñô ð ð	Ø0Ð0ØØ"Ø!Ø+ØØ&Ø!1ðñ ô ð øõ �Ð$ð 	ð 	ð 	àˆDð	øøøõ ˜iÑ(Ô(Ð(s   ÂB ÂB2Â1B2c               #  ó”   K  — ddl m} m}m}  |¦   «         }	 |r
 | ¦   «          dV — |r |¦   «          dS dS # |r |¦   «          w w xY w)zN
    A context manager that will disable caching in the datasets library.
    r   )Údisable_cachingÚenable_cachingÚis_caching_enabledN)Údatasetsr‚   rƒ   r„   )r‚   rƒ   r„   Úis_originally_enableds       r   Údisable_datasets_cachingr‡   û   s¢   è è € ð
 MÐLÐLÐLÐLÐLÐLÐLÐLÐLà.Ð.Ñ0Ô0ÐðØ ð 	ØˆOÑÔÐØˆˆˆà ð 	ØˆNÑÔÐÐÐð	ð 	øÐ ð 	ØˆNÑÔÐÐð	øøøs	   ˜8 ¸Ac              #  óÂ   K  — t           j        j        j        }t          j        | ¦  «         	 dV — t          j        |¦  «         dS # t          j        |¦  «         w xY w)z»
    A context manager that will prevent any logging messages
    triggered during the body from being processed.

    Args:
        highest_level: the maximum logging level allowed.
    N)ÚloggingÚrootÚmanagerÚdisable)Úhighest_levelÚprevious_levels     r   Údisable_loggingr�     s_   è è € õ ”\Ô)Ô1€NÝ„O�MÑ"Ô"Ð"ð(ØˆˆˆåŒ˜Ñ'Ô'Ð'Ð'Ð'ø�Œ˜Ñ'Ô'Ð'Ð'øøøs   ®A ÁAc                ó¨  — t          | dd¬¦  «        5 }t          j        |¦  «        }t          |¦  «        }d d d ¦  «         n# 1 swxY w Y   t	          |¦  «        dk    rq|d                              |¦  «         t          | ddd¬¦  «        5 }t          j        |¦  «        }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   dS dS )	NÚ zutf-8)ÚnewlineÚencodingrZ   rC   ÚwTF)ÚopenÚcsvÚreaderÚlistÚlenÚextendÚwriterÚ	writerows)Úcsv_pathÚadditional_dataÚfr—   Úrowsr›   s         r   Úappend_to_last_rowr¡     s@  € å	ˆh ¨WÐ	5Ñ	5Ô	5ð ¸Ý”˜A‘”ˆÝ�F‰|Œ|ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ˆ4�y„y�1‚}€}àˆRŒ�Š˜Ñ(Ô(Ð(õ �(˜C¨°gÐ>Ñ>Ô>ð 	#À!Ý”Z ‘]”]ˆFØ×Ò˜TÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð ˆtØˆ5s#   “$AÁAÁ
AÂ*CÃC	ÃC	)Dzalbert-base-v1zalbert-base-v2zalbert-large-v1zalbert-large-v2zalbert-xlarge-v1zalbert-xlarge-v2zalbert-xxlarge-v1zalbert-xxlarge-v2zbert-base-cased-finetuned-mrpczbert-base-casedzbert-base-chinesezbert-base-german-casedzbert-base-german-dbmdz-casedzbert-base-german-dbmdz-uncasedzbert-base-multilingual-casedzbert-base-multilingual-uncasedzbert-base-uncasedz3bert-large-cased-whole-word-masking-finetuned-squadz#bert-large-cased-whole-word-maskingzbert-large-casedz5bert-large-uncased-whole-word-masking-finetuned-squadz%bert-large-uncased-whole-word-maskingzbert-large-uncasedzcamembert-baseÚctrlz%distilbert-base-cased-distilled-squadzdistilbert-base-casedzdistilbert-base-german-casedz"distilbert-base-multilingual-casedz'distilbert-base-uncased-distilled-squadz/distilbert-base-uncased-finetuned-sst-2-englishzdistilbert-base-uncasedÚ
distilgpt2zdistilroberta-basez
gpt2-largezgpt2-mediumzgpt2-xlÚgpt2z
openai-gptzroberta-base-openai-detectorzroberta-basezroberta-large-mnlizroberta-large-openai-detectorzroberta-largezt5-11bzt5-3bzt5-basezt5-largezt5-smallztransfo-xl-wt103zxlm-clm-ende-1024zxlm-clm-enfr-1024zxlm-mlm-100-1280zxlm-mlm-17-1280zxlm-mlm-en-2048zxlm-mlm-ende-1024zxlm-mlm-enfr-1024zxlm-mlm-enro-1024zxlm-mlm-tlm-xnli15-1024zxlm-mlm-xnli15-1024zxlm-roberta-basez)xlm-roberta-large-finetuned-conll02-dutchz+xlm-roberta-large-finetuned-conll02-spanishz+xlm-roberta-large-finetuned-conll03-englishz*xlm-roberta-large-finetuned-conll03-germanzxlm-roberta-largezxlnet-base-casedzxlnet-large-cased)r	   r
   )r   r   r	   r
   )
r<   r   r=   r   r>   r?   r@   r
   r	   rA   )rX   r
   r	   r.   )N)rp   r
   rq   rr   rj   rs   rk   rr   rl   rr   rm   rt   rn   rr   ro   rs   r	   r.   )Ú
__future__r   r–   r*   rb   r‰   rz   r^   Úcollections.abcr   Ú
contextlibr   Úinspectr   Útypingr   Útorchr   Ú	getLoggerr   rQ   r   r;   rW   ri   r€   r‡   ÚCRITICALr�   r¡   ÚORIGINAL_TRANSFORMER_MODELSr   r   r   ú<module>r®      sÈ  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  àð ØÐÐÐÐÐà	ˆÔ	˜8Ñ	$Ô	$€ð'ð 'ð 'ð 'ð8ð ð ð ð8(ð (ð (ð (ðV$ð $ð $ð $ðR &*ðZ)ð $ØØ $Ø#Ø#Ø"ðZ)ð Z)ð Z)ð Z)ð Z)ð Z)ðz ðð ñ „ðð" Ø")Ô"2ð (ð (ð (ñ „ð(ð"ð ð ð(Eð Eð EÐ Ð Ð r   