
    YhI                     f    d dl mZ d dlmZmZmZmZ ddlmZm	Z	 ddl
mZmZ  G d de	          ZdS )	    )Path)AnyCallableOptionalUnion   )default_loaderImageFolder)download_and_extract_archiveverify_str_argc                        e Zd ZdZdZdZddddefdeee	f         ded	e
e         d
e
e         dedeegef         ddf fdZdefdZddZ xZS )
Country211aF  `The Country211 Data Set <https://github.com/openai/CLIP/blob/main/data/country211.md>`_ from OpenAI.

    This dataset was built by filtering the images from the YFCC100m dataset
    that have GPS coordinate corresponding to a ISO-3166 country code. The
    dataset is balanced by sampling 150 train images, 50 validation images, and
    100 test images for each country.

    Args:
        root (str or ``pathlib.Path``): Root directory of the dataset.
        split (string, optional): The dataset split, supports ``"train"`` (default), ``"valid"`` and ``"test"``.
        transform (callable, optional): A function/transform that takes in a PIL image or torch.Tensor, depends on the given loader,
            and returns a transformed version. E.g, ``transforms.RandomCrop``
        target_transform (callable, optional): A function/transform that takes in the target and transforms it.
        download (bool, optional): If True, downloads the dataset from the internet and puts it into
            ``root/country211/``. If dataset is already downloaded, it is not downloaded again.
        loader (callable, optional): A function to load an image given its path.
            By default, it uses PIL as its image loader, but users could also pass in
            ``torchvision.io.decode_image`` for decoding image data into tensors directly.
    z;https://openaipublic.azureedge.net/clip/data/country211.tgz 84988d7644798601126c29e9877aab6atrainNFrootsplit	transformtarget_transformdownloadloaderreturnc                    t          |dd          | _        t          |                                          }t	          |          | _        |dz  | _        |r|                                  |                                 st          d          t                                          t	          | j        | j        z            |||           t	          |          | _        d S )Nr   )r   validtest
country211z;Dataset not found. You can use download=True to download it)r   r   r   )r   _splitr   
expanduserstrr   _base_folder	_download_check_existsRuntimeErrorsuper__init__)selfr   r   r   r   r   r   	__class__s          q/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/torchvision/datasets/country211.pyr$   zCountry211.__init__    s     %UG5OPPDzz$$&&II	 </ 	NN!!## 	^\]]]!DK/00-	 	 	
 	
 	
 II			    c                 f    | j                                         o| j                                         S )N)r   existsis_dirr%   s    r'   r!   zCountry211._check_exists=   s+     ''))Hd.?.F.F.H.HHr(   c                 t    |                                  rd S t          | j        | j        | j                   d S )N)download_rootmd5)r!   r   _URLr   _MD5r,   s    r'   r    zCountry211._download@   s<     	F$TYdiTYWWWWWWr(   )r   N)__name__
__module____qualname____doc__r0   r1   r	   r   r   r   r   r   boolr   r$   r!   r    __classcell__)r&   s   @r'   r   r      s        ( ID-D
 (,/3'5 CI  H%	
 #8,  #$ 
     :It I I I IX X X X X X X Xr(   r   N)pathlibr   typingr   r   r   r   folderr	   r
   utilsr   r   r    r(   r'   <module>r=      s          1 1 1 1 1 1 1 1 1 1 1 1 / / / / / / / / ? ? ? ? ? ? ? ?;X ;X ;X ;X ;X ;X ;X ;X ;X ;Xr(   