
    j                     ^    d dl Z d dlmZmZ d dlmZ ddlmZ  G d dej                        Z	y)    N)ListOptional)dataset_item   )base_dataset_samplerc            	       r    e Zd Z	 d	dededee   ddfdZdeej                     deej                     fdZ
y)
RandomDatasetSamplerNmax_samplesshuffleseedreturnc                 .    || _         || _        || _        y)a  Samples a random subset of dataset items.

        This class is a dataset sampler that selects a random subset of items from a dataset.
        The number of items to sample can be specified, and shuffling can be enabled or disabled.
        An optional random seed can be provided for reproducibility.

        Args:
            max_samples: The maximum number of samples to generate.
            shuffle: Whether to shuffle the samples. Default is True, False provides a speedup
                for large datasets.
            seed: Seed for the random number generator. If None, then fresh, unpredictable
                entropy will be pulled from the OS.
        N)r
   r   r   )selfr
   r   r   s       /Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/evaluation/samplers/random_dataset_sampler.py__init__zRandomDatasetSampler.__init__
   s      '	    
data_itemsc                     t        |      dk(  rg S t        j                  | j                        }t	        t        |      | j
                        }|j                  ||      }| j                  r|j                  |       |S )Nr   )lenrandomRandomr   minr
   sampler   )r   r   rngsample_sizeitemss        r   r   zRandomDatasetSampler.sample   sk     z?aI mmDII& #j/4+;+;< 

:{3<<KKr   )TN)__name__
__module____qualname__intboolr   r   r   r   DatasetItemr    r   r   r	   r	   	   sY    LP)-<DSM	(|778	l&&	'r   r	   )
r   typingr   r   opik.api_objects.datasetr    r   BaseDatasetSamplerr	   r#   r   r   <module>r(      s$     ! 1 "'/BB 'r   