o
    piu                     @   sF   d dl Z d dlmZmZ d dlmZ d dlmZ G dd deeZdS )    N)ABCabstractmethod)Image)Datasetc                   @   sN   e Zd Z				dddZedd Zedd	 Zd
d Zdd Zdd Z	dS )BaseDataset
train+testNFc                 C   s   || _ |r&tj| j stj| j dd |   nt| j g kr%|   ntj| j s1td|| _|| _	|| 
 vrItdd| 
  || _|   d S )NF)exist_okz]The given path does not exist. You should probably initialize the dataset with download=True.zSupported splits are: z, )rootospathisdirmakedirsdownload_and_removelistdir
ValueError	transformtarget_transformget_available_splitsjoinsplitgenerate_split)selfr	   r   r   r   download r   a/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/datasets/base_dataset.py__init__
   s(   
zBaseDataset.__init__c                   C      t NNotImplementedErrorr   r   r   r   r   /      zBaseDataset.generate_splitc                   C   r   r   r   r   r   r   r   r   3   r    zBaseDataset.download_and_removec                 C   s   g dS )N)traintestr   r   r   r   r   r   r   7   s   z BaseDataset.get_available_splitsc                 C   s
   t | jS r   )lenlabelsr#   r   r   r   __len__:   s   
zBaseDataset.__len__c                 C   sJ   t | j| }| j| }| jd ur| |}| jd ur!| |}||fS r   )r   openpathsr%   r   r   )r   idximglabelr   r   r   __getitem__=   s   




zBaseDataset.__getitem__)r   NNF)
__name__
__module____qualname__r   r   r   r   r   r&   r,   r   r   r   r   r      s    
%

r   )	r
   abcr   r   PILr   torch.utils.datar   r   r   r   r   r   <module>   s
    