U
    -eG                     @   st   d dl Z d dlZd dlZd dlmZ d dlmZmZmZmZ ddl	m
Z
 edddZed	d
G dd de jZdS )    N)	dataclass)ClassVarDictTypeTypeVar   )FeaturesTTaskTemplate)boundT)frozenc                   @   s   e Zd ZU eed< ee ed< ee ed< eeedddZe	eddd	Z
e	ejeeef dd
dZeee eedddZdS )r
   taskinput_schemalabel_schema)selffeaturesreturnc                 C   s
   t | S )z8
        Align features with the task template.
        )copydeepcopy)r   r    r   T/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/datasets/tasks/base.pyalign_with_features   s    z TaskTemplate.align_with_features)r   c                 C   s   t f | j| jS N)r   r   r   r   r   r   r   r      s    zTaskTemplate.featuresc                 C   s   t d S r   )NotImplementedErrorr   r   r   r   column_mapping   s    zTaskTemplate.column_mapping)clstemplate_dictr   c                    s0   dd t | D  | f  fdd| D S )Nc                 S   s   h | ]
}|j qS r   )name).0fr   r   r   	<setcomp>&   s     z)TaskTemplate.from_dict.<locals>.<setcomp>c                    s   i | ]\}}| kr||qS r   r   )r   kvfield_namesr   r   
<dictcomp>'   s       z*TaskTemplate.from_dict.<locals>.<dictcomp>)dataclassesfieldsitems)r   r   r   r$   r   	from_dict$   s    zTaskTemplate.from_dictN)__name__
__module____qualname__str__annotations__r   r   r	   r   propertyr   abcabstractmethodr   r   classmethodr   dictr*   r   r   r   r   r
      s   
)r1   r   r'   r   typingr   r   r   r   r   r   r	   ABCr
   r   r   r   r   <module>   s   