o
    پiW	                     @   sL   d dl mZmZ d dlmZmZmZmZ G dd deZG dd deZ	dS )    )ABCabstractmethod)DictListOptionalUnionc                   @   s   e Zd Zdd Zedd Zedd Zedded	ed
ee	e
 ee
e
f f fddZed
e
fddZeddeded
e
fddZedde
ded
e
fddZdS )DatasetInfoc                 C      d S N selfr   r   J/home/ubuntu/.local/lib/python3.10/site-packages/timm/data/dataset_info.py__init__   s   zDatasetInfo.__init__c                 C   r	   r
   r   r   r   r   r   num_classes
      zDatasetInfo.num_classesc                 C   r	   r
   r   r   r   r   r   label_names   r   zDatasetInfo.label_namesFdetailedas_dictreturnc                 C   r	   r
   r   r   r   r   r   r   r   label_descriptions   r   zDatasetInfo.label_descriptionsc                 C   r	   r
   r   r   indexr   r   r   index_to_label_name   r   zDatasetInfo.index_to_label_namer   c                 C   r	   r
   r   )r   r   r   r   r   r   index_to_description   r   z DatasetInfo.index_to_descriptionlabelc                 C   r	   r
   r   r   r   r   r   r   r   label_name_to_description   r   z%DatasetInfo.label_name_to_descriptionNFFF)__name__
__module____qualname__r   r   r   r   boolr   r   strr   r   r   intr   r   r   r   r   r   r      s    

.r   c                       s   e Zd ZdZ	ddeee eeef f de	eeef  f fddZ
dd Zd	d
 Zddededeee eeef f fddZddededefddZdefddZddededefddZ  ZS )CustomDatasetInfoz: DatasetInfo that wraps passed values for custom datasets.Nr   r   c                    sb   t    t|dksJ || _|| _| jd ur-t| jts J | jD ]}|| jv s,J q#d S d S Nr   )superr   len_label_names_label_descriptions
isinstancedict)r   r   r   n	__class__r   r   r   &   s   


zCustomDatasetInfo.__init__c                 C   s
   t | jS r
   r*   r+   r   r   r   r   r   5   s   
zCustomDatasetInfo.num_classesc                 C      | j S r
   )r+   r   r   r   r   r   8      zCustomDatasetInfo.label_namesFr   r   r   c                 C   r3   r
   r,   r   r   r   r   r   ;   r4   z$CustomDatasetInfo.label_descriptionsr   c                 C   s   | j r| j | S |S r
   r5   r   r   r   r   r   >   s   
z+CustomDatasetInfo.label_name_to_descriptionc                 C   s,   d|  krt | jk sJ  J | j| S r(   r2   r   r   r   r   r   C   s   "
z%CustomDatasetInfo.index_to_label_namer   c                 C   s   |  |}| j||dS )N)r   )r   r   )r   r   r   r   r   r   r   r   G   s   
z&CustomDatasetInfo.index_to_descriptionr
   r   r    )r!   r"   r#   __doc__r   r   r%   r   r&   r   r   r   r   r$   r   r   r   r   __classcell__r   r   r0   r   r'   #   s    , r'   N)
abcr   r   typingr   r   r   r   r   r'   r   r   r   r   <module>   s    