
    ChS	                    8    S r SSKJr  SSKrSSKr " S S5      rg)a@  
This file contains deprecated code that can only be used with the old `model.fit`-style Sentence Transformers v2.X training.
It exists for backwards compatibility with the `model.old_fit` method, but will be removed in a future version.

Nowadays, with Sentence Transformers v3+, it is recommended to use the `SentenceTransformerTrainer` class to train models.
See https://www.sbert.net/docs/sentence_transformer/training_overview.html for more information.

In particular, you can pass "no_duplicates" to `batch_sampler` in the `SentenceTransformerTrainingArguments` class.
    )annotationsNc                  &    \ rS rSrS rS rS rSrg)NoDuplicatesDataLoader   c                x    X l         SU l        SU l        Xl        [        R
                  " U R                  5        g)z
A special data loader to be used with MultipleNegativesRankingLoss.
The data loader ensures that there are no duplicate sentences within the same batch
r   N)
batch_sizedata_pointer
collate_fntrain_examplesrandomshuffle)selfr   r   s      m/var/www/html/shao/venv/lib/python3.13/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.py__init__NoDuplicatesDataLoader.__init__   s0    
 %,t**+    c              #    #    [        U R                  5       5       GH  n/ n[        5       n[        U5      U R                  :  Gag  U R
                  U R                     nSnUR                   HI  n[        U[        5      (       d  [        U5      nUR                  5       R                  5       U;   d  MG  Sn  O   U(       aq  UR                  U5        UR                   HP  n[        U[        5      (       d  [        U5      nUR                  UR                  5       R                  5       5        MR     U =R                  S-  sl        U R                  [        U R
                  5      :  a'  SU l        [        R                  " U R
                  5        [        U5      U R                  :  a  GMg  U R                   b  U R!                  U5      OUv   GM     g 7f)NTF   r   )range__len__setlenr   r   r	   texts
isinstancestrstriplowerappendaddr   r   r
   )r   _batchtexts_in_batchexamplevalid_exampletexts          r   __iter__NoDuplicatesDataLoader.__iter__   sZ    t||~&AE UNe*t.--d.?.?@ $#MMD%dC00"4yzz|))+~=(- * !LL) ')$44#&t9D&**4::<+=+=+?@ !.
 !!Q&!$$D,?,?(@@()D%NN4#6#67+ e*t.. -1OO,G$//%(UR7 's   B.G4C6G-(Gc                n    [         R                  " [        U R                  5      U R                  -  5      $ )N)mathfloorr   r   r   )r   s    r   r   NoDuplicatesDataLoader.__len__;   s%    zz#d112T__DEEr   )r   r
   r	   r   N)__name__
__module____qualname____firstlineno__r   r&   r   __static_attributes__ r   r   r   r      s    	,S<Fr   r   )__doc__
__future__r   r)   r   r   r1   r   r   <module>r4      s!    #  +F +Fr   