ó
    Eñi†  ã                   óz   • S SK Jr  S SKJr  S SKJrJrJrJr  S SK	J
r
  SSKJrJrJrJr  SSKJr   " S S	\5      rg
)é    )Újoin)ÚPath)ÚAnyÚCallableÚOptionalÚUnion)ÚImageé   )Úcheck_integrityÚdownload_and_extract_archiveÚlist_dirÚ
list_files)ÚVisionDatasetc                   óî   ^ • \ rS rSrSrSrSrSSS.r     SS	\\	\
4   S
\S\\   S\\   S\S\\\\	\
4   /\4      SS4U 4S jjjrS\4S jrS\S\\\4   4S jrS\4S jrSS jrS\	4S jrSrU =r$ )ÚOmnigloté   aB  `Omniglot <https://github.com/brendenlake/omniglot>`_ Dataset.

Args:
    root (str or ``pathlib.Path``): Root directory of dataset where directory
        ``omniglot-py`` exists.
    background (bool, optional): If True, creates dataset from the "background" set, otherwise
        creates from the "evaluation" set. This terminology is defined by the authors.
    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 zip files from the internet and
        puts it in root directory. If the zip files are already downloaded, they are 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omniglot-pyzDhttps://raw.githubusercontent.com/brendenlake/omniglot/master/pythonÚ 68d2efa1b9178cc56df9314c21c6e718Ú 6b91aef0f799c5bb55b94e3f2daec811)Úimages_backgroundÚimages_evaluationNÚrootÚ
