
    Ng0
                         d Z ddlZddlZddlmZ ddlZddlmZ ddl	m
Z
 	 ddlZn# e$ rZ ed           edZ[ww xY wddlmZ ddlmZ dd
Z G d de          ZdS )zd Dataset reader that wraps Hugging Face datasets

Hacked together by / Copyright 2022 Ross Wightman
    N)Optional)ImagezDPlease install Hugging Face datasets package `pip install datasets`.   )load_class_map)Readerlabelc                 ^    d| j         vri S | j         |         fdj        D             }|S )Nr   c                 <    i | ]}|                     |          S  )str2int).0nclass_labels     Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/data/readers/reader_hfds.py
<dictcomp>z$get_class_labels.<locals>.<dictcomp>   s)    III!A{**1--III    )featuresnames)info	label_keyclass_to_idxr   s      @r   get_class_labelsr      sC    dm##	-	*KIIII{7HIIILr   c                   j     e Zd Z	 	 	 	 	 	 ddedee         ded	ed
ededef fdZd Zd Z	ddZ
 xZS )
ReaderHfdsNtrainimager   Fnamerootsplit	class_map	input_key
target_keydownloadc                    t                                                       || _        || _        t	          j        ||| j                  | _        | j                            |t	          j        d                    | _        || _	        || _
        d| _        |rt          |          | _        d| _        n$t          | j        j        | j
                  | _        | j        j        j        |         | _        | j        j        | _        dS )z	
        )r   	cache_dirF)decodeTN)super__init__r   r   datasetsload_datasetdatasetcast_columnr   	image_keyr   remap_classr   r   r   r   splits
split_infonum_examplesnum_samples)	selfr   r   r   r    r!   r"   r#   	__class__s	           r   r(   zReaderHfds.__init__    s     		
,i
 
 
 |//	8>QV;W;W;WXX"#  	T .y 9 9D#D 01BDN S SD,+259?7r   c                    | j         |         }|| j                 }d|v r#|d         rt          j        |d                   }n$d|v r|d         sJ t	          |d         d          }|| j                 }| j        r| j        |         }||fS )Nbytespathrb)r+   r-   ioBytesIOopenr   r.   r   )r3   indexitemr   r   s        r   __getitem__zReaderHfds.__getitem__B   s    |E"T^$egJuW~..EEU??uV}???v--ET^$ 	-%e,Ee|r   c                 *    t          | j                  S )N)lenr+   )r3   s    r   __len__zReaderHfds.__len__O   s    4<   r   c                 B    | j         |         }|| j                 d         S )Nr7   )r+   r-   )r3   r<   basenameabsoluter=   s        r   	_filenamezReaderHfds._filenameR   s     |E"DN#F++r   )Nr   Nr   r   F)FF)__name__
__module____qualname__strr   dictboolr(   r>   rA   rE   __classcell__)r4   s   @r   r   r      s        
 #' "$%" 8  8 8 3- 8 	 8
  8  8  8  8  8  8  8  8  8D  ! ! !, , , , , , , ,r   r   )r   )__doc__r9   mathtypingr   torchtorch.distributeddistributeddistPILr   r)   ImportErroreprintr    r   readerr   r   r   r   r   r   <module>rY      s    
			                          OOOO   	E
PQQQ
G & % % % % %         6, 6, 6, 6, 6, 6, 6, 6, 6, 6,s   ' >9>