a
    d	                  
   @   s   d Z ddlZddlZddlZddlmZ ddlmZ zddl	Z	W n4 e
yt Z zed ed W Y dZ[n
dZ[0 0 ddlmZ ddlmZ dd	d
ZG dd deZdS )zd Dataset reader that wraps Hugging Face datasets

Hacked together by / Copyright 2022 Ross Wightman
    N)ImagezDPlease install Hugging Face datasets package `pip install datasets`.   )load_class_map)Readerlabelc                    s0   d| j vri S | j |   fdd jD }|S )Nr   c                    s   i | ]}|  |qS  )Zstr2int).0nZclass_labelr   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/data/readers/reader_hfds.py
<dictcomp>       z$get_class_labels.<locals>.<dictcomp>)featuresnames)info	label_keyclass_to_idxr   r
   r   get_class_labels   s
    

r   c                       s8   e Zd Zd fdd	Zdd Zd	d
 ZdddZ  ZS )
ReaderHfdstrainNr   Fc                    s   t    || _|| _tj||| jd| _| jdtjdd| _|| _	d| _
|rdt|| _d| _
nt| jj| j	| _| jjj| | _| jj| _dS )z	
        )split	cache_dirimageF)decodeTN)super__init__rootr   datasetsZload_datasetdatasetZcast_columnr   r   remap_classr   r   r   r   splitsZ
split_infoZnum_examplesZnum_samples)selfr   namer   	class_mapr   download	__class__r   r   r      s"    

zReaderHfds.__init__c                 C   sv   | j | }|d }d|v r2|d r2t|d }n"d|v rB|d sFJ t|d d}|| j }| jrn| j| }||fS )Nr   bytespathrb)r   ioBytesIOopenr   r   r   )r!   indexitemr   r   r   r   r   __getitem__>   s    


zReaderHfds.__getitem__c                 C   s
   t | jS )N)lenr   )r!   r   r   r   __len__K   s    zReaderHfds.__len__c                 C   s   | j | }|d d S )Nr   r(   )r   )r!   r-   basenameabsoluter.   r   r   r   	_filenameN   s    
zReaderHfds._filename)r   Nr   F)FF)__name__
__module____qualname__r   r/   r1   r4   __classcell__r   r   r%   r   r      s        r   )r   )__doc__r*   mathZtorchZtorch.distributedZdistributeddistZPILr   r   ImportErroreprintexitr#   r   readerr   r   r   r   r   r   r   <module>   s   