backgroundÚ	transformÚtarget_transformÚdownloadÚloaderÚreturnc                 ó¶  >^ • [         T
T ]  [        UT R                  5      X4S9  UT l        U(       a  T R                  5         T R                  5       (       d  [        S5      e[        T R                  T R                  5       5      T l
        [        T R                  5      T l        [        U 4S jT R                   5       / 5      T l        [        T R                  5       VVV	s/ s H7  u  px[!        [        T R                  U5      S5       V	s/ s H  o™U4PM     sn	PM9     sn	nnT l        [        T R"                  / 5      T l        UT l        g s  sn	f s  sn	nnf )N)r   r   zHDataset not found or corrupted. You can use download=True to download itc              3   ó    >#   • U  H>  n[        [        TR                  U5      5       Vs/ s H  n[        X5      PM     snv •  M@     g s  snf 7f©N)r   r   Útarget_folder)Ú.0ÚaÚcÚselfs      €ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/datasets/omniglot.pyÚ	<genexpr>Ú$Omniglot.__init__.<locals>.<genexpr>;   s=   øé € ÐbÒRaÈQ¤(¬4°×0BÑ0BÀAÓ+FÔ"GÓHÒ"G˜QŒd�1ŽjÑ"GÖHÒRaùÒHùs   ƒ'AªA	¿Az.png)ÚsuperÚ__init__r   Úfolderr   r   Ú_check_integrityÚRuntimeErrorr   Ú_get_target_folderr!   r   Ú
_alphabetsÚsumÚ_charactersÚ	enumerater   Ú_character_imagesÚ_flat_character_imagesr   )r%   r   r   r   r   r   r   ÚidxÚ	characterÚimageÚ	__class__s   `         €r&   r*   ÚOmniglot.__init__&   s  ù€ ô 	‰Ñœ˜d D§K¡KÓ0¸IÐÑiØ$ˆŒæØ�M‰MŒOà×$Ñ$×&Ñ&ÜÐiÓjÐjä! $§)¡)¨T×-DÑ-DÓ-FÓGˆÔÜ" 4×#5Ñ#5Ó6ˆŒÜ&)ÜbÐRV×RaÒRaÓbÐdfó'
ˆÔô
 #,¨D×,<Ñ,<Ô"=õ"
â"=‘�ô (2´$°t×7IÑ7IÈ9Ó2UÐW]Ô'^Ó_Ò'^˜e�S‹\Ñ'^Ô_Ù"=ó"
ˆÔô >AÀ×AWÑAWÐY[Ó=\ˆÔ#Øˆ�ùò	 `ùô"
s   Ã$*EÄEÄEÅEc                 ó,   • [        U R                  5      $ r    )Úlenr4   ©r%   s    r&   Ú__len__ÚOmniglot.__len__D   s   € Ü�4×.Ñ.Ó/Ð/ó    Úindexc                 ó~  • U R                   U   u  p#[        U R                  U R                  U   U5      nU R                  c$  [
        R                  " USS9R                  S5      OU R	                  U5      nU R                  (       a  U R                  U5      nU R                  (       a  U R                  U5      nXS4$ )zx
Args:
    index (int): Index

Returns:
    tuple: (image, target) where target is index of the target character class.
Úr)ÚmodeÚL)
r4   r   r!   r1   r   r	   ÚopenÚconvertr   r   )r%   r@   Ú
image_nameÚcharacter_classÚ
image_pathr7   s         r&   Ú__getitem__ÚOmniglot.__getitem__G   s¡   € ð '+×&AÑ&AÀ%Ñ&HÑ#ˆ
Ü˜$×,Ñ,¨d×.>Ñ.>¸Ñ.OÐQ[Ó\ˆ
ØAEÇÁÑAT”—
’
˜:¨CÑ0×8Ñ8¸Ô=ÐZ^×ZeÑZeÐfpÓZqˆà�>�>Ø—N‘N 5Ó)ˆEà× × Ø"×3Ñ3°OÓDˆOàÐ%Ð%r?   c                 ó�   • U R                  5       n[        [        U R                  US-   5      U R                  U   5      (       d  gg)Nú.zipFT)r.   r   r   r   Úzips_md5)r%   Úzip_filenames     r&   r,   ÚOmniglot._check_integrity[   s=   € Ø×.Ñ.Ó0ˆÜœt D§I¡I¨|¸fÑ/DÓEÀtÇ}Á}ÐUaÑGb×cÑcØØr?   c                 óÀ   • U R                  5       (       a  g U R                  5       nUS-   nU R                  S-   U-   n[        X0R                  X R
                  U   S9  g )NrM   Ú/)ÚfilenameÚmd5)r,   r.   Údownload_url_prefixr   r   rN   )r%   rS   rO   Úurls       r&   r   ÚOmniglot.downloada   s[   € Ø× Ñ ×"Ñ"Øà×*Ñ*Ó,ˆØ &Ñ(ˆØ×&Ñ&¨Ñ,¨|Ñ;ˆÜ$ S¯)©)¸l×P]ÑP]Ð^fÑPgÓhr?   c                 ó,   • U R                   (       a  S$ S$ )Nr   r   )r   r<   s    r&   r.   ÚOmniglot._get_target_folderj   s   € Ø&*§o§oÐ"ÐNÐ;NÐNr?   )r/   r3   r1   r4   r   r   r!   )TNNFN)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   rU   rN   r   Ústrr   Úboolr   r   r   r*   Úintr=   ÚtuplerJ   r,   r   r.   Ú__static_attributes__Ú__classcell__)r8   s   @r&   r   r      sü   ø† ñð& €FØ`Ðà?Ø?ñ€Hð  Ø(,Ø/3ØØ>Bñà�C˜�IÑðð ðð ˜HÑ%ð	ð
 # 8Ñ,ðð ðð ˜ 5¨¨d¨Ñ#3Ð"4°cÐ"9Ñ:Ñ;ðð 
÷ð ð<0˜ô 0ð& ð &¨¨s°C¨x©ô &ð( $ô ôiðO C÷ Oò Or?   r   N)Úos.pathr   Úpathlibr   Útypingr   r   r   r   ÚPILr	   Úutilsr   r   r   r   Úvisionr   r   © r?   r&   Ú<module>rl      s-   ðÝ Ý ß 1Ó 1å ç VÓ VÝ !ô`Oˆ}õ `Or?   