o
    5ti	                     @   s>   d dl mZmZ G dd deZd	ddZG dd deZdS )
    )Datasetget_dataset_split_namesc                   @   s:   e Zd ZdZdedefddZdd Zdd	 Zd
d Z	dS )DatasetColumnzMHelper class to avoid loading a dataset column into memory when accessing it.datasetkeyc                 C   s   || _ || _d S Nr   r   )selfr   r    r
   L/home/ubuntu/.local/lib/python3.10/site-packages/evaluate/evaluator/utils.py__init__   s   
zDatasetColumn.__init__c                 C   
   t | jS r   lenr   r	   r
   r
   r   __len__      
zDatasetColumn.__len__c                 C   s   | j | | j S r   r   r	   ir
   r
   r   __getitem__   s   zDatasetColumn.__getitem__c                        fddt t D S )Nc                 3   s     | ]} j |  j V  qd S r   r   .0r   r   r
   r   	<genexpr>   s    z)DatasetColumn.__iter__.<locals>.<genexpr>ranger   r   r
   r   r   __iter__   s   zDatasetColumn.__iter__N
__name__
__module____qualname____doc__r   strr   r   r   r   r
   r
   r
   r   r      s    r   Nc                 C   s4   t | |}g d}|D ]
}||v r|  S qtd)N)
testtestingeval
evaluation
validationvalvaliddevtraintrainingzFNo dataset split defined! Pass an explicit value to the `split` kwarg.)r   
ValueError)datasubsetavailable_splitspreferred_split_ordersplitr
   r
   r   choose_split   s   
r3   c                
   @   sF   e Zd ZdZdededededef
ddZd	d
 Zdd Zdd Z	dS )DatasetColumnPairzPHelper class to avoid loading two dataset columns into memory when accessing it.r   	first_col
second_col	first_key
second_keyc                 C   s"   || _ || _|| _|| _|| _dS )a  
        Args:
            dataset (Dataset): dataset to build an iterator on
            first_col (str): first column name to use in the dataset
            second_col (str): second column name to use in the dataset
            first_key (str): key name used for the first column in the returned dictionary
            second_key (str): key name used for the second column in the returned dictionary
        N)r   r5   r6   r7   r8   )r	   r   r5   r6   r7   r8   r
   r
   r   r   ,   s
   
zDatasetColumnPair.__init__c                 C   r   r   r   r   r
   r
   r   r   D   r   zDatasetColumnPair.__len__c                 C   s4   | j | j| | j | j| jr| j| | j iS d iS r   r7   r   r5   r8   r6   r   r
   r
   r   r   G   s
   zDatasetColumnPair.__getitem__c                    r   )Nc                 3   sB    | ]} j  j|  j  j jr j|  j nd iV  qd S r   r9   r   r   r
   r   r   N   s    
z-DatasetColumnPair.__iter__.<locals>.<genexpr>r   r   r
   r   r   r   M   s   

zDatasetColumnPair.__iter__Nr   r
   r
   r
   r   r4   )   s     
r4   r   )datasetsr   r   listr   r3   r4   r
   r
   r
   r   <module>   s    
