
    rhS	                    8    d Z ddlmZ ddlZddlZ G d d      Zy)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                      e Zd Zd Zd Zd Zy)NoDuplicatesDataLoaderc                z    || _         d| _        d| _        || _        t	        j
                  | j                         y)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      /var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.py__init__zNoDuplicatesDataLoader.__init__   s4    
 %,t**+    c              #  t  K   t        | j                               D ]  }g }t               }t        |      | j                  k  rN| j
                  | j                     }d}|j                  D ]A  }t        |t              st        |      }|j                         j                         |v s?d} n |rj|j                  |       |j                  D ]J  }t        |t              st        |      }|j                  |j                         j                                L | xj                  dz  c_        | j                  t        | j
                        k\  r&d| _        t        j                  | j
                         t        |      | j                  k  rN| j                   | j!                  |      n|  y w)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__zNoDuplicatesDataLoader.__iter__   sh    t||~& 	SAE UNe*t.--d.?.?@ $#MM D%dC0"4yzz|))+~=(- !LL) ' A)$4#&t9D&**4::<+=+=+?@A
 !!Q&!$$D,?,?(@@()D%NN4#6#67+ e*t.. -1OO,G$//%(UR7	Ss   B(F8+C&F8%F8c                l    t        j                  t        | j                        | j                  z        S )N)mathfloorr   r
   r   )r   s    r   r   zNoDuplicatesDataLoader.__len__;   s%    zz#d112T__DEEr   N)__name__
__module____qualname__r   r$   r    r   r   r   r      s    	,S<Fr   r   )__doc__
__future__r   r&   r   r   r+   r   r   <module>r.      s!    #  +F +Fr   