
    ,}hA                     Z    d dl Z d dlmZ d dlmZmZmZ ddlmZ ddl	m
Z
  G d de      Zy)	    N)Path)CallableOptionalUnion   )ImageFolder)download_and_extract_archivec                   v     e Zd ZdZ	 	 	 ddeeef   dee   dee   de	ddf
 fdZ
defd	Zde	fd
ZddZ xZS )EuroSATa  RGB version of the `EuroSAT <https://github.com/phelber/eurosat>`_ Dataset.

    Args:
        root (str or ``pathlib.Path``): Root directory of dataset where ``root/eurosat`` exists.
        transform (callable, optional): A function/transform that takes in a PIL image
            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 in root directory. If dataset is already downloaded, it is not
            downloaded again. Default is False.
    Nroot	transformtarget_transformdownloadreturnc                    t         j                  j                  |      | _        t         j                  j	                  | j                  d      | _        t         j                  j	                  | j
                  d      | _        |r| j                          | j                         st        d      t        | -  | j                  ||       t         j                  j                  |      | _        y )Neurosat2750z;Dataset not found. You can use download=True to download it)r   r   )ospath
expanduserr   join_base_folder_data_folderr   _check_existsRuntimeErrorsuper__init__)selfr   r   r   r   	__class__s        [/var/www/html/test/engine/venv/lib/python3.12/site-packages/torchvision/datasets/eurosat.pyr   zEuroSAT.__init__   s     GG&&t,	GGLLI>GGLL):):FCMMO!!#\]]**iRbcGG&&t,	    c                 ,    t        | j                        S N)lensamplesr   s    r    __len__zEuroSAT.__len__+   s    4<<  r!   c                 T    t         j                  j                  | j                        S r#   )r   r   existsr   r&   s    r    r   zEuroSAT._check_exists.   s    ww~~d//00r!   c                     | j                         ry t        j                  | j                  d       t	        d| j                  d       y )NT)exist_okz/https://madm.dfki.de/files/sentinel/EuroSAT.zip c8fa014336c82ac7804f0398fcb19387)download_rootmd5)r   r   makedirsr   r	   r&   s    r    r   zEuroSAT.download1   s<    
D%%5$=++2	
r!   )NNF)r   N)__name__
__module____qualname____doc__r   strr   r   r   boolr   intr'   r   r   __classcell__)r   s   @r    r   r   	   sx      )-/3-CI- H%- #8,	-
 - 
-(! !1t 1

r!   r   )r   pathlibr   typingr   r   r   folderr   utilsr	   r    r!   r    <module>r=      s#    	  , ,  /2
k 2
r!   